source: project/chicken/trunk/NEWS @ 7275

Last change on this file since 7275 was 7275, checked in by felix winkelmann, 13 years ago

updated NEWS

File size: 22.4 KB
Line 
12.739
2
3- literals are compiled in a platform-independent binary encoding into
4  the executable which results in faster C compile times and moe compact
5  binaries. This also makes the "compress-literals" option and declaration
6  unnecessary
7- the "-compress-literals" compiler option and the "compress-literals"
8  declaration have been removed
9- the CHICKEN_HOME environment variable is now obsolete, use CHICKEN_PREFIX
10  and possibly CHICKEN_REPOSITORY_PATH
11- added pre GC hook C-level variable
12- Cygwin is now fully supported
13- removed deprecated functions:
14  extension-info
15  print-backtrace
16  test-feature?
17  ___callback (chicken.h)
18  foreign-callback-lambda[*]
19  thread-deliver-signal!
20  critical-section
21  enable-interrupts
22  disable-interrupts
23  invalid-procedure-call-handler
24- There is no platform-dependent pathname directory separator
25  anymore, the slash ("/") and backslash ("\") characters can be
26  used interchangably
27- New procedures "regexp*", "regex-optimize" and "make-anchored-pattern"
28  (regex library unit)
29- New procedures "terminall-size", "terminal-name" and "get-host-name"
30  (posix library unit)
31- chicken-setup: can create repository catalog file from local
32  SVN checkout of egg repository
33- chicken-setup has the new option "-host-extension" to force
34  compiling extensions in "host" mode when using a cross-compiling
35  chicken
36- Better cross-development support for the build system (the
37  Makefile accepts various variables for customizing the build)
38- "file-size" and "file-stat" handle file-sizes of >4GB now
39- "find-files" collects directories as well, now [Thanks to Ivan Raikov]
40- added "dist" target to toplevel makefile
41- "andmap" and "ormap" have been deprecated
42- makefiles support relinking now
43- added "thread-wait-for-i/o!" (srfi-18 library unit)
44- the "chicken-bug" program can now be used to create bug reports
45  and send them to the CHICKEN maintainers
46
472.717
48
49- New binary compatibility version (3) - installed eggs mst be recompiled!
50- deprecated "shift!" and "unshift!"
51- regex unit:
52  Uses PCRE 7.4
53- utils unit:
54  Uses compiled regular expressions
55- unit posix:
56  Uses compiled regular expressions
57- removed build option for extra symbol slot
58- added Lisp-style symbol property lists
59
602.701
61
62- countless bugfixes and minor improvements
63- new foreign types:
64  [nonnull-]unsigned-c-string[*]
65  c-string-list[*]
66- added "unused" declaration specifier
67- new GNU Make based build process
68- libffi is not used anymore, handcoded assembler is used for x86, x86-64
69  and powerpc platforms
70- library unit:
71  blob?
72  make-blob
73  blob-size
74  string->blob
75  blob->string
76- regex unit:
77  glob?
78- utils unit:
79  directory-null?
80  port-fold
81- extras unit:
82  hash-table-remove!
83- lolevel unit:
84  mutate-procedure
85- srfi-4 unit:
86  XXXvector->blob[/shared]
87  blob->XXXvector[/shared]
88- csc options:
89  -cxx-name
90  -disable-compiler-macros
91- byte-vectors have been removed and replaced by new "blob" type,
92  added various blob<->SRFI-4 vector conversion procedures in srfi-4 unit
93- ":optional" has been renamed to "optional" (the old name is still
94  available but deprecated)
95- "switch" has been replaced by "select" ("switch" is still available but
96  deprecated)
97- "tcp-connect" and "tcp-accept" handle time-outs via parameters
98  "tcp-connect-timeout" and "tcp-accept-timeout"
99- tcp unit: support for read/write timeouts
100
101
1022.6
103
104- Many bugfixes
105- Better support for Sun's C compiler
106- Input-performance has been improved
107- PCRE (Perl compatible regular expressions) by Philip Hazel is now
108  bundled with CHICKEN
109- Static linking of extensions is now possible (when supported by
110  the egg)
111- The interpreter warns about references to potentially unbound variables
112  in loaded code and expressions entered on the REPL
113- The expansion process is traced during compilation and interpretation
114  to give (slightly) more usable syntactic context in error messages
115- library:
116  * added `any?`, `bit-set?' and `on-exit'
117- eval:
118  * new procedure `set-parameterized-read-syntax!'
119- posix:
120  * SRFI-17 setters for `file-position`, `current-user-id',
121    `current-group-id', `process-group-id'; the respective setter-procedures
122    are still available but have been deprecated
123  * `file-stat' returns more information (including device info)
124  * added `process*'
125- extras:
126  * added `read-string!'
127- utils:
128  * `apropos' and `apropos-list' procedures
129- srfi-4:
130  * added `read-u8vector', `read-u8vector!' and `write-u8vector'
131- srfi-18: 
132  * added `time->milliseconds' and `milliseconds->time'
133- csi:
134  * `-ss SCRIPTNAME' option
135- csc:
136  * accepts options given in the environment variable `CSC_OPTIONS'
137  * new options `-static-extensions' and `-host'
138- chicken/csc:
139  * new option `-keep-shadowed-macros'
140- chicken-setup:
141  * accepts options given in the environment variable `CHICKEN_SETUP_OPTIONS'
142  * allows retrieval and installation of eggs from subversion repository
143    and the local filesystem
144  * new options `-tree FILENAME', `-svn', `-local', `-revsion' and
145    `-destdir PATHNAME'
146  * added helper procedures `required-chicken-version' and
147    `required-extension-version'
148- Lots of improvements in the CMake build
149
150Many thanks to Ingo Bungener, Peter Busser, John Cowan, Marc Feeley,
151Stephen Gilardi, Mario Domenech Goulart, Joshua Griffith, Sven
152Hartrumpf, Daishi Kato, mejedi, Dan Muresan, Deanna
153Phillips, Robin Lee Powell, Ivan Raikov, Danial Sadilek, Alex Shinn,
154Tony Sideaway, Minh Thu for reporting bugs, suggesting improvements
155and contributing fixes.
156
157Thanks again to Brandon Van Every for his extensive work on the CMake
158build process.
159
160Special thanks to Kon Lovett for many improvements made in the posix
161library.
162
163
1642.5
165
166- Bugfixes
167- CHICKEN can now be built using CMake <http://www.cmake.org>, in fact CMake
168  is required to built CHICKEN from sources on Windows with the Microsoft
169  tools
170- the whole build process has been cleaned up and simplified
171- the "easyffi" and "tinyclos" library units have been removed from the base
172  system and are now available as separate extensions
173- the deprecated "set-dispatch-read-syntax!" has been removed
174- Will Farr cleaned up the behaviour of number-type specific numeric operations
175  ("fx..."/"fp...") with respect to safe/unsafe mode
176- added "(finite? NUMBER)"
177- the "$" macro moved into its own separate extension
178- the values of "software-type", "software-version", "machine-type" and "machine-byte-order"
179  are now registered as features and can be tested using "cond-expand" or "#+"
180- all tools now support the "-release" option
181- chicken-setup: added "-test" option
182
183Special thanks to Brandon Van Every, who put considerable effort into the
184CHICKEN build system and who ported it to CMake completely from scratch.
185The installation instructions and build file are extensively documented and may
186serve as a tutorial for creating non-trivial software projects with CMake.
187Thanks, Brandon! Also thanks to Bill Hoffmann and Brad King from Kitware
188for their support.
189
190Many thanks to Peter Bex, Toby Butzon, Thomans Chust, John Cowan, Alejandro Forero Cuervo,
191dgym, Alex Drummond, Mario Domenech Goulart, Kon Lovett, Benedikt Rosenau and Zbigniew
192Szadkowski for reporting bugs, suggesting improvements and contributing fixes.
193
194
1952.41
196
197- Bugfixes galore
198- compiler:
199  * added support for the generation of "export" files through the "-emit-exports" option
200  * new option `-check-imports' (csc: `-G') checks for unimported symbols and can be quite
201    helpful in finding unbound variable errors (this requires all extensions ("eggs") to be
202    adapted to this new feature, a process which isn't complete yet)
203  * new declarations `emit-exports', `constant' and `import'
204  * new option `-disable-warning' and declaration `disable-warning'
205  * new options `-release' and `-import'
206- chicken-setup:
207  * new `exports' extension property
208  * option `-check' checks for extension upgrades
209  * added `-eval' option
210  * added parameters `setup-install-flag' and `setup-verbose-flag'
211- FFI:
212  * added the handy `$' macro, which lets you do foreign calls directly without declaring
213    a placeholder procedure
214  * `define-foreign-enum' for treating C enums as symbol-sets
215  * `foreign-safe-wrapper' has been deprecated
216- Slight reorganization of TinyCLOS and match macros and support code
217- `thread-join!' has been generalized to allow a thread to have multiple results
218- Renamed `thread-deliver-signal!' to `thread-signal!' and `invalid-procedure-call-handler'
219  to `set-procedure-call-handler!'
220- The system can be configured to add an extra slot to symbol objects
221- Another configuration option enables GC of unused symbols by default
222- The extension repository is now versioned to catch binary incompatible
223  installations, this requires to either move all installed extensions to the
224  new location ("$prefix/lib/chicken/1") or reinstall them
225- Now supports SRFI-61 (extended `cond')
226- Added procedures `load-relative', `tcp-buffer-size`, `string-chomp'
227- trivial implementations of `real-part', `imag-part', `angle' and `magnitude' have
228  been added to the library to allow more portable code
229- Breakpoints and single-stepping of compiled code on the function-level, new
230  procedures `breakpoint' and `singlestep'
231- csi: new toplevel commands `,info', `,step', `,br', `,ubr', `,breakall', `,breakonly',
232  `,exn' and `,c'
233- csi: `set-describer!' allows definition of custom output for the `,d' command
234- Added `integer64' foreign type specifier
235- The environment variable "CHICKEN_PREFIX" allows (together with "CHICKEN_REPOSITORY") overriding
236  the installation path prefix in case you want to install and run multiple instances/versions
237  of CHICKEN or install on a shared network
238- csc: added `-dry-run' option
239- removed `-split...' options (and the ability to generate multiple C files from a single
240  Scheme file)
241- `crictical-section', `disable-interrupts' and `enable-interrupts' shouldn't be used from
242  now on (deprecated), use SRFI-18 mutexes instead
243
244Many thanks to Nico Amtsberg, Arto Bendiken, Jean-Francois Bignolles, Peter Busser, Thomas Chust,
245John Cowan, Alejandro Forero Cuervo, Jaarod Eells, Brandon van Every, Graham Fawcett, Mario Domenech
246Goulart, Sven Hartrumpf, Markus Hülsmann, Goetz Isenmann, Heath Johns, Daishi Kato, Kon Lovett, Dan
247Muresan, Ian Oversby, Göran Weinholt, Burton Samograd, Reed Sheridan, Alex Shinn, Sunnan, Zbigniew
248Szadkowski and Peter Wright for their helpful contributions, suggestions and bug reports!
249
250
2512.3
252
253- Many many bugfixes
254- compiler:
255  * new option `-profile-name FILENAME'
256- the `chicken-config' script has been removed, identical functionality can be provided
257  by `csc'
258- csc:
259  * new option `-objc' compiles generated C files in Objective-C mode
260  * accepts .m files and handles the case when only object files are given
261  * new options `-framework', `-F<dir>' and `-rpath'
262  * options `-home', `-cflags', `-ldflags', `-libs', `-cc-name' and `-ld-name'
263- chicken-setup:
264  * detects whether eggs are gzipped or not and accepts ungzipped eggs
265  * if no other actions are specified and no eggs are given on the command line, then
266    all .setup scripts in the current directory are executed
267  * added `setup-build-directory' and `setup-root-directory' parameters
268  * helper procedures `copy-file', `move-file', `remove-file' and `create-directory'
269- csi commands `,s', `,l' and `,ln' accept multiple inputs, the `trace'/`untrace'
270  macros have been replaced byy the toplevel commands `,tr' and `,utr'
271- new toplevel commands in csi can be defined with the `toplevel-command' procedure
272- `extension-info' has been renamed to `extension-information'. The old name is
273  still available, but deprecated
274- `print-backtrace' has been renamed to `print-call-chain'. The old name is still
275  available (and deprecated)
276- `transcript-on' and `transcript-off' are no longer supported
277- New macro `define-for-syntax'
278- library:
279  (get-call-chain [DEPTH])
280  (current-read-table)
281  (copy-read-table READ-TABLE)
282  (current-gc-milliseconds)
283  `print-error-message' writes now to the current output-port, not the error port
284  `number-string' does now a slightly better job converting large exact integers
285  with non-decimal base
286- extras:
287  (each PROC ...)
288  `hash-table-ref' throws (exn access) on error
289- posix:
290  (local-time->seconds TIME)
291  (utc-time->seconds TIME)
292  (local-timezone-abbreviation)
293  `directory' takes optional path and dotfiles arguments
294  `[group|system]-information' return lists instead of multiple values
295- tcp:
296  (tcp-port-numbers PORT)
297- `set-dispatch-read-syntax!' has been renamed to `set-sharp-read-syntax!' (the old
298  name is still available but deprecated)
299- evaluated code generates call-trace information (as compiled code does), which
300  results in much better back-traces.
301- new foreign types `[unsigned-]int32' and `[unsigned-]integer32'
302- added SRFI-17 setters for many accessors of the core libraries
303- tinyclos: added a couple of missing classes for core library structures
304- `let[*]-values' is now SRFI-11 compliant
305- the finalizer-table is now resized dynamically, which speeds up code that uses
306  very many finalizers [Thanks to Zbigniew Szadkowski]
307- reloading compiled code dynamically does basically work (but still leaks memory)
308- the manual contains a section on pattern matching
309- libffi is used by default, when available
310- CHICKEN has now experimental support for the "CMake" build system <http://www.cmake.org>
311  Many thanks to Bill Hoffmann from Kitware and Brandon van Every for helping with this
312- added compiler/runtime support for object serialization via the `s11n' extension
313  (see <http://www.call-with-current-continuation.org/eggs/s11n.html>)
314
315Sergey Khorev has offered to help with maintaining the Windows port of CHICKEN.
316Thanks, Sergey!
317
318Many thanks Jean-Francois Bignolles, Patrick Brannan, Adam Buchbinder, Hans Bulfone, Category 5,
319John Cowan, datrus, Guillaume Germaine, Mario Domenech Goulart, Daniel B. Faken, Andrey Fomichev,
320Jarod Eells, Sven Hartrumpf, David Janssens, Daishi Kato, Levi Pearson, Pupeno, Eric Raible, Benedikt
321Rosenau, Reed Sheridan, Zbigniew Szadkowski and Mark Wutka for their helpful contributions,
322suggestions and bug reports!
323
324Special thanks to Kon Lovett for fixing countless open issues and many useful sugestions.
325
326
3272.2
328
329- Many bugfixes
330- The read-syntax `#+X Y' is provided as a shorthand for `(cond-expand (X Y) (else))'
331- `foreign-parse' and `foreign-parse/spec' have been removed
332- lolevel: Executable byte-vector stuff has been removed
333- SRFIs 28, 31, 62 and 69 are now officially supported
334- New compiler option `-extension' simplifies static compilation of eggs
335- csc: changed `-E' to `-P', `-E' is now an alias for `-extension'
336- Embedding:
337  * All the `entry-point' related things have been removed, as has been `define-embedded',
338    calling Scheme from C is now exclusively done with callbacks
339  * Integrated boilerplate embedding API into the `eval' unit
340  * Added `CHICKEN_continue' API function
341  * Default "stub" toplevel (`CHICKEN_default_toplevel') allows embedding without a
342    separate Scheme file
343  * Different stack-levels during invocation of CHICKEN_run or callbacks could result
344    in crashes - this is now detected (or can be checked manually)
345- Added extension-specifier `(version ...)'
346- New FFI macros `foreign-declare', `foreign-parse' and `foreign-parse/declare' replace
347  the declaration-specifiers of the same name
348- Hash-table resizing was ridiculously slow, and should now be much faster
349- `define-foreign-record' handles recursive structures
350- `require-extension' is now available by default, and so can be used with the
351  plain Scheme evaluator
352- Procedures now contain some basic debug information, unless a file was compiled
353  with `-no-lambda-info'
354- compiler: `-debug-level 2' is now the default (enables trace- and lambda-info)
355- chicken-setup:
356  * handles direct downloads from arbitrary URLs
357  * HTML documentation for eggs can now be included into the egg and will be installed
358    in the repository (using the `documentation' info-property)
359  * `chicken-setup -docindex' shows path of generated documentation index for all
360    installed eggs
361- extras:
362  * SRFI-69 is now fully supported, note that THIS WILL BREAK EXISTING CODE, since
363    the API is not compatible to the previous one
364  * `clear-hash-table!', `get' and `put!' are gone
365  * `read-file' accepts optional reader procedure and max count
366  * `read-lines' accepts filename instead of port
367- library:
368  * `signum' is now exactness-preserving
369  * `procedure-information' returns some basic debug info for a given procedure
370  * Added `(warning MESSAGE ARGUMENTS ...)'
371  * `(promise? X)'
372- posix:
373  * `(current-directory DIR)' is equivalent to `(change-directory DIR)'
374- regex:
375  * `pattern->regexp' has been renamed to `glob->regexp'
376- The `format' library unit has been removed from the base system and is noww available
377  separately
378- SRFI-17, on the other hand has been moved into the base system
379- String literals and the print-names of symbol literals are now allocated in static
380  (non-GC'd) memory
381- If static or shared build is disabled, no `...-static' executables will be generated
382
383
384Many thanks to Ashley Bone, Thomas Chust, John Cowan, Alejandro Forero Cuervo, Daniel Faken, Sven
385Hartrumpf, Daishi Kato, Sergey Khorev, Kon Lovett, Gene Pavlovsky, Reed Sheridan and Ed Watkeys for
386their helpful contributions, suggestions and bug reports!
387
388
3892.0
390
391- Many bugfixes
392- Loads of minor improvements (better error messages, more warnings, more error
393  checks, etc.)
394- On systems supported by the "libffi" library, the 128-argument limit can
395  be exceeded (currently to an arbitrary maximum of 1000). To take advantage
396  of this, add `--with-libffi' to the configuration options when building
397  chicken
398- The `libsrfi-chicken' and `libstuffed-chicken' libraries have been folded
399  into `libchicken', so only a single library is linked with generated
400  executables, which greatly simplifies and speeds up the build process.
401  It is recommended to remove any traced of `libstuffed-chicken.*' and
402  `libsrfi-chicken.*' before installing a new release. This requires also
403  to reinstall all eggs (extension libraries).
404- The compiler is able to inline more procedure calls
405- Implicit non-multival continuations (like in `begin' or 'let') accept multiple
406  values and discard all but the first value
407- finalization should actually work now and is much more efficient (unless
408  used excessively)
409- csi:
410  `advise' has been removed
411  `-eval' implies `-batch' and `-quiet'
412  added `-require-extension'
413  short option names are now supported and may be collapsed, if unambigous
414- New runtime options:
415  -:b (enter REPL on error)
416  -:B (ring bell on every major GC)
417  -:fNNN (set pending finalizer maximum limit)
418- New compiler options:
419  -accumulate-profile
420  -inline
421  -inline-limit
422  -emit-external-prototypes-first
423- The compiler-option `-require-for-syntax' has been renamed to `-require-extension'
424  and is the same as putting a `(require-extension ...)' form directly into the code
425- Removed compiler- and interpreter option `-no-feature'
426- New declarations:
427  (lambda-lift)
428  ([not] inline)
429  (inline-limit LIMIT)
430  (emit-external-prototypes-first)
431  ([not] check-c-syntax)
432- `foreign-callback-lambda[*]' has been renamed to `foreign-safe-lambda[*]' - the
433  old names are still valid but deprecated
434- New foreign type specifier `scheme-pointer' (the same as `pointer', which is
435  deprecated now)
436- Easy FFI:
437  `___scheme_pointer' and `___byte_vector' pseudo types
438  `___pointer' and `___length' markers
439  `default_renaming' and `opaque' pseudo declarations
440  `___inout' and `___out' argument markers work also for C++ reference types
441  Recognizes `C_word' and `size_t'
442- The reader supports selective case sensitive/insensitive reading using the
443  `#cs...' and `#ci...' syntax (as supported in PLT Scheme)
444- `\uXXXX' and `\UXXXXXXXX' escape-sequences for string literals
445- `#\UXXXXXXXX' character literal syntax
446- `\v', `\a' and `\f' escape sequences and `#\delete', `#\esc', `#\alarm', `#\vtab'
447  and `#\nul' character literals
448- `chicken-setup' supports proxy connections via the `-proxy' option
449- library:
450  (set-dynamic-load-mode! MODE)
451  `(end-of-file)' has been removed (use `#!eof' instead)
452- The alternative continuation API described in Marc Feeley's paper
453  "A better API for first class continuations" is supported natively:
454  (continuation-capture PROC)
455  (continuation-graft K THUNK)
456  (continuation-return K VALUE ...)
457  (continuation? X)
458- `foreign-primitive' and `define-extension' macros
459- tinyclos:
460  (instance-of? X)
461  `define-method' specializes on all arguments and allows DSSSL keyword argument lists
462- eval:
463  (set-dispatch-read-syntax! CHAR PROC)
464- extras:
465  (hash-table-update! HT KEY PROC INIT)
466  (hash-table-exists? HT KEY)
467  (hash-table-values HT)
468  (hash-table-keys HT)
469  (alist->hash-table ALIST [TEST SIZE])
470  `hash-table->list' has been renamed to `hash-table->alist
471  `hash-table-for-each' takes the arguments in reversed order (the old order is still
472  valid but deprecated)
473  Hash-tables support now user-defined hash functions
474- posix:
475  (file-link OLD NEW)
476  (symbolic-link? FILENAME)
477  (regular-file? FILENAME)
478  errno/exist
479  `process' and `process-execute' allow passing an environment
480- regex:
481  (regexp-escape STR)
482- tcp:
483  (tcp-listener-fileno LISTENER)
484- utils:
485  (port-for-each FN THUNK)
486  (port-map FN THUNK)
487- On Windows, the batch file `win-install.bat' can be used to install the system
488  into the desired location
489- Building Chicken on Windows with the free development tools from Microsoft (VCToolkit,
490  Platform Core SDK) has been tested and is documented in the file `vctk-install.txt'
491- The `-script-meta' option has been removed
492- The srfi-25 and srfi-37 library units and the test-infrastructure facility have been
493  removed from the core system and is now separately available as an extensions (eggs)
494- The syntax-case macro and module system has been removed and also available as an
495  extension. This implies that all compiler- and interpreter options related to hygienic
496  macros and syntax-case are gone as well.
497- All strictness compiler- and interpreter options (and the `strict-reader' parameter)
498  have been removed
499- the `examples' directory and its contents have been removed from the distribution
500 
501
502Many thanks to William Annis, Mark Baily, Peter Bex, Dominique Boucher, Patrick Brannan,
503Thomas Chust, Alejandro Forero Cuervo, Graham Fawcett, Damian Gryski, Sven Hartrumpf,
504Hans Huebner, Christian Jaeger, Dale Jordan, Daishi Kato, Sergey Khorev, Krysztof Kowalczyk,
505Goran Krampe, John Lenz, Kon Lovett, Scott G. Miller, Julian Morrison, Nicolas Pelletier,
506Carlos Pita, Benedikt Rosenau, Andreas Rottmann, Reed Sheridan, Alex Shinn, Andrey Sidorenko,
507Michele Simionato, Volker Stolz, Sunnan, Zbigniew Szadkowski, Andre van Tonder, Henrik
508Tramberend and Mark Wutka for their helpful contributions, suggestions and bug reports!
Note: See TracBrowser for help on using the repository browser.