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

Last change on this file since 7931 was 7931, checked in by felix winkelmann, 12 years ago

merged from prerelease branch rev. 7930 - release version 3.0.0; fixed wrong version numbers in some files

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