996
|
1 ChangeLog
|
|
2 =========
|
|
3 This is a overview of changes users may care about. Detailed changelog can be
|
|
4 done using bzr (does not work in tarballs, you need a development checkout for this):
|
|
5 bzr log -rtag:tag.. --short
|
|
6 Example (list changes compared to 0.1.0)
|
|
7 bzr log -rtag:0.1.0.. --short
|
|
8 For more info:
|
|
9 bzr help log
|
|
10 and
|
|
11 bzr help revisionspec
|
|
12
|
|
13
|
|
14 0.9.0
|
|
15 -----
|
|
16 This is a bug fix release. The version number changed to 0.9.0 to reflect that
|
|
17 cfunge is now reaching a stable version.
|
|
18 * Bug fix: In a file with CR line endings and lines with leading spaces, the
|
|
19 leading spaces were lost.
|
|
20 * Bug fix: When j was used to jump backwads (negative argument) to a cell
|
|
21 directly on the edge of the current bounding box of the Funge Space, it would
|
|
22 incorrectly wrap. Fix this by peforming the normal moving forward of the IP
|
|
23 before the jump in j instead of after as usual for most other instructions.
|
|
24 * Minor Bug fix: Hypens were incorrectly escaped when generating man pages in
|
|
25 tools/gen_fprint_list.sh. Fix and update man page to reflect.
|
|
26
|
|
27
|
|
28 0.4.1
|
|
29 -----
|
|
30 Major highlights:
|
|
31 * cfunge can now track exact bounds for Funge Space (option at compile time).
|
|
32 * Support for disabling some heavy parts of cfunge to reduce memory usage (see
|
|
33 below for details).
|
|
34 Other important changes since last release:
|
|
35 * For exact bounds: Implement sparse bounds minimising when difference is huge.
|
|
36 * Reworked sysinfo code, now less overhead and more reused results (from time()
|
|
37 and fungespace_get_bounds_rect()).
|
|
38 * Bug fix: y pushed bounds wrong in certain cases.
|
|
39 * Bug fix: Fixed OOM behaviour in cfunge on huge count for stack-stack begin.
|
|
40 * DATE: Make sure constants are long double ones (L suffix). Do more of the
|
|
41 conversion as integer math to reduce rounding errors. Make sure to
|
|
42 always use int_least64_t internally for greatest precision. Add some
|
|
43 missing function attributes.
|
|
44 * TURT and FIXP: Use more exact value of pi than M_PI for long double
|
|
45 calculations.
|
|
46 * Added system for diagnostics output, collected in one place. This should make
|
|
47 the error messages more uniform.
|
|
48 * Added new command line switch (-E) to show non-fatal errors.
|
|
49 * Added the command line switch (-v) to display build info and features in a
|
|
50 compact format.
|
|
51 * Reordered some code in file loading to make sure we don't push uninitialised
|
|
52 size in i when trying to load an empty file.
|
|
53 * Removed unused functions (cf_strndup() and cf_strnlen()).
|
|
54 * Cleaned up includes (removing unused includes in header and source files).
|
|
55 * Avoid malloc() calls in BASE. The max needed size is small and thus we can
|
|
56 safely use a VLA.
|
|
57 * Avoid some malloc() calls for fingerprint opcode stacks when they are empty.
|
|
58 Now the actual stacks are not allocated until they are needed. Also "inline"
|
|
59 the opcode stack metadata into the ip structs to reduce memory overhead.
|
|
60 * Added the file doc/API_CHANGES documenting API changes. Please see that file
|
|
61 for changes in the API.
|
|
62 * Fixed build issue with IFFI.
|
|
63 * Fixed handling of SSE intrinsics and inline asm for ICC in funge-space.c.
|
|
64 * Build system:
|
|
65 * Cleaned up warning flags in CMakeLists.txt.
|
|
66 * Add options to disable some optional features even if needed dependencies
|
|
67 found. Features that can be disabled are: clock_gettime(), ncurses,
|
|
68 fingerprints using floating point, TURT.
|
|
69 * Clean up CMakeLists.txt splitting some stuff out into separate files.
|
|
70
|
|
71
|
|
72 0.4.0
|
|
73 -----
|
|
74 This release add support for some more fingerprints, speed up execution quite
|
|
75 a bit, and fixes several bugs. See details below.
|
|
76
|
|
77 Important changes in this release:
|
|
78 * cfunge now depend on cmake 2.6 (or later).
|
|
79 * cfunge is now quite a bit faster thanks to many parts rewritten in a faster
|
|
80 way. This includes:
|
|
81 * Stack-stack begin/end are faster.
|
|
82 * Pushing strings on stack have been optimised a lot (important for y and
|
|
83 various fingerprints).
|
|
84 * Popping strings from stack pass string length info back to caller to
|
|
85 avoid an extra strlen() call.
|
|
86 * System information (y) faster by avoiding to allocate as much and as
|
|
87 often.
|
|
88 * Optimised N in STRN to avoid popping and pushing the string at all. It
|
|
89 now operates on the stack directly.
|
|
90 * Added a flag (-b) for fully buffered output, this halves the sys time for
|
|
91 mycology and removes about 20% of the wall clock time.
|
|
92 * Some code has been rewritten to allow GCC and ICC (and potentially other
|
|
93 compilers) to auto-vectorise it.
|
|
94 * Avoid reallocing the IP list in concurrent Funge as often.
|
|
95 * Avoid ip_set_delta() in some often used macros for working on IPs.
|
|
96 * Avoid strdup() of argv. We can point to them in the stack instead.
|
|
97 * Avoid building vectors in many places, instead modify existing ones.
|
|
98 * stringbuffer_finish() now returns string length, avoiding unneeded calls
|
|
99 to strlen().
|
|
100 * Annotate some branches as "probably not taken", this includes error paths
|
|
101 for failed malloc() and such.
|
|
102 * When looping over a block of the Funge-Space like:
|
|
103 for (x=0; x<maxx; x++)
|
|
104 for (y=0; y<maxy; y++)
|
|
105 make sure the x-loop is the outermost loop in order to increase locality
|
|
106 of reference in the static Funge-Space area (doesn't matter for the hash
|
|
107 area outside that).
|
|
108 * Use movntps if SSE is supported when space filling the static Funge-Space
|
|
109 at startup in order to reduce cache trashing.
|
|
110 * Optimise Funge-Space loading in various ways.
|
|
111 * And more...
|
|
112 * Various bug fixes in many places.
|
|
113 * FILE: Fixed bug with how R works on EOF.
|
|
114 The current Mycology version (2008–11–15) has a bug and will report
|
|
115 the new behaviour as BAD. Next Mycology version will fix it.
|
|
116 * FRTH: Fixed a crash bug when calling L or P with negative arguments.
|
|
117 * PERL: Fixed a rare memory corruption bug.
|
|
118 * PERL: Fix bug that caused data corruption on long resulting strings.
|
|
119 * PERL: Remove a spurious stack_push() call.
|
|
120 * STRN: Proper error checks for A (append) added.
|
|
121 * Correctly handle form feed in i.
|
|
122 * Handle CR line endings correctly (both initial file load and i).
|
|
123 * Added casts to make the -Wconversion warning in GCC 4.3 useful. Fixed bugs
|
|
124 found thanks to this.
|
|
125 * Fingerprint format has been updated to 1.4 (1.2 still supported since the
|
|
126 new features are a superset of the old ones). 1.3 added support for
|
|
127 conditional compilation (enabling a fingerprint based on #if).
|
|
128 * NCRS and TERM now use of the conditional compilation of fingerprints to make
|
|
129 the dependency on ncurses optional.
|
|
130 * Funge-108 renamed Funge-109 due to time constraints. Update all mentions of
|
|
131 this in cfunge.
|
|
132 * There has been some changes to make cfunge more portable:
|
|
133 * Added some workarounds for OpenBSD (missing AI_ADDRCONFIG, ncurses
|
|
134 redefining bool).
|
|
135 * Made the fuzz testing script more portable.
|
|
136 * If the XSI functions random and srandom aren't available, fall back on
|
|
137 rand and srand.
|
|
138 * For POSIX.1-2008 compatibility use clock_gettime() when available. Fall
|
|
139 back on gettimeofday().
|
|
140 * Added various checks at configuration time to check that needed functions
|
|
141 exist.
|
|
142 * Add the defines CFUNGE_VERSION and CFUNGE_API_VERSION to allow external
|
|
143 fingerprints to easily find which cfunge version is used. Useful since the
|
|
144 cfunge API isn't very stable.
|
|
145 * Important API changes:
|
|
146 * Renamed:
|
|
147 * fungeCell to funge_cell
|
|
148 * fungeUnsignedCell to funge_unsigned_cell
|
|
149 * fungeVector to funge_vector
|
|
150 * Removed:
|
|
151 * ipDelta: Use funge_vector instead.
|
|
152 * Changed:
|
|
153 * stack_pop_string(): Additional out parameter, returns string length if
|
|
154 non-NULL.
|
|
155 * ip_forward(): Steps parameter removed. Will now only take one step
|
|
156 forwards.
|
|
157 * Added:
|
|
158 * ip_backward(): Same as ip_forward() but takes one step backwards.
|
|
159 * Build system cleanup:
|
|
160 * Macros split into separate files in a subdirectory.
|
|
161 * Check if some linker flags are supported.
|
|
162 * Man page have been extended.
|
|
163 * List of fingerprints in man page is now auto generated.
|
|
164
|
|
165 Added fingerprints:
|
|
166 * DATE Date Functions
|
|
167 * NCRS Ncurses Extension
|
|
168
|
|
169
|
|
170 0.3.3
|
|
171 -----
|
|
172 Major highlights:
|
|
173 * Massively faster Funge-Space for the commonly used area. cfunge now uses a
|
|
174 static array for the Funge-Space that most common programs use (a chunk
|
|
175 around 0,0 that is).
|
|
176 * Funge-Space (outside the static area, that is the hash table area) now use
|
|
177 memory pools for allocation. This reduces memory fragmentation and also
|
|
178 malloc bookkeeping overhead. It is also slightly faster.
|
|
179 * Reduced memory usage by fixing an over-allocation in the hash library code.
|
|
180 * Fixed rare crash bug in the shared (between several fingerprints) string
|
|
181 buffer code. Thanks to Heikki Kallasjoki and Alex Smith for reporting this.
|
|
182 * Set FD_CLOEXEC on files and sockets in the fingerprints FILE and SOCK.
|
|
183 This makes it close any sockets and files before invoking programs using
|
|
184 either = or PERL.
|
|
185 * Flush standard output less often, this increases speed in mycology a lot.
|
|
186 * Changed function naming scheme, now using underscore instead of CamelCase.
|
|
187 * Standard IO, i, o, FILE, SOCK and so on now use unsigned char*.
|
|
188 * Minor bug fixes in TIME, STRN, REXP, the build system and various other
|
|
189 places.
|
|
190
|
|
191 Important changes in this release:
|
|
192 * Fixed off by one in TIME.
|
|
193 * Made STRN use the global input buffer.
|
|
194 * Fixed alignment bugs in several of the test programs.
|
|
195 * Handle some cases of failed malloc() better.
|
|
196 * Reduced memory usage by fixing an over-allocation in hash library code.
|
|
197 * Removed some GNU LD specific linker flags to make the code link with other
|
|
198 linkers.
|
|
199 * Changed to use memcpy() to duplicate stack.
|
|
200 * Added missing free() on some error code paths.
|
|
201 * SCKE now use getaddrinfo() instead of the obsolete gethostbyname().
|
|
202 * Changed some often accessed bitfields to full bools.
|
|
203 * Funge-Space now use memory pools for allocation. This reduces memory
|
|
204 fragmentation and also malloc bookkeeping overhead. It is also slightly
|
|
205 faster.
|
|
206 * Added valgrind annotations for the memory pools as a compile time option.
|
|
207 If enabled this slows down the code by several orders of magnitude, but is
|
|
208 useful for debugging.
|
|
209 * Major changes to function names, they now use _ instead of CamelCase.
|
|
210 * Fixed various build system bugs.
|
|
211 * Major speed improvement in mycology, flushing output less often.
|
|
212 * Strings in cfunge are now mostly unsigned.
|
|
213 * Reading a file with i is now unsigned.
|
|
214 * STDIO is now unsigned.
|
|
215 * Removed kdevelop project files.
|
|
216 * Set FD_CLOEXEC on files and sockets in the fingerprints FILE and SOCK. This
|
|
217 makes it close any sockets and files before invoking programs using either =
|
|
218 or PERL.
|
|
219 * Fixed rare crash bug in the shared (between several fingerprints) string
|
|
220 buffer code. Thanks to Heikki Kallasjoki and Alex Smith for reporting this.
|
|
221 * STRN A is now a bit more efficient (still far from perfect).
|
|
222 * Changed order of tests in bound testing code, slight speedup for most
|
|
223 programs.
|
|
224 * Fixed bug in REXP, REG_NOSUB used to cause E to push 128 empty strings, now
|
|
225 it pushes a 0 instead.
|
|
226 * Massively faster Funge-Space for the commonly used area. cfunge now uses a
|
|
227 static array for the Funge-Space that most common programs use (a chunk
|
|
228 around 0,0 that is).
|
|
229
|
|
230
|
|
231 0.3.2
|
|
232 -----
|
|
233 Important changes in this release:
|
|
234 * Fix small bug in K in SOCK causing the instruction to fail if the socket
|
|
235 wasn't connected.
|
|
236 * Add checks for some long double math.h functions that didn't exist on
|
|
237 FreeBSD. Fall back on double versions.
|
|
238 * Support cygwin a bit better.
|
|
239 * Update FING to match updated specs.
|
|
240
|
|
241
|
|
242 0.3.1
|
|
243 -----
|
|
244 Important changes in this release:
|
|
245 * Code now use memcpy() to copy IP for t, then deep copy of the remaining
|
|
246 elements.
|
|
247 * Fixed crash with nested k instructions on t.
|
|
248 * Fixed build system to work with other compilers than GCC (the C code already
|
|
249 did work).
|
|
250 * Fixed a lot of small issues detected with compiler warnings of the other
|
|
251 compilers (like %zu when it should have been %zd in format string).
|
|
252 * Fixed a single precision function call that should have used the double
|
|
253 precision variant in FPDP.
|
|
254 * Fixed off by one error in validation of handles in SOCK and FILE.
|
|
255 * Made tools/fuzz-test.sh work on other systems.
|
|
256 * Made build-man work for out of tree builds.
|
|
257 * When using GC do not use ec (extensible cords). It caused segfault...
|
|
258
|
|
259 Added fingerprints:
|
|
260 * SCKE TCP/IP async socket and dns resolving extension
|
|
261 * SOCK TCP/IP socket extension
|
|
262
|
|
263
|
|
264 0.3.0
|
|
265 -----
|
|
266 Important changes in this release:
|
|
267 * Fixed a few bugs in loading code.
|
|
268 * Added support for showing top 5 elements on the stack when tracing.
|
|
269 * Fixed several bugs in StackPreallocSpace() that resulted in crashes later on.
|
|
270 * Added a man page.
|
|
271 * Imported two new libraries into the code:
|
|
272 genx - An XML output library (used by TURT).
|
|
273 stringbuffer - Some utilities to build strings in an easy way, code was taken
|
|
274 from crossfire.
|
|
275 * Some work on Funge-108 features:
|
|
276 * y now works as it should.
|
|
277 * k handles ; as in Funge-108 (was undef in Funge-98).
|
|
278 * Made & and ~ handle EOF correctly.
|
|
279 * Made several fingerprints use stringbuffer, making their code much simpler.
|
|
280 * New macro StackFreeString() to make handling Boehm-GC quirk easier.
|
|
281 * Update of fingerprint spec format, some preliminary support for Funge-108
|
|
282 style fingerprints.
|
|
283 * New library dependency: due to TERM cfunge now needs ncurses.
|
|
284 * Fixed Form Feed handling.
|
|
285 * Made k on k work.
|
|
286 * Fixed broken k (mycology was wrong about how to interpret it).
|
|
287 * Fixed number of ticks spaces in strings took in concurrent Funge.
|
|
288 * Fixed "jump to next instruction" in Funge-108 in 0k.
|
|
289 * Several Funge-108 fixes in y command.
|
|
290 * Various typo fixes.
|
|
291 * Clean up the mess in loading code by using mmap() to read files.
|
|
292 * Mycology was wrong about "y as pick" behaviour, fixed cfunge to conform to
|
|
293 the standard.
|
|
294 * Refactor Funge-Space loading code.
|
|
295 * Fix bug with setting initial least point at loading.
|
|
296 * Major renaming of types:
|
|
297 * Renamed FUNGEDATATYPE to fungeCell.
|
|
298 * Dropped FUNGEVECTORTYPE (use fungeCell instead).
|
|
299 * Dropped fungePosition (use fungeVector instead).
|
|
300 * FUNGEDATA*PRI for printf renamed to FUNGECELL*PRI.
|
|
301
|
|
302 Added fingerprints:
|
|
303 * 3DSP 3D space manipulation extension
|
|
304 * FING Operate on single fingerprint semantics
|
|
305 * FRTH Some common forth commands
|
|
306 * REXP Regular Expression Matching
|
|
307 * STRN String functions
|
|
308 * TERM Terminal control functions
|
|
309
|
|
310 Changes to fingerprints:
|
|
311 * Fixed many bugs in TURT.
|
|
312 * FILE got extended with the instruction D, added it.
|
|
313 * Removed PNTR, it was a deprecated alias for INDV.
|
|
314 * INDV instructions are now relative storage offset.
|
|
315 * Certain JSTR and STRN instruction are now relative storage offset.
|
|
316
|
|
317 There was no 0.2.1, it got turned into 0.3.0.
|
|
318
|
|
319
|
|
320 0.2.1-pre2
|
|
321 ----------
|
|
322 Important changes in this release:
|
|
323 * Speedup in pushing strings on stack.
|
|
324 * Aliases for fingerprints supported (spec fileformat changed).
|
|
325 * Added doxygen documentation for API exposed to fingerprints.
|
|
326 * To help C-INTERCAL add a FungeSpaceLoadString()
|
|
327
|
|
328 Added fingerprints:
|
|
329 * FILE File I/O functions
|
|
330 * INDV Pointer functions
|
|
331 * JSTR Read and write strings in Funge-Space
|
|
332 * PNTR Alias for INDV
|
|
333 * TIME Time and Date functions
|
|
334 * TURT Simple Turtle Graphics Library
|
|
335
|
|
336
|
|
337 0.2.1-pre1
|
|
338 ----------
|
|
339 Important changes in this release:
|
|
340 * Support for the (optional) i, o and = instructions.
|
|
341 * Internal API was cleaned up to be more consistent with itself.
|
|
342 * Fix some places were cfunge wasn't 100% standard conforming.
|
|
343 (Note that mycology didn't detect these issues.)
|
|
344 * Some fixes for bugs that caused crashes.
|
|
345 * A lot of less serious bugs were fixed.
|
|
346 * Some code were optimised (including the hash library).
|
|
347 * And some added fingerprints.
|
|
348
|
|
349 Added fingerprints:
|
|
350 * CPLI Complex Integer extension
|
|
351 * FIXP Some useful math functions
|
|
352 * FPDP Double precision floating point
|
|
353 * FPSP Single precision floating point
|
|
354 * HRTI High-Resolution Timer Interface
|
|
355 * PERL Generic Interface to the Perl Language (not available in sandbox mode)
|
|
356 * TOYS Funge-98 Standard Toys
|
|
357
|
|
358
|
|
359 0.2.0
|
|
360 -----
|
|
361 This release adds fingerprint support (along with several fingerprints),
|
|
362 concurrency, a lot of bug fixes and implementing missing features.
|
|
363
|
|
364 Added fingerprints:
|
|
365 * BASE I/O for numbers in other bases
|
|
366 * DIRF Directory functions extension (not available in sandbox mode)
|
|
367 * MODU Modulo Arithmetic Extension
|
|
368 * NULL Funge-98 Null Fingerprint
|
|
369 * ORTH Orthogonal Easement Library
|
|
370 * REFC Referenced Cells Extension
|
|
371 * ROMA Funge-98 Roman Numerals
|
|
372 * SUBR Subroutine extension
|
|
373
|
|
374
|
|
375 0.1.0
|
|
376 -----
|
|
377 Initial release. Had basic support for what is required in Befunge98 standard.
|