source: project/chicken/branches/release/NEWS @ 7279

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

updated NEWS from trunk

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