source: project/chicken/trunk/NEWS @ 7765

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

updated NEWS

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