File: NEWS

package info (click to toggle)
chicken 4.11.0-1
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 31,084 kB
  • sloc: ansic: 609,146; lisp: 68,137; tcl: 1,417; sh: 516; makefile: 62
file content (1542 lines) | stat: -rw-r--r-- 77,014 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
4.11.0

- Security fixes
  - Specialisation rules for string-{ref,set!}, bit-set?
    and move-memory no longer use unchecked C functions which could
    result in undefined behaviour, including buffer overruns (#1216).

- Platform support
  - CHICKEN now supports the Linux X32 ABI (thanks to Sven Hartrumpf).

- Runtime system:
  - The calling convention of CPS procedures has been changed to
    use "argument vectors" instead of C calling convention.
  - The C API of C_values(), C_do_apply() and how to invoke CPS
    functions has changed.  The C_procN() macros have disappeared.
    The manual example in "Accessing external objects" for C_values
    has been updated.  See also the "numbers" egg for examples on
    how to support pre- and post-4.10.1 CHICKENs simultaneously.
  - Apply hack is no longer used; the limitation of 128 arguments
    has been lifted for platforms which had no apply hack.
  - Increased the "binary compatibility version" to 8.
  - Delivery of signals in other OS-level threads is now dealt with
    in a more robust way (#1232) (thanks to Joerg Wittenberger).
  - Compiled programs with large literals won't crash on startup (#1221).
  - Comparisons of closures now behave in a stable way, whether or not
    the code was compiled with the -no-lambda-info option (#1041).
  - The signal handling code can no longer trigger "stack overflow" or
    "recursion too deep or circular data encountered" errors (#1283).

- Compiler:
  - Specializations on implicit "or" types like "number" or "boolean" now
    work, removing the requirement for the inferred types to match
    declared types exactly.  Specializations are matched from first to
    last to resolve ambiguities (#1214).
  - Compiler rewrites for char{<,>,<=,>=,=}? are now safe (#1122).
  - When requesting to emit import libraries that don't exist, the
     compiler now gives an error instead of quietly continuing (#1188).
  - Don't silently truncate huge literals (thanks to Claude Marinier).

- Core libraries
  - try-compile from setup-api cleans up temporary output files (#1213).
  - SRFI-18: thread-join! no longer gives an error when passed a
    thread in the "sleeping" state (thanks to Joerg Wittenberger)
  - SRFI-18: mutex-lock! will not set ownership of mutexes when
    passed #f as the owner (#1231), not disown a mutex from owner if
    locking fails for timeout and not keep the last thread which held
    a mutex until the next lock (thanks to Joerg Wittenberger).
  - SRFI-39: When a parameter's "guard" procedure raises an exception,
    "parameterize" now correctly resets the original values of all
    parameters (fixes #1227, thanks to Joo ChurlSoo).
  - Irregex has been updated to 0.9.4, which fixes severe performance
    problems with {n,m} repeating patterns (thanks to Caolan McMahon).
  - Unit "posix": The following posix procedures now work on port
    objects: file-stat, file-size, file-owner, file-permissions,
    file-modification-time, file-access-time, file-change-time,
    file-type and all procedures using file-type. These are:
    regular-file?, symbolic-link?, block-device?, character-device?
    fifo? and socket?.
  - Unit "posix": When "file-close" is interrupted it will retry,
    to avoid leaking descriptors (thanks to Joerg Wittenberger).
  - Unit "data-structures": alist-{update[!],ref} were made consistent
    with srfi-1 in the argument order of comparison procedures.
  - Unit "lolevel": locative-ref has been fixed for locatives of u32
    and s32vectors (thanks to Joerg Wittenberger for pointing this out).
  - string->number now signals exceptions if passed a bad base instead
    of segfaulting (#1272; reported by "Tilpner" on IRC).

- Tools
  - A debugger is now available, known as "feathers", which allows
    basic source-level debugging of compiled Scheme code.
  - A statistical profiler has been added, enabling sampling-based
    runtime profiling of compiled programs.
  - "chicken-install"
    - When installing eggs in deploy mode, already satisfied
      dependencies aren't reinstalled every time (#1106).
  - "chicken-uninstall"
    - -prefix and -deploy options were added, matching chicken-install.
  - "chicken-status"
    - -prefix and -deploy options were added, matching chicken-install.
  - The -sudo and -s options for chicken-install and chicken-uninstall
    now honor a "SUDO" environment variable (thanks to Timo Myyr).

- Syntax expander
  - Mixed internal define/define-values are now correctly ordered, so
    later defines can refer to earlier define-values (#1274).

4.10.0

- Security fixes
  - CVE-2014-6310: Use POSIX poll() on Android platform to avoid
    potential select() buffer overrun.
  - CVE-2014-9651: substring-index[-ci] no longer scans beyond string
    boundaries.
  - CVE-2015-4556: string-translate* no longer scans beyond string
    boundaries.

- Core libraries
  - alist-ref from unit data-structures now gives an error when passed
    a non-list, for consistency with assv/assq/assoc.
  - Unit tcp now implicitly depends on ports instead of extras.
     This may break programs which don't use modules and forgot to
     require extras but use procedures from it.
  - SRFI-13: fix string-copy! in cases source and destination strings'
    memory areas overlap (#1135).
  - SRFI-1: Check argument types in lset and list= procedures (#1085).
  - Fixed another, similar bug in move-memory! for overlapping memory.
  - Fixed broken specialisation for move-memory! on pointer types.
  - Fixed broken specialisation for irregex-match-num-submatches.
  - Fixed bug in make-kmp-restart-vector from SRFI-13.
  - Removed deprecated implicit expansion of $VAR- and ~ in pathnames.
     The ~-expansion functionality is now available in the
     "pathname-expand" egg (#1001, #1079) (thanks to Florian Zumbiehl).
  - normalize-pathname has been simplified to avoid adding trailing
     slashes or dots (#1153, thanks to Michele La Monaca and Mario Goulart).

- Unit srfi-4:
   - write-u8vector has been made more efficient (thanks to Thomas Hintz).
   - read-u8vector has been made more efficient (thanks to Andy Bennett
      for pointing this out and testing an improvement).

- Unit lolevel:
  - Restore long-lost but still documented "vector-like?" procedure (#983)

- Unit "files":
  - normalize-pathname no longer considers paths starting with ".//"
    as absolute (#1202, reported by Haochi Kiang).

- Unit "posix":
  - set-file-position! now allows negative positions for seek/cur (thanks
    to Seth Alves).
  - file-mkstemp now works correctly on Windows, it now returns valid
    file descriptors (#819, thanks to Michele La Monaca).
  - create-directory on Windows now creates all intermediate
    directories when passed #t as second parameter.

- Runtime system:
  - Removed several deprecated, undocumented parts of the C interface:
    C_zap_strings, C_stack_check, C_retrieve, C_retrieve_proc,
    C_retrieve_symbol_proc, C_i_foreign_number_vector_argumentp,
    C_display_flonum, C_enumerate_symbols
  - Removed several deprecated and undocumented internal procedures:
    ##sys#zap-strings, ##sys#round, ##sys#foreign-number-vector-argument,
    ##sys#check-port-mode, ##sys#check-port*
  - SIGBUS, SIGILL and SIGFPE will now cause proper exceptions instead
    of panicking (thanks to Joerg Wittenberger).

- Module system
  - Allow functor arguments to be optional, with default implementations.
  - Fixed a bug that prevented functors from being instantiated with
     built-in modules.
  - Fixed generation of import libraries for instantiated functors
     (#1149, thanks to Juergen Lorenz).

- Syntax expander
  - define-values, set!-values and letrec-values now support full lambda
    lists as binding forms
  - cond expands correctly when a constant is used in combination with =>
     (thanks to Michele La Monaca)

- C API
  - Removed deprecated C_get_argument[_2] and
    C_get_environment_variable[_2] functions.
  - C_mutate2 has been deprecated in favor of C_mutate
  - chicken.h can be included in C++ programs in strict C++11 mode
     without compiler errors on Linux (thanks to "Izaak").

- Foreign function interface
  - The foreign type specifier "scheme-pointer" now accepts an optional
    C pointer type (thanks to Moritz Heidkamp and Kristian Lein-Mathisen).
  - Type hinting for foreign-primitives now allows returning multiple
    values when no return type has been specified.

- Compiler
  - Fixed an off by one allocation problem in generated C code for (list ...).

- Build system
  - MANDIR was renamed to MAN1DIR and TOPMANDIR was renamed to MANDIR
     in order to comply with standard Makefile practice in UNIX.
  - INCDIR was renamed to CHICKENINCDIR, and now derives from
     INCLUDEDIR, which defaults to $(PREFIX)/include
  - BINDIR, LIBDIR, SHAREDIR, INCLUDEDIR, MANDIR, MAN1DIR, DOCDIR,
     CHICKENINCDIR and CHICKENLIBDIR will now also be taken from
     the environment, if present (like PLATFORM, DESTDIR and PREFIX).

- Tools
  - "csc"
    - On Cygwin, -static now works again (thanks to Michele La Monaca)
  - "chicken-install"
    - When using chicken-install -retrieve, and an error occurs during
       retrieval (or the egg doesn't exist), the egg's directory is
       now properly cleaned up (#1109, thanks to Alex Charlton)
  - "chicken"
    - The -r5rs-syntax option did nothing; this has been fixed.

4.9.0

- Security fixes
  - CVE-2014-3776: read-u8vector! no longer reads beyond its buffer when
    length is #f (thanks to Seth Alves).
  - CVE-2013-4385: read-string! no longer reads beyond its buffer when
    length is #f.
  - CVE-2013-1874: ./.csirc is no longer loaded from the current directory
    upon startup of csi, which could lead to untrusted code execution.
    (thanks to Florian Zumbiehl)
  - CVE-2013-2024: On *nix, the qs procedure now single-quotes everything
    instead of relying on a blacklist of shell characters to be escaped.
    On Windows, it properly duplicates double-quote characters.  (thanks
    to Florian Zumbiehl)
  - CVE-2013-2075: Use POSIX poll() in other places where select() was
    still being used.  (thanks to Florian Zumbiehl and Joerg Wittenberger)
  - CVE-2012-6122: Use POSIX poll() on systems where available.  This avoids a
    design flaw in select(); it supports no more than FD_SETSIZE descriptors.

- Core libraries
  - Fix subvector when the TO optional argument equals the given vector
    length (#1097)
  - Unit extras now implicitly depends on ports.  ports no longer
     implicitly depends on extras.  This may break programs which don't
     use modules and forgot to require ports but use procedures from it.
  - Support has been added for the space-safe R7RS macro "delay-force".
  - Export file-type from the posix unit (thanks to Alan Post).
  - SRFI-4 s8vectors now work correctly in compiled code on PowerPC and ARM.
  - thread-join! now works correctly even if the waiting thread was
     prematurely woken up by a signal.
  - unsetenv has been fixed on Windows.
  - The process procedure has been fixed on Windows.
  - Nonblocking behaviour on sockets has been fixed on Windows.
  - Possible race condition while handling TCP errors has been fixed.
  - The posix unit will no longer hang upon any error in Windows.
  - resize-vector no longer crashes when reducing the size of the vector.
  - Distinct types for boolean true and false have been added to the
    scrutinizer.
  - Fixed bugs in string-trim-right, string-index-right and
    string-skip-right, from SRFI-13
  - read-line no longer returns trailing CRs in rare cases on TCP ports (#568)
  - write and pp now correctly use escape sequences for control characters
     (thanks to Florian Zumbiehl)
  - posix: memory-mapped file support for Windows (thanks to "rivo")
  - posix: find-file's test argument now also accepts SRE forms.
  - numerator and denominator now accept inexact numbers, as per R5RS
    (reported by John Cowan).
  - Implicit $VAR- and ~-expansion in pathnames have been deprecated (#1001)
  - Fixed EINTR handling in process-wait and when reading from file ports.
  - Irregex is updated to 0.9.2, which includes bugfixes and faster submatches.
  - Compile-time expansions for "[sf]printf" are slightly more efficient.
  - Removed the deprecated "always?", "never?", "shuffle" and "none?" procedures.
  - Fixed problem "make-pathname" that returned an absolute path if given
    a relative one without a directory argument.
  - The implementation of promises has been made more efficient.
  - Removed the deprecated "c-runtime", "null-pointer?" and "pointer-offset"
    procedures.
  - The deprecated alias "mutate-procedure" for "mutate-procedure!" has
    been removed.
  - On 64-bit systems the feature identifier "64bit" is registered.
  - "process-fork" accepts an optional argument that specifies
    wether other threads should be terminated in the child process.
  - The "signal/bus" signal identifier was missing.
  - Added setter-procedure for "signal-mask".
  - Added "recursive-hash-max-length" and "recursive-hash-max-depth"
    parameters (srfi-69).

- Platform support
  - CHICKEN can now be built on AIX (contributed by Erik Falor)
  - CHICKEN can now be built on GNU Hurd (contributed by Christian Kellermann)
  - Basic support has been added for building Android and iOS binaries (see
    the "README" file for caveats and pitfalls) (contributed by Felix Winkelmann
    from bevuta IT GmbH)
  - Added support for 64-bit Windows (consult the "README" file for more
    information).

- Runtime system
  - finalizers on constants are ignored in compiled code because compiled
    constants are never GCed (before, the finalizer would be incorrectly
    invoked after the first GC).  (Reported by "Pluijzer")
  - The call trace buffer is now also resizable at runtime via ##sys#resize-trace-buffer.
  - C_zap_strings and ##sys#zap-strings (undocumented) have been deprecated.
  - Special events in poll() are now handled, avoiding hangs in threaded apps.
  - When invoking procedures with many rest arguments directly (not via APPLY),
    raise an error when argument count limit was reached instead of crashing.
  - When the maximum allowed heap size is reached, panic instead of crashing.
  - The code generated for mutating data destructively is partially inlined
    and thus slightly more efficient.
  - Fixed incorrect code in the foreign argument conversion for
    "unsigned-integer64" (#955).  For unsigned-integer, integer64 and
    unsigned-integer64, disallow floating-point numbers.  Fix behavior
    on 32-bit systems.
  - On systems that provide sigprocmask(2), segmentation violations, illegal
    instruction signals, bus errors and floating-point exceptions are now caught
    and trigger normal error-processing (including a backtrace). The handling
    of these so called "serious" signals can be disabled by passing the
    "-:S" runtime option to executables.
  - Reclamation of unused interned symbols (enabled with the "-:w" runtime option)
    works much better now.

- Build system
  - The tests can now be run without having to first install CHICKEN.
  - Fixed a dependency problem that made it impossible to build the distribution
    tarball on Windows with the mingw compiler.
  - Increased the "binary compatibility version" to 7.

- Tools
  - "csc"
    - "-z origin" is now passed as a linker option on FreeBSD when
      compiling for deployment (thanks to Jules Altfas & Vitaly Magerya)
    - "-deploy" works now on FreeBSD (thanks to Jules Altfas and
      Vitaly Magerya), OpenBSD and NetBSD (see README for NetBSD).
    - added "-oi"/"-ot" options as alternatives to "-emit-inline-file"
       and "-emit-type-file", respectively; "-n" has been deprecated.
    - .c/.o files are no longer overwritten when they have the same basename
      as a Scheme source file (i.e. "csc foo.scm foo.c -o foo" works now).
  - "chicken-install"
    - "-deploy" now correctly installs dependencies of
      deployed eggs under the deployment directory instead of globally.
    - Full URI syntax is now supported for proxy environment variables
      (thanks to Michele La Monaca)
  - "chicken-status"
    - Added -eggs command line option to list installed eggs
  - misc
    - Removed the deprecated "-v" options (use "-version" instead) in various
      core programs.
    - The runtime linker path for compiled executables was not set correctly
      on FreeBSD systems.  This has now been fixed.
    - Removed the deprecated "make" and "make/proc" facility from the
      "setup-api" module; also removed the deprecated "required-extension-version"
      and "required-chicken-version" procedures.

- Syntax
  - Added the aliases "&optional" and "&rest" as alternatives to "#!optional"
    and "#!rest" in type-declarations (suggested by Joerg Wittenberger).
  - Vectors, SRFI-4 number vectors and blobs are now self-evaluating for
     R7RS compatibility.  Being literal constants, they are implicitly quoted.
  - For R7RS compatibility, named character literals #\escape and #\null are
     supported as aliases for #\esc and #\nul.  WRITE will output R7RS names.
  - The CASE form accepts => proc syntax, like COND (as specified by R7RS).
  - letrec* was added for R7RS compatibility.  Plain letrec no longer behaves
    like letrec*.

- Compiler
  - the "inline" declaration does not force inlining anymore as recursive
    inlining could lead to non-termination of the compiler (thanks to
    Andrei Barbu).
  - Type-analysis ("scrutiny") is enabled by default now, unless
    "-optimize-level 0" or "-no-usual-integrations" is given.
  - The "-scrutinize" compiler option has been deprecated.
  - A new lightweight flow-analysis pass ("lfa2") has been added.
    Enable by passing the "-lfa2" option to the compiler.
  - The deprecated options "-disable-warning", "-heap-growth", "-heap-shrinkage"
    and "-heap-initial-size" have been removed.
  - Removed the deprecated "constant" declaration.
  - Removed the deprecated "-lambda-lift" and "-unboxing" compiler options.
  - Removed the deprecated "-V" compiler option.
  - Generated names for formal parameters of foreign functions are slightly
    more informative.
  - Unused references to variables that name intrinsics can be removed.
  - In the flow-analysis pass, matching of combinations of "list"/"list-of" and
    "or" types with has been made more reliable.
  - Fixed various bugs in the type database.

- Syntax expander
  - added "require-extension-for-syntax" and "use-for-syntax".
  - Extended syntactic definitions are now available by default in all
    evaluated code, particularly in code evaluated at runtime in compiled
    applications.
  - Removed the deprecated variant "(define-compiler-syntax (NAME . LLIST) BODY ...)"
    of "define-compiler-syntax".

- C API
  - Deprecated C_get_argument[_2] and C_get_environment_variable[_2] functions.
  - Removed the deprecated "__byte_vector" type.


4.8.0

- Security fixes
  - CVE-2012-6125: Improved hash table collision resistance and added
    randomization to prevent malicious external causes of collisions.
    All SRFI-69 procedures accept extra arguments to control randomization
    for testing/debugging.
  - CVE-2012-6124: On 64-bit machines the "random" procedure no longer
    truncates result values (which caused very nonrandom results for very
    large values). Note that random shouldn't be used for
    security-critical code.
  - CVE-2012-6123: Added checks for embedded '\0' characters in strings
    passed to some C functions on a lower level than CHICKEN's FFI.

- Build system
  - version information has been moved into a separate unit to make the
    build-version shown in the banner and accessible through library
    procedures more accurate, this also speeds up the build on version-
    changes (thanks to Jim Ursetto for contributing this)
  - the build was made more reliable with respect to cross-compilation
    and custom installation names
  - the test-suite is now working on the mingw32 platform (with
    a few tests disabled due to missing functionality)
  - the version and branch of the sources are now properly compiled
    into the core libraries and shown in the "csi" and "chicken"
    version headers
  - The default target library name for an installation configured for cross-
    compilation is now "libchicken" and independent on any particular 
    setting of PROGRAM_PREFIX/PROGRAM_SUFFIX (thanks to Otavio Salvador)

- Compiler
  - Fixed bug in handling of symbols in constant-definitions (thanks to Peter
    Bex)
  - Stricter check for value-part of constant definition (thanks to Kon Lovett)
  - Fixed bug that caused argument-signatures of external definitions to be
    incorrectly modified during optimization (thanks to Peter Bex)
  - Failing constant-folding expressions now produce a compile-time warning
  - Fixed various bugs in the internal type-database (thanks to Kon Lovett and
    Peter Bex)
  - Fixed incorrect optimization rules for some fp-rounding and fixnum operators
  - added "-specialize" option and "specialize" declaration which enables
    optimizations of uses of core library procedures based on type-
    information gathered during flow analysis
  - "-optimize-level 3" and higher now implies "-specialize"
  - added option "-strict-types" and "-emit-type-file"
  - progress-information is now only shown with "-debug p"; the "-verbose"
    option only shows informational but noncritical messages
  - added optimizations for some library procedures
  - variable propagation for global variable accesses is now done in certain
    situations
  - the algorithmic complexity of the closure-conversion pass has been
    reduced which speeds up compilation noticably for large files
  - the "-uses" option handles whitespace in unit lists given on the
    command line (thanks to Santosh Rajan)
  - the alternative branch in a conditional is dropped when the condition
    is known to be a non-boolean value (suggested by Joerg Wittenberger)
  - implemented numerous fixes and improvements for flow analysis
  - fixed a bug in the compiler that could cause some variable bindings
    to be optimized away in certain situations involving inlining
  - added an experimental optimization called "clustering" (enable
    with the compiler option of the same name)
  - the optimizations done by the compiler are now listed as a comment
    in the generated C file
  - the type-information obtained during flow-analysis ("scrutiny") is 
    now used for performing type-sensitive optimizations of calls to
    most of the core-library procedures
  - deprecated the "constant" declaration specifier
  - "unboxing" optimization has been completely removed - the implementation
    was unreliable and unmaintainable; the "-unboxing" compiler option will
    still be accepted but will produce a warning
  - Peter Bex contributed an optimization to the analysis pass that 
    greatly reduces compile time for source code containing deeply nested
    lexical bindings
  - procedures that are known to have the value of a core library procedure
    that is a "standard" or "extended binding" will be inlined
  - enhanced line number tracking to get better error messages from
    the scrutinizer.
  - hygiene bugs related to compiler-syntax were fixed.
  - the local flow-analysis was sometimes reporting multiple warnings
    for the same type-conflict.
  - the time/space-complexity of some algorithms used in the compiler
    were reduced resulting in much better compile-times especially
    for large source files.

- Interpreter
  - ",q" leaves the currently active REPL invocation instead of
    terminating the process (as suggested by John Cowan)
  - ",m" properly switches between modules (thanks to Christian Kellermann)

- Core libraries
  - Cleaned up the set of available internal SRFI-feature-identifiers
  - Fixed bugs in "make-pathname" and "normalize-pathname" (thanks to Jim Ursetto)
  - The reader is now more consistent when parsing symbol- and keyword names 
    that are fully or partially escaped (thanks to Kon Lovett)
  - The printer now does a better job at escaping certain single-character
    symbol names
  - Unit "lolevel"
    - deprecated "null-pointer" and "null-pointer?"
  - Fixed a bug in the Windows implementation of "file-type" (thanks to
    Jim Ursetto)
  - Fixed a bug in the implementation of "current-milliseconds" that could
    result in integer-overflow
  - Fixed an incorrect type-check in "list-ref" (thanks to Sven Hartrumpf)
  - Disabled "-setup-mode" when compiling extensions for deployment (thanks
    to Ivan Raikov)
  - Got rid of some warnings in the C runtime system that were triggered on
    the SunPro C compiler (thanks to Joe Python)
  - Fixed bug in "string->number" that caused out-of-range characters to
    be accepted for base > 10 (thanks to Jim Ursetto)
  - added "foldl" and "foldr" procedures, which are more efficient and
    have a more consistent argument order than the corresponding
    SRFI-1 procedures
  - "shuffle" has been deprecated
  - added "queue-length"
  - "queue->list" allocates and returns a fresh list now
  - invoking a parameter-procedure with an argument will return the new
    value
  - added new procedure "quit"
  - port-procedures now check correctly for argument-ports being open 
    (thanks to Peter Bex)
  - "repl" accepts an optional evaluator procedure (suggested by John 
    Cowan)
  - added a setter procedure to "signal-handler" ("posix" unit)
  - EINTR is properly handled for input routines that may block
    waiting for input
  - the implementation of R5RS evaluation environments is now fully 
    standards compliant
  - "file-exists?" and "directory-exists?" work now properly for files
    > 2GB (EOVERFLOW handling in stat(3) system call)
  - fixed bug in implementation of "fifo?"
  - the procedure returned by "condition-predicate" accepts any type
    of argument now
  - blobs have a readable textual representation ("#{...}")
  - "find-files" does not follow symlinks by default (as it did previously)
  - also, the old non-keyword argument signature for "find-files" is not
    supported anymore
  - added "alist-update" ("data-structures" unit)
  - "irregex-replace" returns the original string instead of #f when the
    regex does not match
  - irregex "real" built-in utility pattern now accepts a leading sign
  - added "change-directory*" ("posix" unit)
  - number parsing has been made more reliable and standards compliant
  - deprecated "none?", "always?" and "never?"
  - library procedures that take ports as arguments now all perform checks
    on port-direction and open/closed state
  - "mutate-procedure" has been renamed to "mutate-procedure!" - the old
    name is still available but deprecated
  - deprecated C_hash_string and C_hash_string_ci functions in the C API in
    favor of the more secure versions C_u_i_string_hash, C_u_i_string_ci_hash
  - a number of bugs in the irregex regular expression engine have been
    fixed; it has been updated to upstream release 0.8.3
  - "with-input-from-file", "with-output-to-file", "with-input-from-pipe" and
    "with-output-to-pipe" now properly restore the standard input/output 
    ports in case the body thunk escapes
  - symbols with a single-char print-name where not always properly escaped
    when printed readably
  - the "make" facility of the "setup-api" module has been deprecated,
    please use the "make" extension when your egg requires this during
    setup.

- Core tools
  - "csc"
    - The environment-variables "CHICKEN_C_INCLUDE_PATH" and
      "CHICKEN_C_LIBRARY_PATH" can now be used to add default include-
      and link-directories to C-compiler invocations
    - "-O5" passed expensive optimization flags to the C compiler which
      could expose C-Compiler bugs, depending on the compiler version
      (thanks to Sven Hartrumpf for pointing this out).
    - "-rpath" is ignored on OS X (thanks to Kon Lovett).
    - Fixed handling of "-output-file" (it was being ignored)
  - "chicken-install"
    - Added option "-override", which allows retrieving extension-
      versions from a file - this may be useful to ensure specific 
      versions of a complete set of eggs are installed
    - Added option "-keep-installed"/"-x" that only installs explicitly
      named extensions given on the command line, if they are not
      already installed
    - Added option "-list" that lists all extensions available
    - Added option "-csi" to specify what interpreter should be used
      to execute the setup-script of an installed extension
    - Added option "-scan" that scans a local directory for the highest
      available extension versions available
    - Added option "-reinstall" that reinstalls all currently installed
      eggs, keeping their versions, if possible
    - Fixed bug with "chicken-install -test" when multiple extensions where
      given on the command line (thanks to Kon Lovett)
    - installing subdirectories works now on Windows.
    - fixed handling of "-force" when a "chicken" dependency version did
      not match
    - added new option "-show-foreign-depends" which lists foreign egg
      dependencies (if available)
    - added new option "-show-depends" which lists egg dependencies
    - added support for "or"-dependencies where a dependency is considered
      installed if one of a set of candidates is available
  - "chicken-profile"
    - fixed some bugs in the profiler and the runtime support code for
      profiling (thanks to Sven Hartrumpf)
    - fixed broken percentage calculation (thanks to "megane")
  - "chicken-status"
    - Added option "-list" that dumps versions of installed extensions
      in a format suitable for "chicken-install -override ..."
    - the "pattern" argument is now actually treated as a pattern and not
      as a regex

- Core syntax
  - "assert" shows the line number of the form when a second argument
    is not given or is a literal string
  - "parameterize" now correctly omits invoking the guard procedure when
    the old value is restored (thanks to Joo ChurlSoo)
  - added ":", "the" and "assume" syntax for declaring types
  - added "define-specialization" form to declare type-driven procedure
    call rewrites in compiled code

- Syntax expander
  - Fixed a bug that caused imported identifiers to leak into the 
    macroexpansion/compile-time environment (reported by Christian Kellermann)
  - Fixed a bug in the processing of extended lambda-lists (thanks to Peter Bex)
  - Peter Bex fixed a bug that caused bound variables to be incorrectly
    renamed in quoted literals (thanks to Matthew Flatt)
  - fixed devious bug in the invocation and generation of transformer
    procedures
  - using normal "lambda" forms as transformers for local or global
    syntax definitions is deprecated - one should use "syntax-rules",
    "er-macro-transformer" or "ir-macro-transformer" from now on

- Runtime system
  - fixed handling of "inf" and nan" floating-point predicates for Solaris
    (thanks to Claude Marinier)
  - support for re-loading of compiled files has now been completely 
    removed
  - the maximum length of strings is no longer limited to a 24-bit
    number on 64-bit architectures but can be 56 bits.
  - string-comparison handles embedded '\0' characters.
  - numerical predicates handle infinity and NaN correctly.
  - deprecated "[+-]nan", "[+-]inf" and other notations "accidentally"
    accepted by CHICKEN due to the underlying C library's strtod() function,
    standardizing on "[+-]nan.0" and "[+-]inf.0" from R6RS (and soon R7RS),
    when displaying numbers only these forms are generated now.
  - signals are queued to some extent and the interrupt handling has
    been cleaned up somewhat
  - the interpreter handles SIGINT directly - loading the "posix" unit
    is not needed anymore to handle this feature
  - changed default nursery size slightly and fixed a bug that caused
    incorrect (too small) nursery sizes on 64-bit platforms
  - deprecated the compiler option "-heap-initial-size", "-heap-growth"
    and "-heap-shrinkage"
  - the assembly-language stub routine for the implementation of "apply"
    was broken for Sparc64 systems and has been disabled for this platform
  - signal masks were accidentally reset upon GC for some platforms; use
    sigsetjmp/siglongjmp on BSD, Linux, MacOS X and Haiku
 
- Type system
  - added new type-specifiers "input-port", "output-port", "(list-of T)" 
    and "(vector-of T)"
  - the type-specifiers "(vector T ...)" and "(list T ...)" represent
    fixed size lists and vectors now
  - added qualified types ("forall"), optionally with type constrains
  - added the "define-type" special form and type-abbreviations
  - added "compiler-typecase", a compile-time typematching form

- Module system
  - Added "interfaces", which are named groups of exports
  - Added "functors", which are parameterized modules
  - Modules can now be aliased
  - New syntax:
    (define-interface NAME EXPORTS)
    (functor (NAME ...) EXPORTS ...)
  - Extended syntax of "module" for aliasing and functor-instantiation
  - the "scheme" module has been integrated into the core library and
    is not installed as a separate import library anymore
  - added core module "r4rs" containing only bindings for R4RS identifiers
  - added core module alias "r5rs" for "scheme" module
  - added "module-environment" which returns an evaluation environment
    for the bindings of a module
  - fixed bugs related to using "export"/"reexport" in combination with
    wildcard ("*") module export lists (thanks to "megane")

- Foreign function interface
  - locatives are allowed as arguments declared "c-pointer"
  - "int32" was not properly detected as a valid foreign type (thanks
    to Jim Ursetto)


4.7.0

- Build system
  - On BSD, libchicken.so is linked with -lpthread, as this seems
    to be required for linking libraries that require pthreads
  - The C header-files are now installed in a subdirectory below
    the "PRFIX/include" directory to allow installation of multiple
    chickens with different PROGRAM_PREFIX/PROGRAM_SUFFIX settings
    in the same prefix; to avoid conflicts with existing CHICKEN
    headers, it is recommended to completely remove any old
    installation before installing the new version
  - the PROGRAM_PREFIX and PROGRAM_SUFFIX configuration settings
    are applied to generated files and directories which allows
    perform differently named installations into the same PREFIX
  - increaded binary-compatibility version from 5 to 6, which
    means installed extensions in an existing installations will 
    have to be re-installed
  - bugfixes in mingw/msys makefiles
  - Sven Hartrumpf contributed a bugfix to the internal helper
    script for creating distribution directories
  - Peter Bex has cleaned up the makefiles heavily, making the
    build more maintainable and easier to modify; thanks to all
    who helped testing this new build
  - renamed the makefile to `GNUmakefile' to catch using the
    a make(3) other than GNU make
  - configuration-header fix for BSD systems (thanks to Peter Bex
    and Christian Kellermann)


- Core libraries
  - the `regex' library unit has been removed and is separately
    available as an extension which should be fully backwards-
    compatible
  - `irregex' is now a core library unit and replaces the  `regex' API
  - "extras" unit
    - fixed pretty-printer output of certain escaped character
      sequences inside strings (thanks to Mario Domenech Goulart,
      thanks to Kon Lovett for pointing out a missing test-file)
    - The pretty printer did not escape some control characters correctly
      (reported by Alan Post) 
    - control-characters in symbol-names are now properly escaped if
     the symbol is printed readably (thanks to Alaric Snell-Pym
     for pointing this out)
    - the deprecated `random-seed' function has been removed
  - "files" unit
    - fixed bug in `normalize-pathname'
    - `file-copy' and `file-move' check whether the source-file is a
      directory
    - `delete-directory' now optionally deletes directories recursively
  - "irregex" unit
    - Peter Bex has contributed various bugfixes and performance
      enhancements
  - "library" unit
    - Added "condition->list" (thanks to Christian Kellermann)
    - The reader accepts now escaped octal character codes in string 
      literals
    - Read-syntax can return zero values to indicate ignored objects
    - R5RS output output routines now always return a "void" result
    - "\|" was not correctly escaped when occurring inside
      symbol print names
    - added `condition->list', contributed by Christian Kellermann
    - added `equal=?'
    - removed deprecated `getenv', `left-section', `right-section',
      `project', `c-runtime' and `noop'
    - added missing import-library entry for `vector-copy!' (thanks
      to Jules Altfas)
    - circular or excessively deeply nested data generates a more
      useful error message when encountered by `equal?'
    - `list-tail' gives now a better error message when passed a
      non-list argument
    - fixed bug in `getter-with-setter' that modified the first
      argument if it already had a setter procedure attached
    - fixed incorrect size of internal data vector used in `time'
      (thanks to Kon Lovett)
  - "lolevel" unit
    - removed deprecated `global-bound?', `global-make-unbound',
      `global-ref' and `global-set!' procedures
    - added support for `pointer-vectors':
      -  make-pointer-vector
      -  pointer-vector?
      -  pointer-vector-length
      -  pointer-vector-ref
      -  pointer-vector-set!
  - "posix" unit
    - "close-input-pipe" did not return the status code of a
      terminated process on Windows (reported by Mario Domenech Goulart)
    - added `file-creation-mode' (suggested by Mario Domenech Goulart)
  - "setup-api" unit 
    - `required-extension-version' and `required-chicken-version' have
       been deprecated
  - "srfi-18" unit
    - removed deprecated `milliseconds->time' and `time->milliseconds'
      procedures
    - `make-mutex' incorrectly created mutexes as initially owned by
      the current threads (thanks to Joerg Wittenberger) 
    - the file-descriptor handling in the scheduler has been simplified
      and performs some sanity checks
    - deadlock in the scheduler now terminates the process instead of
      attempting to throw an error
    - added some sanity checks to the scheduler
  - "tcp" unit
    - Fixed bug in "tcp-abandon-port" (reported by Jim Ursetto)
  - "utils" unit
    - `compile-file' now returns `#f' when the compilation fails,
       instead of raising an error


- Compiler
  - Removed unreliable lambda-lifting optimization (now, really!);
    the "-lambda-lift" option is still accepted but produces a
    warning
  - When "-scrutinize" is given, installed ".types" files will be
    automatically consulted for extensions and used units
  - Fixed optimizer bug in handling of "let" forms with multiple
    bindings which could result in toplevel assignments being
    silently dropped (reported by Moritz Heidkamp)
  - the `-accumulate-profile' option did not provide a way to
    specify the target profile data file - now `-profile-name'
    must always be given when accumulated profiling is done
    (thanks to Taylor Venable)
  - added `-module' option, which wraps the code into an implicit
    module
  - removed check for unsafe toplevel calls in safe mode
  - intrinsic handling of `exact->inexact' and `string->number' is
    now more efficient
  - fixed bug in leaf-routine optimization (thanks to David
    Dreisigmeyer)
  - unit-toplevel entry-points are now named differently, which
    may break binary-compatibility with existing compiled Scheme
    code modules
  - fixed invalid dropping of unused external entry-points in
    block-mode
  - fixed incorrect lambda-list check in scrutinizer (thanks to
    Alan Post)
  - Kon Lovett reported numerous bugs in the type-database used
    by the scrutinizer
  - `-fwrapv' is disabled on OpenBSD, since the default compiler
     does not support this option (thanks to Christian Kellermann)
  - on Solaris `gcc' is used by default, override `C_COMPILER'
    to use the Sun compiler instead
  - declaring a function `notinline' will prevent direct-call
    optimization for known procedure calls
  - the implementation of overflow-detection for arithmetic operations
    on fixnums have been replaced and now allow using the full 63-bit
    range of fixnums on 64-bit systems
  - fixed serious inlining-bug (thanks to Sven Hartrumpf)
  - constant-folding in the compiler has been simplified and
    is more reliable (thanks to Sven Hartrumpf)
  - optimization-levels 3 and higher imply `-unboxing -inline-global'
  - added new declaration `unsafe-specialized-arithmetic' which allows
    optimizing unboxed floating-point arithmetic in safe mode
  - removed `scrutinize' declaration
  - the warning shown when unimported identifiers are used in compiled
    modules now also shows the name of the procedure where the
    identifier is referenced (suggested by Alaric Snell-Pym)


- Documentation
  - Added list of installed files to README
  - Documented remaining "c...r" standard procedures (thanks to 
    Juergen Lorenz)
  - The manual is now installed in HTML format in
    PREFIX/share/chicken/doc, many thanks to Jim Ursetto for
    contributing is excellent `manual-labor' extension which made
    this possible


- Foreign function interface
  - Added support for missing "(const [XXX-]c-string)" foreign type
    (thanks to Moritz Heidkamp)
  - removed deprecated `pointer', `nonnull-pointer', `byte-vector'
    and `nonnull-byte-vector' types
  - added missing result-type handling for `unsigned-integer64'
    (thanks to Moritz Heidkamp)
  - added `foreign-type-size' macro
  - added the new foreign type `size_t' (suggested by Moritz 
    Heidkamp)
  - added the missing `unsigned-integer64' foreign type (thanks
    to Moritz for catching this)
  - added new foreign type `pointer-vector' which maps to `void **'
    and provided a low-level API in the `lolevel' library unit for
    manipulating pointer vectors


- Runtime system
  - Fixed typo in "runtime.c" (thanks to Sven Hartrumpf)
  - Little-endian detection on MIPS systems was not correct (thanks
    to Christian Kellermann)
  - Fixed bug in handling of runtime-options with arguments (also
    reported by Christian Kellermann)
  - `equal?' does not compare procedures recursively anymore
  - fixed incorrect use of alloca.h on OpenBSD (thanks to
    Christian Kellermann and Alan Post)
  - checks for NaN and infinity are now done using ISO C99
    operations, which required various changes to `chicken.h'
    to make the code compile in ISO C99 mode
  - remaining debris regarding MSVC builds has been removed
  - fixed bug in argument-type check for 64-bit integer (thanks
    to Kon Lovett)
  - increased default trace-buffer size from 10 to 16
  - fixed bug in low-level termination routine (thanks to
    Jeronimo Pellegrini)
  - the scheduler handles violations of internal invariants
    regarding threads slightly more gracefully (thanks to Jim
    Ursetto)
  - fixed broken sleep-time conversion (thanks to Karel Miklav)
  - repaired broken handling of multiple finalizers that referred
    to the same object (reported by Moritz Heidkamp)
  - fixed problem with reader and escaping of single-char symbols


- Syntax expander
  - For-syntax syntax definitions where not correctly retained inside
    modules
  - Peter Bex fixed various critical bugs in the expander
  - The simplification for quasiquote expressions was unable
    to handle certain circular data (reported by Moritz Heidkamp)
  - `syntax-rules' now supports tail-patterns and is now fully
    SRFI-46 compatible - many thanks to Peter Bex for implementing
    this
  - Peter Bex provided a bugfix for resolution of primitive imports
  - handling of internal definitions with shadowed defining
    forms is now done correctly - fix once again from Peter Bex
  - corrected non-standard behaviour of quasiquote with respect
    to nested quasiquotations - another bugfix by our mighty macro
    master
  - removed stub-implementation of `define-macro'
  - handled case where a global redefinition of `cons' influenced
    a non-inlined internal use in the expander (thanks to David
    Steiner)
  - `define-record' now allows defining SRFI-17 setter procedures
    for accessing slots
  - the expansion of DSSSL lambda-lists uses now `let-optionals*'
    internally instead of `let-optionals' and so allows
    back-references to earlier formal variables; this also results in
    faster and more compact code for argument-list destructuring
    (thanks to Alan Post)
  - new "implicit renaming" macro facility contributed by Peter Bex
    (see `ir-macro-transformer')
  - parameters are now settable and can be modified using `set!'
    (SRFI-17)
  - added a SRFI-17 setter to `list-ref'
  - added literal blob syntax ("#{ ... }")


- Tools
  - chicken-install
    - option "-deploy" does not compile deployed extensions with
      "-setup-mode" anymore to avoid problems with dynamic loading on
      some platforms (specifically Mac OS X)
    - option "-deploy" option did not copy the correct library
      (including the version-number) (thanks to Christian Kellermann)
    - added support for proxy-authentification (thanks to Iruata Souza)
    - when installing from a local directory `chicken-install' now
      removes existing `*.so' files in that location to avoid stale
      binaries when the `make' syntax is used in setup scripts
  - chicken-bug
    - removed disabled e-mail support
  - csc
    - removed `-static-extension' option
    - removed deprecated `-windows' option
    - fixed incorrect use of `chicken.rc' on non-Windows platforms
      in `-gui' mode (thanks to "ddp")
    - when compiling in C++ mode, the compiler will be called with the
      `-Wno-write-strings' option
    - `-frwapv' has been added to the default C compiler options
  - csi
    - the ",m" toplevel command now accepts "#f" to switch back to
      the initial empty module context (suggested by Christian Kellermann)
    - fixed broken `,g' toplevel command
    - deprecated `script' feature identifier (use `chicken-script'
      instead)
    - options `-p' and `-P' and `-e' imply `-no-init'
    - the call-trace reported will not include exception-handler code
      anymore (suggested by Christian Kellermann)



4.6.0

- the licenses used in all components of the core system have
  been collected in the LICENSE file (Thanks to Peter Bex)
- Added new compiler option `-no-module-registration' which
  omits generation of module registration code, even when
  generation of import libraries has not been enabled
- running `chicken' without arguments now hints at the
  existence of `csi' and `csc'
- `caar', `cdar' and `cddr' generate faster code
- calls to `list', `vector' and the internal structure
  allocation primitive that take 1 to 8 arguments generate
  faster code
- `chicken-install' now checks the version of the setup
  configuration file `setup.defaults'
- added option `-exact' to `chicken-status' and `chicken-uninstall',
  which treats the pattern argument as the literal name of the
  extension to be listed/deinstalled
- `assert' shows line-number information, if available
  (suggested by Alejandro Forero Cuervo)
- interpreted code records the lexical-environment at call-
  sites, which can in case of an error be inspected with the
  new `,c', `,f' and `,g' csi toplevel commands
- the evaluation-result history in `csi' can be inspected and
  cleared (to reduce memory load) with the toplevel commands
  `,h' and `,ch'
- unit `data-structures': deprecated `left-section' and 
  `right-section'
- fixed bug that caused the static syntax-environment of 
  syntax exported by a module to be incomplete
- module `setup-api': Documented the `version>=?' and
  `extension-name-and-version' proceedures
- unit `posix': `utc-time->seconds' is considerably 
  faster on Mac OS X (thanks to Jim Ursetto);
  added new procedure `file-type'
- the `time' macro now shows the correct number of minor
  garbage collections
- the immediate-object check inside the marking procedure
  of the garbage collector has been manually inlined which
  results in a significant GC speedup, depending on memory
  load
- unit `srfi-18' and `scheduler': various bugfixes (thanks
  to Joerg Wittenberger)
- unit `srfi-4': bugfix in 8-bit vector allocation routines
  (thanks to Kon Lovett)
- added `-:H' runtime option to dump heap state on exit
- fixed missing change in Makefile.cygwin (thanks to John Cowan)
- fixed bug in `let-optionals' macro that caused problems when the
  rest-variable was actually named `rest' (thanks to Alejandro
  Forero Cuervo)
- when Scheme files are translated to C++ or Objective-C, `csc'
  will register the feature-identifiers `chicken-scheme-to-c++'/
  `chicken-scheme-to-objc' ar compile-time
- fixed bug in expansion of `#!key' parameters in lambda-lists
- debug-output for forcing finalizers on exit goes to stderr now
  (thanks to Joerg Wittenberger)
- the installation routines for extensions automatically add
  version-number information if none is given in the extension
  property list (suggested by Alejandro Forero Cuervo)
- `standard-extension' accepts `#f' now for the version number
  and will use the version that has been obtained via
  `chicken-install'
- `fifo?', `symbolic-link?', `directory?', `regular-file?', `socket?',
  `character-device?' and `block-device?' now accepts file-descriptors
  or filenames
- `find-files' takes keyword arguments, now (including the options
  to process dotfiles and ignore symbolic links); the old argument
  signature is still supported but deprecated
- removed dependency on `symbol-append' in some macros used in
  srfi-4.scm to be able to compile the system with older chickens
- fixed bug in script that generates development snapshot
- added build-variable `TARGET_FEATURES', which can be used to pass
  extra options enabling or disabling fetures for a system configured
  for cross-compilation
- added compiler and interpreter option `-no-feature FEATURENAME' that
  disables predefined feature identifiers
- code compiled with interrupts disabled will not emit inline files
  for global inlining since they may execute in a context where 
  interrupts are enabled
- the `setup.defaults' file that holds download sources for 
  `chicken-install' now allows aliases for locations
- CHICKEN systems build from cross-compilation now by default 
  transparently build and install extensions for both the host
  and target parts of the cross-compilation setup; the options
  `-host' and `-target' can now be used to selectively build
  an extensions for the host- and the target system, respectively
- also added `-host' and `-target' options to `chicken-status' and
  `chicken-uninstall'
- `chicken-install' now respects the `http_proxy' environment variable
  (contributed by Stephen Eilert)
- the `srfi-4' library unit has been heavily cleaned up and optimized
- optimization-level 3 now enables global inlining
- fixed the case that declarations listing global identifiers did not
  correctly rename them
- deprecated `-N' option shortcut for `-no-usual-integrations' option in
  `csc'
- `csi' now offers a toplevel command `,e' for invoking an external
  editor (suggested by Oivind Binde)
- the `describe' command in `csi' now detects many circular lists
  (contributed by Christian Kellermann)
- `csi' doesn't depend on the `srfi-69' library unit anymore
- when a closing sequence delimiter is missing or incorrect, the
  reader also reports the starting line of the sequence
- the reader signals an error when a file contains certain characters
  that indicate that it is a binary file
- procedure-information shown by the printer for procedures is now
  corrected for some library procedures that where missing the correct
  information; `getter-with-setter' copies procedure-information objects
  into the newly created accessor procedure, if available
- calls to some known pure standard- or extended procedures are removed, if
  the procedures are called with side-effect free arguments and the
  result is not used (this can also by enabled for user procedures with
  the `constant' declaration)
- fixed some build-system bugs related to installation
- fixed a problem in the C runtime code that prevented it to be compileable
  without a configuration header-file
- the makefile-target to build a bootstrapping `chicken' executable 
  performs multi-stage build now
- changed error message when required extension is out of date (thanks to
  Mario Goulart)
- documented library units loaded by default in `csi' (thanks to Moritz
  Heidkamp)
- added `boot-chicken' makefile target to simplify bootstrapping
  the system from sources and documented this in the README
  (suggested by Jim Ursetto)
- CHICKEN can now be built on haiku (contributed by Chris Roberts)
- on Solaris, the system can be compiled with the SunPro C compiler
  (thanks to Semih Cemiloglu)
- removed the `-disable-warnings' compiler option and `disable-warnings'
  declaration specifier
- `fx/' and `fxmod' generate now faster code in safe mode
- cleaned up manual pages
- slightly optimized variable- and procedure-access
- in the compiler `-debug-level 2' implies `-scrutinize'
- internal compiler-transformation for `for-each' and `map'
  apply now with any expression as the procedure argument
- the compiler warns about non-intrinsic exported toplevel variables
  which are declared to be safe
- `csc' didn't handle the `-verbose' option (thanks to Mario Goulart)
- the `,d' command in `csi' now detects circular lists (thanks to
  Christian Kellermann)
- strings passed to C runtime functions and which are converted to
  0-terminated C strings are now checked for not containing embedded
  `\0' characters (thanks to Peter Bex)
- errors in user-defined record printers are caught and shown in the 
  output instead of throwing an error to avoid endless recursion when
  an error message is printed
- a feature identifier named `chicken-MAJOR.MINOR' is now defined 
  to simplify conditionalization of code on the CHICKEN version
- `getter-with-setter' copies the lambda-information (if available) from
  the getter to the generated procedure
- `time' uses a somewhat more concise output format and outputs timing
  information to stderr instead of stdout
- added a new chapter on cross-development to the manual
- added the `safe-globals' declaration specifier
- split up manual chapter `Modules and macros' into two chapters
  (named `Modules' and `Macros', respectively - suggested by
  Mario Goulart)
- the last 5 non-precompiled regular expressions are now internally 
  cached in compiled form, which speeds up repeated matching of
  the same uncompiled regular expression dramatically
- added the new procedure `yes-or-no?' to the `utils' library unit
- added a `bench' makefile target that runs some non-trivial
  benchmark programs
- added `install-target' and `install-dev' makefile target for
  installing only target system libraries in cross-mode and
  development files (static libraries and headers)
- added `[-]no-procedure-checks-for-toplevel-bindings' compiler
  option and declaration
- usage of unimported syntax in modules gives more usable
  error messages; in particular, used but unimported FFI forms are 
  now detected
- invalid syntactic forms (mostly `()') encountered by the compiler
  or interpreter show the contextual form containing the expression,
  or, if indicated by the context warns about missing imports
- simplified manual pages of all core tools - they now refer to
  the output shown by invoking `<tool> -help'
- added new option `-feature FEATURE' to `chicken-install' tool
  to pass feature-identifiers to invocations of `csc'
- removed deprecated `-host-extension' option from `chicken-install'
- `chicken-status' in a system built for cross-compilation now 
  lists extensions installed in the target prefix, unless the
  new `-host' option is given on the command line
- `chicken-uninstall' in a system built for cross-compilation now 
  removes extensions installed in the target prefix, unless the
  new `-host' option is given on the command line
- added missing entry for `finite?' to the `chicken' module
  exports
- added new procedure `port-closed?' to the `library' unit
  (contributed by Peter Bex)
- added new procedure `symbol-append' to the library unit
- the compiler-option `-optimize-level 0' is equivalent to
  `-no-compiler-syntax -no-usual-integrations`
- internal rewritings of `map' and `for-each' ensure correct
  evaluation order of the arguments and does a better job
  at detecting non-list arguments (thanks to Jim Ursetto)
- `void' now takes arbitrary arguments and ignores them
- deprecated `noop' (from the `data-structures' unit) which
  is now replaced by `void'
- the `time' macro now performs a major garbage collection
  before executing the contained expressions and writes
  the timings in a more compact format to the port given
  by `(current-error-port)' instead of the standard output
  port
- definitions of the form `(define define ...)' and
  `(define-syntax define-syntax ...)' now trigger an error,
  as required by R5RS (thanks to Jeronimo Pellegrini and Alex
  Shinn)
- deprecated `random-seed' from the `extras' unit, since it
  is identical to `randomize'
- added new procedure `create-temporary-directory' to the
  `files' unit
- deprecated the optional path separator argument to
  `make-pathname'
- slightly improved the performance of keyword argument
  processing
- removed the deprecated `canonical-path' and `current-environment'
  procedures from the `posix' unit
- warnings that mostly refer to programming style issues are
  now coined `notes' and are only shown in the interpreter
  or when debug-mode is enabled or when scrutiny is enabled
  when compiling

4.5.0

- internal fixes of handling of alternative installation-prefix
  in setup-api
- certain compiler-warnings that are in really just notes
  and don't indicate a possible error (like reimport of
  identifiers) are only shown with -S or in verbose mode
- fixed handling of VARDIR in `chicken-install' (thanks to
  Davide Puricelli)
- `chicken-install -test' doesn't runs tests for dependencies
- when a non-else clause follows an else-clause in `cond', 
  `case' or `select' a warning (note) is shown in verbose
  mode
- removed the deprecated `define-extension' and
  `define-compiled-syntax'
- `chicken-uninstall' now always asks before removing 
  extensions, unless `-force' is given
- improved performance of keyword-argument processing slightly
- `export' outside of a module definition has no effect
- `number->string' now accepts arbitrary bases between 2 and 16
  (thanks to Christian Kellermann)
- fixed `standard-extension' in `setup-api' module
- literal constants keep their identity, even when inlined
- Unit library: added `fxodd?' and `fxeven?'
- All hardcoded special forms have been replaced with
  syntax definitions that expand into internal forms, this
  allows redefinition and shadowing of all Scheme core forms
- faster implementations of `get' and `put!'
- faster implementation of `assq' in unsafe mode
- the `-sx' option prefixes each output line with `;'
- slightly better expansion performance
- more documentation of the C API (thanks to Peter Bex)
- `module' supports a shorthand form that refers directly
  to a file to be included as the module body
- added runtime option `-:G' to force GUI mode (on platforms
  that distinguish between GUI and non-GUI applications)
- removed the unsafe runtime library (`libuchicken'), this
  simplifies and speeds up the build and reduces the risk
  of executables loading library units from different
  variants of the runtime system
- removed the `-unsafe-libraries' option from `chicken'
  and `csc'
- removed bootstrapping target and bootstrapping files from
  development repository; to bootstrap the system, either
  use a release or development-snapshot tarball or fetch
  a statically linked precompiled `chicken' binary from
  http://chicken.wiki.br/chicken-projects/bootstrap/
- Jim Ursetto provided some fixes for building universal
  binaries on Mac OS X
- `csc' now compiles and links Windows resource (.rc) files
  when given on the command line
- `chicken-install' and `chicken-uninstall' have an embedded
  manifest that suppresses the elevation dialog on Windows
  Vista and later when UAC is activated (Thanks to Thomas Chust)
- the `install' program is not used in the build on mingw
  and mingw/MSYS platforms, since this is broken on older
  mingw versions
- line-number-information is now properly handled (in the
  few places where it is used) correctly for included files;
  the source file is given in trace-output in addition to
  the line number
- removed compiler warning for shared objects compiled in
  unsafe mode
- unboxing is now only done in unsafe mode
- in unsafe mode, pointer-accessors from the `lolevel' unit
  are now handled intrinsically by the compiler
- `chicken-install' accepts now relative pathnames for the
  `-prefix' option
- `define-record-type' now optionally allows using SRFI-17
  setters as record-field modifiers
- `integer?' returns `#f' for NaN and infinite numbers
- `csc' now has an `-no-elevation' option for embedding a
  manifest that prevents the elevation dialog on Windows
  Vista and later when IAC is activated
- the `,d' csi command displays qualified symbols properly
- symbols starting with the `#\#' character trigger an
  error when encountered by the reader
- Unit posix: `glob->regexp' now always returns a regular
  expression object or optionally an SRE
- Unit posix: `terminal-port?' and `terminal-size' have been
   implemented for Windows, the latter always returns `0 0',
  though (thanks to Jim Ursetto)
- Unit regex: `regexp' now accepts a regular expression
  object as argument
- Unit regex: removed `glob?'
- fixed bug in `chicken-install'/`chicken-uninstall' and
  `chicken-status' that prevented collapsed command-line
  options to be handled correctly.
- disabled runpath-fix for deployed applications for netbsd
  (but resurrected providing a runpath at all, thanks to 
  Peter Bex)
- Peter Bex provided documentation for the `C_closure' C API
  function

4.4.0

- the system can now be built with llvm-gcc and/or "clang" (the
  LLVM C compiler which doesn't use the GNU C frontend)
- added new option `-trunk' to `chicken-install', which forces
  building and installing the development version of extensions
  in combination with `-t local'
- added new option `-deploy' to `chicken-install', which builds
  extension for use in "deployed" applications (see below)
- added option `-deploy' to `csc', the compiler driver. With this
  option `csc' can build fully self-contained application bundles
  and double-clickable Macintosh GUI apps; see the "Deployment"
  manual chapter for more information
- the directory given to the `-prefix' option of `chicken-install'
  may now be a relative pathname.
- removed GUI-specific runtime library (`libchicken-gui') from
  Windows build - GUI- and non-GUI applications now use the same
  runtime library
- special forms of the foreign-function interface have been replaced
  with an internal form and syntax to allow renaming and shadowing of
  these forms
- the new `-private-repository' option in `csc' compiles executables
  with the extension-repository path set to the directory from which
  the program was started
- `csc': deprecated the `-W' and `-windows' options, added `-gui' as
  a platform-independent replacement
- `require-extension'/`use' accepts now import-specifications
- user-defined extension-specifiers and `set-extension-specifier!'
  have been removed
- `delete-file[*]', `rename-file', `create-directory', `file-copy',
  `file-move', `delete-directory' and `change-directory' return their
  argument/destination filename on success
- added the missing procedure `condition-variable-name' to the
  srfi-18 library unit (Thanks to Joerg Wittenberger)
- the `glob?' function from the `regex' unit has been deprecated
- added the procedure `scan-input-lines' to the `utils' library unit
- added new runtime option `-:g' which enables GC debugging output
- reclamation of unused symbols in "symbol-gc" mode (`-:w') now only
  takes place for symbols with an empty property-list
- on Windows loading of code compiled with [non-]GUI runtime libraries
  will fail and produce an error message when the loading executable
  is linked with a different runtime system
- on Windows, GUI libraries were not correctly linked by `csc'
- unit posix: added setter for `file-modification-time'
- the banner shows the branchname of the build, unless it's "master"
- the `-no-install' option to `chicken-install' is ignored when
  building/installing dependencies
- `chicken-uninstall' takes a glob instead of a regular expression as
  argument
- the rename and compare functions for low-level macro-definitions 
  accept now arbitrary s-expressions and renames/compares them recursively
- `number->string' handles negative-numbers with bases different from 10
  correctly (thanks to Peter Danenberg)
- removed deprecated `setup-install-flag' and `setup-verbose-flag' from
  the `setup-api' module
- added new option `-repository' to `chicken-install' (Thanks to Christian
  Kellermann)
- removed `chicken-setup' stub program
- fix to `csc' to use the correct library when fixing dynamic load paths
  (Thanks to Derrell Piper)
- removed html documentation from distribution (the wiki manual will
  now be installed)
- fixed bug in `reexport' which caused syntax not to be correctly
  reexported
- previous assignments to a toplevel variable that are separated by
  side effect free expressions are removed
- fixed windows version of `find-files' (thanks to Jim Ursetto)
- documentation for extensions is not installed automatically by
  `chicken-install' anymore
- changed binary version from "4" to "5", because the new runtime
  libraries are not binary-compatible with previous releases; this
  means all eggs have to be reinstalled and existing programs be
  recompiled!
- added unboxing pass to compiler which results in partially dramatical
  performance improvements for unsafe floating-point-intensive code;
  unboxing is enabled on optimization levels 4 and 5
- removed rest-argument-vector optimization as it could conflict
  with inlining (thanks to Sven Hartrumpf)
- renamed `pointer-offset' to `pointer+' and deprecated `pointer-offset'
- toplevel assignments that have no other side-effects can be eliminated
  if it can be shown that the value is not used (the compiler will
  generate a warning in this case)
- removed deprecated `-quiet' option in `chicken' program
- removed deprecated `run-time-macros' declaration
- removed deprecated `-v2' and `-v3' options in `csc' program
- removed deprecated `list-of' function (it is exclusively available
  as `list-of?' now)
- removed deprecated `stat-...' functions in posix library unit
- removed deprecated `for-each-line' and `for-each-argv-line' procedures
  in utils library unit
- added `fpinteger?' and `fpabs'
- deprecated `define-compiled-syntax'
- added new floating-point primitives `fpsin', `fpcos', `fptan',
  `fpasin', `fpacos', `fpatan', `fpatan2', `fpexp', `fplog', 
  `fpexpt' and `fpsqrt'
- heavy cleanup of floating math functions which gives much better performance,
  especially for code compiled in unsafe mode
- calling `assert' with a single argument shows the tested expression
  on failure
- various bugfixes and cleaning up

4.3.0

- fixed bug in `move-memory!' that caused negative offsets to be accepted
  (thanks to Jim Ursetto)
- removed tracing facility and apply-hook (see the "trace" egg
  for a replacement for tracing and breakpoints)
- chicken-install(1): renamed `-host-extension' option to `-host'
- added support for a make(1) configuration file ("config.make")
- `chicken-install' now allows specifiying a proxy for retrieving
  extensions over HTTP (thanks to Nicolas Pelletier)
- fixed bug in `cond-expand' that incorrectly renamed feature-identifiers
  if the form was the product of a syntax expansion (reported by Thomas
  Bushnell)
- import-libraries are only generated by the compiler if they don't exist
  yet and if the content has actually changed (this simplifies makefile-
  rules in some cases)
- it is now possible to pass a config-file to `make(1)' instead of specifying
  all build-options as variables on the command-line (see README)
- removed compiler options for "benchmark-mode" and replaced them with a
  new optimization level (5) (note that `-O5' does not imply fixnum mode
  anymore)
- `hen.el' and `scheme-complete.el' are not bundled with the core system
  anymore - `hen.el' is currently not maintained, and `scheme-complete.el'
  has its own release cycle; both files are available, see
  http://chicken.wiki.br/emacs
- removed meaningless benchmark suite and cleaned up
- added optional argument to `grep' that allows applying a function
  to each matched item (contributed by Tony Sidaway)
- added extension-property `import-only', which makes it possible to
  create extensions that have no runtime part
- the argument to `seconds->string', `seconds->utc-time' and 
  `seconds->local-time' is now optional and defaults to the value
  of `(current-seconds)' (suggested by Mario Goulart)
- removed read-syntax for `syntax' form
- fixed bug in `get-condition-property'
- fixed bug in windows version of `process-execute'
- TCP timeouts throw exception of kind `timeout' to allow
  distinguishing between timeouts and other errors
- removed some internal functions that manipulate environments
- fixed bugs in `standard-extension' (`setup-api' module) and added keyword 
  arguments for building static extensions and adding custom properties
- when cross-compiling, `chicken-install(1)' doesn't pass `-setup-mode'
  (the host tools should not attempt to load target binaries)
- `installation-prefix' in the `setup-api' module was not always correctly
  set
- the `-force' option in `chicken-install(1)' overrides the CHICKEN version
  check
- disabled e-mail feature in `chicken-bug(1)', since it doesn't work
  anyway, in the moment
- fixed bug in `reexport' that made it impossible to reexport core library
  definitions
- fix in optimizer that sometimes caused C functions for inlined
  procedures to be emitted multiple times (Thanks to Joerg Wittenberger)
- documented `define-compiler-syntax' and `let-compiler-syntax'
- printer for hash-tables shows current number of stores items
- when upgrading during installation of a dependency `chicken-install'
  shows the version to upgrade to (Thanks to Christian Kellermann)
- Updated scheme-complete (Thanks to Alex Shinn)
- fix for pathnames with whitespace in 'runtests.sh' on Windows
- fix for 'normalize-pathname' with absolute pathname argument
- added 'decompose-directory' to unit files
- fix for 'local-timezone-abbreviation' - wasn't using the current time
  so tz-name constant
- deprecated 'make-pathname' separator argument

4.2.0

- added compiler option `-emit-all-import-libraries'
- added `reexport'
- added compiler and interpreter option `-setup-mode'
- various minor performance improvements
- fix for 'create-directory' when parents wanted
- `for-each-line' and `for-each-argv-line' have been deprecated
- chicken-install tries alternative servers if server responds with error
- fixed load bug (ticket #72)
- new library procedure `get-condition-property'
- many mingw build fixes (thanks tp Fadi Moukayed)
- setup-api: deprecated `cross-chicken' (use `cond-expand' or
  `feature?' instead)
- added topological-sort to data-structures unit; chicken-install
  sorts dependencies before installing them
- "-optimize-level 2" enables inlining by default
- disable executable stack in assembly code modules (patch by
  Zbigniew, reported by Marijn Schouten)
- csc now always exits with a status code of 1 on errors (patch by Zbigniew)

4.1.0

- The new parameter "parantheses-synonyms" and the command-line
  option "-no-parantheses-synonyms" allow disabling list-like behaviour
  of "{ ... }" and "[ ... ]" tokens
- The new parameter "symbol-escape" and the command-line
  option "-no-symbol-escape" allows disabling "| ... |" symbol escape
  syntax
- Added command-line option "-r5rs-syntax" to disable CHICKEN-specific
  read-syntax
- Removed "macro?" and "undefine-macro!"
- Support for Microsoft Visual Studio / MSVC has been dropped
- The compiler provides now a simple flow-analysis pass that does
  basic checking of argument-counts and -types for core library procedure
  calls (new option "-scrutinize")
- New compiler-options "-no-argc-checks", "-no-bound-checks",
  "-no-procedure checks", "-no-procedure-checks-for-usual-bindings",
  "-types TYPEFILE" and "-consult-inline-file FILENAME"
- Added a "chicken-setup" stub-application to catch incorrect use of
  this tool (which has been replaced in 4.0.0 with "chicken-install")
- Changed "setup-install-flag" and "setup-verbose-flag" to
  "setup-install-mode" and "setup-verbose-mode" in "setup-api" module,
  the old names are still available but deprecated
- Posix unit:
  added "socket?", "block-device?" and "character-device?", deprecated
  redundant "stat-..." procedures
- Added "directory-exists?"
- "(for-each (lambda ...) X)" is compiled as a loop
- The argument-count check for format-strings for "[sf]printf" with a constant 
  string argument is done at compile-time

4.0.0

- removed `apropos' and `apropos-list' from the "utils" library unit;
  available as an extension
- removed texinfo and PDF documentation - this will possible be added back 
  later
- replaced PCRE regex engine with Alex Shinn's "irregex" regular expression
  package
- removed `-extension' option
- removed `-static-extensions' csc option and added `-static-extension NAME'
- `regex' unit: removed `regexp*' and `regex-optimize'
- added `CHICKEN_new_finalizable_gc_root()'
- `length' checks its argument for being cyclic
- removed custom declarations and "link-options" and "c-options" declarations
- deprecated "-quiet" option to "chicken" program
- added "-update-db" option to chicken-install
- the compiler now suggests possibly required module-imports
- moved non-standard syntax-definitions into "chicken-syntax" library unit
- the pretty-printer prints the end-of-file object readably now
- alternative conditional execution paths have separate allocation computation
  (previously the allocation of all alternatives was coalesced)
- removed unused "%kmp-search" from "srfi-13" library unit
- expander handles syntax-reexports and makes unexported syntax available
  for exported expanders in import libraries
- added checks in some procedures in the "tcp" library unit
- the macro system has been completely overhauled and converted 
  to hygienic macros
- a macro-aware module system has been added
- added "-sx" option to csi
- removed the following deprecated functions:
   [un]shift!
   andmap ormap
   byte-vector? byte-vector-fill!
   make-byte-vector byte-vector
   byte-vector-set! byte-vector-ref 
   byte-vector->list list->byte-vector
   string->byte-vector byte-vector->string
   byte-vector-length
   make-static-byte-vector static-byte-vector->pointer
   byte-vector-move! byte-vector-append!
   set-file-position! set-user-id! set-group-id!
   set-process-group-id!
   macro? undefine-macro!
- the situation-identifiers "run-time" and "compile-time" have
  been removed
- the compiler options "-check-imports", "-import" and "-emit-exports"
  have been removed
- new procedures:
  strip-syntax
  expand
- new macros
  define-syntax
  module
  export
- the following macros have been removed:
    define-foreign-record
    define-foreign-enum
    define-macro
    define-extension
- "local" mode, in which locally defined exported toplevel variables can
  be inlined
- new options and declarations "[-]local", "[-]inline-global" and "-emit-inline-file"
- optimization levels changed to use inlining:
  -optimize-level 3: enables -inline -local (but *not* -unsafe)
  -optimize-level 4: enables -inline -local -unsafe
- increased default inlining-limit to 20
- support for cross-module inlining
- "make <VARIABLES> bench" runs the benchmark suite
- "chicken-setup" has been replaced by new command line tools
  "chicken-install", "chicken-uninstall" and "chicken-status", which are
  more flexible and allow greater freedom when creating local or application-
  specific repositories
- extension-installation can be done directly from SVN repositories or a local
  file tree
- enabled chicken mirror site as alternative download location