File: NEWS

package info (click to toggle)
gnu-smalltalk 3.2.4-2.1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 32,688 kB
  • ctags: 14,104
  • sloc: ansic: 87,424; sh: 22,729; asm: 8,465; perl: 4,513; cpp: 3,548; xml: 1,669; awk: 1,581; yacc: 1,357; makefile: 1,237; lisp: 855; lex: 843; sed: 258; objc: 124
file content (3127 lines) | stat: -rw-r--r-- 116,269 bytes parent folder | download | duplicates (2)
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
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
List of user-visible changes in GNU Smalltalk

NEWS FROM 3.2.3 TO 3.2.4

o   Autoload is extended to allow plugging in arbitrary loaders.

o   Array items in a CStruct didn't work, this is fixed now.

o   DLD could have problems when the same library was requested multiple
    times.

o   Errors in the bind() system call were not detected correctly; this
    has been fixed.

o   Fixes for platforms with 113-bit long doubles.

o   Fixes to Delay in the presence of delays with the exact same expiration.

o   Fixes to the HTTP package, including correct flushing of POST requests
    and doesNotUnderstand exceptions when the host did not exist.

o   GLUT bindings now build correctly under Windows.

o   Many smalltalk-mode improvements.

o   New methods: TextCollector>>#critical:, 

o   nil can be passed to a C function accepting a #cObjectPtr (i.e.
    void **) argument.

o   SocketAddress>>#allByName: returns nil now, instead of an empty array,
    when getaddrinfo succeeds but returns no address for the requested
    address class.

o   SocketAddress>>#byName: returns addresses for the default address class
    when the receiver is SocketAddress (and not a subclass).

o   Support for older versions of GnuTLS.

o   Swazoo's static content serving was broken and has been fixed.

o   The GST_PACKAGE macro supports having multiple .la files in its last
    argument.  gst-package's --prepare option was broken and has been fixed.

o   The NetClients exception ProtocolError now includes the erroneous
    response.  Similarly, the package includes ProtocolNotification which
    is used, for example, for HTTP redirects.

o   Updated the Squeak/Pharo fileout parser.

o   Updated VisualGST.

-----------------------------------------------------------------------------

NEWS FROM 3.2.2 TO 3.2.3

o   Class attributes can have more than 1 keyword.

o   Documented #byteArrayOut C call argument passing mode.

o   Fixed crash when an invalid UnicodeString was created using
    #changeClassTo:

o   Fixed deadlock with #atEnd and two-way pipes.

o   Fixed bugs when adding instance variables to an existing class.

o   Fixed Socket>>#isPeerAlive falsely returning true.

o   Fixed some bugs in UTF-7 conversion.

o   FreeBSD port and 64-bit Darwin port.  The latter requires a
    pre-installed libsigsegv.

o   "gst-convert -f squeak" reads binary selectors with more than two
    characters; however they should be shortened with rewrite rules
    to use the output.

o   gst-doc can generate sensible documentation for a package if
    some of its prerequisite are not loaded, even if some of the
    package's classes subclass from the prerequisite.

o   GTK+ bindings are generated correctly for newer versions of GLib
    (tested up to 2.26).

o   If found, pre-installed libsigsegv, libffi and libltdl are used by
    default.

o   Improvements for Emacs mode.  Installation of Emacs mode detects
    Debian's /etc/emacs/site-start.d, and a --with-lispstartdir option
    is provided for distributions that are not Red Hat- or Debian-based.

o   Machine-specific optimizations for x86-64, and other microoptimizations
    resulting in small but consistent performance improvements.

o   More out of memory conditions are detected.

o   New methods: ByteArray>>#castTo:, ByteArray>>#asCData,
    String>>#asCData, UndefinedObject>>#inheritsFrom:

o   New goodie: Announcements.

o   Number class>>#readFrom: can parse numbers in scientific notation.

o   Package descriptions do not need to include a <file> item for each
    <filein> item.  However, it is still possible to include them for
    backwards compatibility, and it is possible to include a source file
    as both <filein> and <built-file> (so that gst-package --dist will
    skip it).

o   Packages can be downloaded using HTTPS if GnuTLS libraries are
    present.

o   Performance statistics printed by -V are now correct.

o   Scoped methods ("A class >> a") can be used in an "A class [ ... ]"
    block.

o   Semaphore>>#wait returns nil if the wait was interrupted externally
    (e.g. from Process>>#resume).

o   String>>#asCData: and String>>#asCData NULL-terminate their output.

o   Support for timeouts when waiting on a Semaphore.

o   Swazoo supports SCGI.  Its configuration however is still manual,
    since the Seaside and Iliad adaptors do not know about it.

o   Updated VisualGST.


-----------------------------------------------------------------------------

NEWS FROM 3.2.1 TO 3.2.2

o   Fixes to gst-remote.

o   Fixes to the Emacs mode.

o   Fixes to compilation warnings.

o   Generational GC is broken on SPARC and is now disabled.

o   When compiling a 32-bit version on a 64-bit system, detection of
    which packages to install was improved.


-----------------------------------------------------------------------------

NEWS FROM 3.2 TO 3.2.1

o   All built-in packages can be disabled with a configure option like
    --disable-gdbm or --disable-complex.

o   All tools support --verbose.

o   Fixed bugs in the distributed gnu-smalltalk.pc file.

o   Improved portability to Solaris.

o   Many bug fixes to UDP sockets.  In particular, daragrams received from
    a socket can be placed directly onto another socket using #nextPut:.

o   Many improvements to VisualGST.

o   Each test in the testsuite has a 1-minute timeout.

o   The undocumented DynamicVariable class in GNU Smalltalk 3.2 is now
    documented, but it had a small change in the implementation.  The
    #defaultValue class method is not present anymore, and is replaced by
    #valueIfAbsent:.  Subclasses can override #value to obtain the
    effect of #valueIfAbsent:.

    The class has also been rewritten and is much faster now.


-----------------------------------------------------------------------------

NEWS FROM 3.1 TO 3.2

Backwards-incompatible bug fixes and changes:

o   Collection>>#anyOne gives an error if the receiver is empty.

o   "aNumber raisedToInteger: 0" will raise an exception if and only if
    aNumber is not a floating-point value.  This was backwards in previous
    versions.

o   Interval>>#first and Interval>>#last give an error if the interval is
    empty (i.e. if start > stop and the step is positive, or start < stop
    and the step is negative).

o   SequenceableCollection>>#sortBy: was renamed to #sort:.  The old message
    is _not_ provided for backwards-compatibility.

o   The semantics of recursive directory descent were adjusted as follows:
    1) the '.' and '..' directory entries are not passed; 2) for #do:, the
    file is passed directly (3.1 used to pass another recursive decorator);
    3) before the descent starts, the directory itself is passed to the block.

o   The XML parser will ignore whitespace if placed in non-validating mode.

o   The suggested way to instantiate an XML parser is now using
    "SAXParser defaultParserClass", which will work with either of the
    two available parsers (the existing Smalltalk parsers, and the Expat
    bindings; see below).


New features (base classes):

o   Floating-point rounding to integer is now correct also for very
    large numbers; fix contributed by Nicolas Cellier.

o   Methods have been added to Integer to print numbers with padding
    to a specified width.

o   New FilePath methods #owner:, #group:, #owner:group: allow setting
    a file's owner and group.

o   Sending mode, file time and owner setters to a recursive directory
    decorator (such as `Directory working all') sets the mode/time/owner
    on all files under the path.

o   Speedups for hashed collections

o   String>>#subStrings: accepts a single separator character or also, in
    accordance with ANSI, a String holding a list of separators.

o   The old instance-based exception handling has been removed.  Standard
    ANSI class-based exceptions have been available since GNU Smalltalk 1.8.2.

o   The text-based #inspect method is now available also as
    Object>>#examine and Object>>#examineOn:, so that it will also work
    on arbitrary streams and will be available when a GUI is loaded.
    Contributed by Stefan Schmiedl.


New features (tools):

o   gst-convert can emit Squeak fileouts.

o   New graphical interface VisualGST, loaded with gst-browser.  The old
    browser is still available, but obsolete.

o   New ProfilerTools package for callgraph profiling of Smalltalk programs.
    A companion gst-profile tool will create profiles in callgrind-compatible
    format.  Contributed by Derek Zhou.

o   Packages can be downloaded and updated directly from the network.  The
    repository of packages is at http://smalltalk.gnu.org/project; the
    repository holds the location of the package.xml files, which point to
    the svn or git URL of the code.

    In order to download a package with git, version 1.6.2 is required.

o   SUnit supports expected failures.


New features (VM):

o   Fixes in garbage collection heuristics provide improved performance on
    programs allocating many long-lived objects.  Contributed by Derek Zhou.

o   Floating-point numbers are now read correctly.

o   In idle times, GNU Smalltalk will perform incremental garbage
    collection.  When it finishes, GNU Smalltalk will consume zero CPU.

o   Mostly rewritten Windows port.  It should mostly work except for
    sockets.  The socket code will be rewritten (for all platforms)
    for 3.3 anyway.

o   Support for one-way become (Object>>#becomeForward:)

o   The millisecond clock uses CLOCK_MONOTONIC where available.


New features (packages):

o   Many improvements to the Gtk bindings.

o   NetClients supports ESMTP commands.

o   New goodie, the SandstoneDb object persistence framework.

o   Swazoo upgraded to version 2.2, plus local fixes.

o   The Complex package uses numerically stable algorithms

o   The Continuations package provides delimited continuations via
    BlockClosure>>#shift and BlockClosure>>#reset.  Both methods accept
    a block (1-arg for shift, 0-arg for reset).

o   An XML pull parser is included as package XML-PullParser.  The package
    is based on the VisualWorks and Squeak pull parsers by Anthony Blakey
    and Ken Treis.

o   In addition to the validating XML parser, a non-validating Expat-based
    parser is available in package XML-Expat.  The Expat parser is
    experimental, but it is very fast and supports both pull and push
    operation.


Bug fixes:

o   Code running as a Generator now honors exception handlers outside the
    Generator block.

o   Fixed copying of Dictionary to not share the underlying associations.

o   Fixed ##() expressions that return a block

o   EPIPE is handled correctly.

o   Running on kernels without SOCK_CLOEXEC support will not fail
    even if the VM was compiled on a kernel that supported it.

o   The Sockets package failed to initialize when the machine was not
    connected to the network; this has been fixed.

o   The Transcript now uses a RecursionLock.  This fixes crashes when
    an exception occurred while printing a backtrace.


Miscellaneous:

o   GNU Smalltalk now does not rely anymore on specific (old) versions
    of libtool.

o   GNU Smalltalk tries to enable Emacs modes automatically on systems
    that support a site-lisp/site-start.d directory.

o   REPL autocompletion includes all symbols including unary messages
    (and variable names).

o   Process-local variables are now stored in an IdentityDictionary rather
    than a LookupTable.


-----------------------------------------------------------------------------

NEWS FROM 3.0.5 TO 3.1

o   BlockClosure methods #cull:, #cull:cull:, #cull:cull:cull:
    evaluate blocks removing parameters that are not accepted by
    the block.  Thanks to this new functionality, the parameter to
    #on:do: and #ifNotNil: can be omitted.

o   Collections and Streams have a common superclass, Iterable.  The
    user-visible aspect of this is that Streams now enjoy a wider
    range of iteration methods, such as #anySatisfy:, #detect:
    and #count:.

o   CObjects can be backed with garbage-collected (as opposed to
    heap-allocated) storage.  Using this is not always possible, for
    example for CObjects stored by external libraries or passed to
    functions that call back to Smalltalk or otherwise may cause garbage
    collections.  If it is, however, it is easier to use, faster and
    more predictable than finalization.  As an added benefit,
    garbage-collected CObjects accesses are bounds-checked.

    Garbage-collected CObjects are created by sending #gcNew instead
    of #new.

o   Error backtraces include line numbers and filenames.

o   FileDescriptor and FileStream raise an exception if #next: cannot
    return the given number of bytes.

o   FileDescriptor is now a subclass of Stream.

o   Functions gst_async_signal and gst_async_signal_and_unregister are
    now thread-safe, *not* async-signal-safe.  To trap signals from
    Smalltalk, you have to use ProcessorScheduler>>#signal:onInterrupt:.

o   Halt is now a subclass of Exception (rather than Error).

o   If possible, the installation is made relocatable.  To this end,
    the following conditions should be satisfied: 1) the exec-prefix
    and prefix should be identical; 2) the installation should reside
    entirely within the prefix; 3) on Windows, the bindir and libdir
    should be the same or shared libraries should be disabled; 4) if
    neither on Windows nor under a glibc-based system, shared libraries
    should be disabled.

    If the above conditions are satisfied, and you want a relocatable
    install, it is suggested that you configure with a non-existent
    prefix such as "--prefix=/nonexistent".  To move the installation,
    you can install into a staging area and move it from there.

      ./configure --prefix=/nonexistent
      make
      make install DESTDIR=`pwd`
      (cd nonexistent && tar cvf - .) | (cd $HOME && tar xvf -)
      (cd nonexistent && tar cvf - .) | (cd /usr/local && tar xvf -)

    In order to support relocatable installation, libgst clients should
    call gst_set_executable_path *before* gst_initialize.  Failure to
    do so won't cause any problem, except that relocatable installation
    will be disabled and the program will look for its files only in
    the configured prefix.

o   It is possible to create C call-outs that are not attached
    to a function that the VM knows about, using the method
    CCallable class>>#for:returning:withArgs:.  The returned object
    can then be used to create CompiledMethods using
    CompiledMethod class>>#cCall:numArgs:attributes:.

    The address however is reset to NULL on image restart and it is up to
    the user to reinitialize it.  You can also subclass CCallable and
    override the #link method (the existing CFunctionDescriptor class
    is now implemented on top of this).

o   ObjectDumper now accepts normal String streams.  The class ByteStream
    has been removed.

o   ObjectMemory>>#snapshot and ObjectMemory>>#snapshot: return false in
    the instance of GNU Smalltalk that produced the snapshot, and
    true in the instance of GNU Smalltalk that was restored from the
    snapshot.  Note that this does not apply to CallinProcesses, since
    those are stopped in saved images.

o   RegexResults method #ifMatched:ifNotMatched:, and the similar methods,
    accept either zero or one-argument blocks.  In 3.0, #ifMatched: accepted
    a one-argument block, while #ifNotMatched: accepted a zero-argument block.

o   Streams have a set of new methods that allow to eliminate useless copies
    when moving data from stream to stream, as well as to eliminate useless
    creation of collections to store the data read from a stream.  Besides
    the standard methods #next, #nextPut: and #atEnd, two more methods can be
    implemented by Stream subclasses in order to achieve better performance
    on block transfers, namely #nextAvailable:into:startingAt:,
    #nextAvailable:putAllOn: and #next:putAll:startingAt:.

    Another set of methods is placed in Stream; they all use the above
    three methods and you should not need to override them.  These are
    #next:into:startingAt:, #next:putAllOn:, #nextAvailable:,
    #nextAvailable:putAllOn:, #nextAvailablePutAllOn:.

    In addition, #nextHunk was removed.  Applications can use #nextAvailable:
    or, better, should be rewritten to use new stream-to-stream protocol
    such as #nextAvailablePutAllOn:.

o   The VFS subsystem was rewritten.  Virtual filesystems are now
    accessible via special methods on File (such as File>>#zip,
    for example "(File name: 'abc.zip') zip") and not anymore with
    special filenames that could conflict with real files.

    This caused a few incompatible changes.  The most important are:
    1) methods like `File image' and `Directory kernel' return a File
    object, not a String; 2) Directory objects are not created anymore
    and instead File objects also support the Directory protocol;
    3) Directory>>#do: passes File objects rather than file names to the
    block; 4) Directory>>#contents is now called Directory>>#entryNames.

o   The order for searching pool dictionaries changed.  The new order,
    codenamed "TwistedPools", builds on three ideas: 1) the environment
    of a class always has lower priority than the imports, so the
    environment is always excluded from the imports if the environment
    is a superspace of the imports; 2) apart from this, the imports are
    visited in topological order, so that if two imports have a superspace
    in common, the imports are always visited before the superspace; 3)
    each class in the inheritance order is visited separately, so the
    imports of a superclass have lower priority than the environment of
    the subclass.

    At the same time, support for imports were added to namespaces (via the
    <import: ...> pragma, as for classes).  Unlike the superspace, imports
    are not made visible through #at:.

o   The semantics of #on:do: were changed: executing off the end of an
    exception handler will always return from the associated #on:do:.
    Older versions of GNU Smalltalk either returned or resumed depending
    on the resumability of the exception.

o   The source code for methods loaded from Streams that are not FileStreams
    is stored directly in the image.

o   New tool gst-remote allows remote control of a GNU Smalltalk VM
    via a TCP socket.

o   Processes support thread-local variables, which are accessed through
    a special dictionary returned by ProcessorScheduler>>#processEnvironment.

o   Packages can specify start/stop scripts.  Start scripts can be activated
    with gst-load, while both start and stop scripts are supported by
    gst-remote.

o   The sockets package (and the namespace it is installed in) was renamed
    from TCP to Sockets.  While the old namespace is still available
    for backwards compatibility, it is suggested to use the Sockets
    namespace instead.

o   Unbuffered sockets available from class Sockets.StreamSocket.


New goodies:

o   IPv6 and AF_UNIX sockets (in the Sockets package).

o   Bindings to Cairo and LibSDL provided by Michael Bridgen, Tony
    Garnock-Jones and Brad Watson.

o   Bindings to OpenGL and GLUT contributed by Olivier Blanc.

o   DBI supports querying tables for schema information, and is integrated
    with the "ROE" (Relational Object Expression) package.  ROE support is
    present for all back-ends (MySQL, PostgreSQL, SQLite).

o   Magritte object-model description framework.

o   Seaside application server/web framework.

o   Swazoo web server.

-----------------------------------------------------------------------------

NEWS FROM 3.0.4 TO 3.0.5

o   Added the following methods
	Character class>>#ff
	CObject>>#isNull
	Collection>>#includesAnyOf:
	Duration>>#readFrom:
	Number>>#readFrom:radix:
	Object>>#isCObject
	Package>>#/
	SequenceableCollection>>#copyWithFirst:
	SequenceableCollection>>#swap:with:
	UndefinedObject>>#isNull
	WeakArray class>>#new

o   Bugfixes for gst-convert.

o   CallinProcesses can be terminated with Process>>#terminate.

o   DBI connection strings accept db/dbname/database, and host/hostname,
    as synonyms.

o   Fixed rare garbage collection bugs.

o   Fixed rounding error in Float>>#floorLog: and Float>>#ceilingLog:.

o   gst-doc implements a -F option to choose output format.  HTML and
    Texinfo are supported (contributed by Thomas Girard).

o   GTK+ bindings updated to support changes in 2.12.

o   #storeOn: fixed for classes in namespaces other than Smalltalk.

-------------------------------------------------------------------------------

NEWS FROM 3.0.3 TO 3.0.4

o   A few operations on collections have been sped up.

o   Code without a space between a binary minus and a number, such as "a-2",
    is parsed correctly.  As a side effect of this change, the sign of a number
    with an explicit radix (such as "16r10") can be placed before the radix
    too: both -16r10 and 16r-10 are accepted.

o   Fixed bug that caused some children not to be reaped.

o   Fixed bug when reading from a FIFO file and the writing side closed the
    FIFO before GNU Smalltalk started reading it.

o   Fixed CByte to actually work.

o   Fixed corner case of nested exception handlers.

o   Fixed directory navigation on ZIP archives (when using the VFSAddOns
    package).

o   Fixed HTTP GETs that caused a redirect and had a query.

o   Fixed leakage of file descriptors on ZIP archives (when *not* using the
    VFSAddOns package).

o   Fixed MappedCollection>>#keysDo:.

o   Fixed rare bug in the bytecode optimizer that caused invalid
    (non-verifiable) or even incorrect bytecode to be generated.

o   Fixed Stream>>#do: and Stream>>#linesDo:, which would terminate in
    advance if *another* stream was read past its end during the argument
    block's execution.

o   Fixed the tools to work on Windows even if invoked with an explicit
    extension for the executable.

o   gst-convert is now really quiet if invoked with --quiet.

o   Moved SequenceableCollection>>#join to Collection.

o   Removed bashisms from installed shell scripts.

o   Sockets use the close-on-exec option (see fcntl(2) for more information).

o   Sport fixes: fixed SpFilename>>#fail (did not work) and
    SpSocket>>#readInto:startingAt:for: (should only do one I/O operation,
    possibly returning a partially filled buffer).

o   UNC paths are parsed correctly by File.

-----------------------------------------------------------------------------


NEWS FROM 3.0.2 TO 3.0.3

o   File>>#withReadStreamDo: and File>>#withWriteStreamDo: now return
    the result of evaluating their argument, instead of returning the
    File object.

o   Fixed command-line option -S to actually work.

o   Fixed GC bugs in SQLite bindings.  Also, the bindings could sometimes
    call sqlite3_finalize twice.

o   Fixed rare finalization bug.

o   Fixes to the JIT compiler.

o   Generational GC is now disabled on Alpha.

o   More fixes for MinGW.

o   New command-line option -i (--rebuild-image) for gst-load.

o   New methods:

    Number>>#asCNumber
    String>>allOccurrencesOfRegex:do:
    String>>allOccurrencesOfRegex:from:to:do:
    TCP.AbstractSocket>>#canRead
    TCP.AbstractSocket>>#canWrite
    TCP.AbstractSocket>>#ensureReadable
    TCP.AbstractSocket>>#ensureWriteable

o   The callback for the #returnFromSnapshot event is executed as a
    high-priority process.  While relatively invasive, this change was
    needed to fix crashes when reloading images that used C bindings
    extensively.

o   A system-installed libffi can be used.  The included libffi has been
    upgraded to version 3.0.4.

o   URLs can be passed to FileDescriptor class>>#open:mode:ifFail:.


Thanks to everyone who reported bugs and/or provided fixes that went
into this release, including Stephen Compall, Thomas Girard, Tim Kack,
Cesar Rabak.

-----------------------------------------------------------------------------

NEWS FROM 3.0.1 TO 3.0.2

o   Fixed bugs in floating-point I/O.

o   Fixed bugs in comparisons between ScaledDecimals and Integers.

o   Fixes for MinGW.

o   Fixes to the Emacs modes.

o   Improved GNUPlot bindings (support for histograms).

o   Improved SqueakParser.

o   Number>>#readFrom: will return floating-point numbers, not fractions.

o   New methods:

    AbstractSocket>>#isPeerAlive
    CharacterArray>>#endsWith:
    Collection>>#count:
    Collection>>#gather:
    Collection>>#noneSatisfy:
    Date>>#-
    DateTime>>#date:time:
    DateTime>>#date:time:offset:
    Dictionary>>#associations
    Message>>#selector:argument:
    Number>>#to:collect:
    Number>>#to:by:collect:
    SequenceableCollection>>#copyAfter:
    SequenceableCollection>>#copyAfterLast:
    SequenceableCollection>>#copyUpToLast:
    SequenceableCollection>>#identityIndexOfLast:ifAbsent:
    SequenceableCollection>>#indexOfLast:ifAbsent:
    SequenceableCollection>>#sort
    SequenceableCollection>>#sortBy:
    SequenceableCollection>>#with: (also #with:#with: etc.)
    Stream>>#with: (also #with:#with: etc.)
    Time>>#addSeconds:
    Time>>#midnight

o   Regex is now a subclass of Object.

o   SQLite bindings return a different Row object for each #next call
    to a ResultSet.

-----------------------------------------------------------------------------

NEWS FROM 3.0 TO 3.0.1

o   `gst-package --list-files' emits file paths relative from the current
    directory.  The --destdir and -t options are rejected. --list-files
    supports options --load and --test.

o   The documentation for a package can now be built even if the corresponding
    .star file is not installed.  Since documentation is part of the tarball,
    this problem with 3.0 was actually only visible if you modified packages
    for which you lacked the support libraries in /usr/lib (e.g. Tcl/Tk for
    package BloxTK).

o   Added SequenceableCollection>>#atRandom and String>>#allOccurrencesOfRegex:

o   Eliminated possible infinite loop in CompiledCode>>#hash.

o   Fixed crash on LargeInteger>>#divExact: for huge numerator and small
    denominator.

o   Fixed ping-pong between two sizes (continuously growing and shrinking) in
    OrderedCollection.

o   Fixed undeclared variable PackageNotAvailable in the default image.

o   Fixed Symbol>>#numArgs for methods starting with an underscore.

o   Fixed problems with substitution of regexes that match the empty string.

o   Fixed problems with very short delays.

o   Fixed segmentation violation when gethostbyname returned NULL.

o   Test floatmath.st is XFAILed on alpha due to kernel bug 9751.

-----------------------------------------------------------------------------

NEWS FROM 2.3.6 TO 3.0

Important changes:

o   A completely new syntax for defining classes is now present.  This is
    detailed in the manual (see the tutorial section) and the entire
    source code of the system uses the new syntax.

o   A different startup sequence is used which improves the possibility to
    customize GNU Smalltalk, both site-wide and per-user.  The details are
    in the manual, the main changes are these: the `~/.stinit' and `~/.stpre'
    files are now named `~/.st/init.st' and `~/.st/pre.st'; files requested
    with the `-K' command-line option are sought for in the `~/.st' directory
    too; kernel files may be overridden by placing them in
    `~/.st/kernel'; a site-wide customization file can be placed in
    `/usr/local/share/smalltalk/site-pre.st'.

    The kernel path is stored in the image and not changed when the image
    is loaded.  In addition, `Directory systemKernel' and `Directory
    localKernel' are not used anymore, and just return the same as
    `Directory kernel'.

    Finally, Smalltalk programs have access to the aforementioned `~`/.st'
    directory as `Directory userKernel' (name subject to change).  A
    `packages.xml' file, as well as `.star' files (see later) can be put
    there.

o   Several classes not meant to be accessed by the user have been moved to
    an internal Kernel namespace.  This also removes them from the automatically
    generated documentation.

o   GNU Smalltalk now needs InfoZIP to be installed on the machine where
    it is compiled, in order to use the new single-file package facility.
    In the future, this dependency may be removed.

o   The tool for automatic documentation generator, that has been used by
    the GNU Smalltalk distribution for a long time, is now installed as gst-doc.


Backwards-incompatible changes:

o   If you want to return a specific CObject class from a C call-out,
    it is suggested that you stop using "returning: ClassName type", as in

       <cCall: 'dupwin' returning: NCWindow type args: #(#self )>!

    and instead use

       <cCall: 'dupwin' returning: #{NCWindow} args: #(#self )>!
                                   ^^^^^^^^^^^

    The source code conversion tool might silently produce an incorrect
    output if you use the former syntax.

o   The ABI for external usage has changed.  libgst.a does not know anymore
    how to parse options, but exports functions to achieve the same effect
    as options.

o   The #writeStream and #streamContents: method were moved down from
    SequenceableCollection to ArrayedCollection, since they did not really
    work on variable-sized collections such as OrderedCollections.

o   The database access library has been replaced by a new DBI-like library,
    contributed by Mike Anderson, with bindings to PostgreSQL (also contributed
    by Mike), SQLite (by Daniele Sciascia) and MySQL.

o   In general, GNU Smalltalk is able to load files with the old syntax.
    In some cases, however, it will be necessary to either convert them
    using the gst-convert tool, or load the Parser package before them.
    This is the case if you get a "not yet implemented" error while loading
    the files.


Packages improvements:

o   All packages in the distribution are now installed in the new ".star"
    format (for SmallTalk ARchive).

    ".star" files include at the top a package.xml file (whose format
    is the same as the <package> tag of packages.xml).  The name of
    ".star" file should be the same as the name of the package if the
    package.xml file has a <name> tag.

o   In install mode, gst-package automatically creates a ".star" file.
    gst-package also accepts ".star" files on the command line; in this case,
    install mode will simply copy the file instead of rebuilding it from
    scratch.

o   gst-package supports preparing a standard skeleton for package tarballs,
    using the --prepare option.

o   Packages can specify a "testing-only" subpackage that is loaded when
    running tests (e.g. with "gst-load --test" or "gst-sunit --package"),
    but not when loading the package normally.  This is done with a <test>
    tag nested into <package>.


Other major changes:

o   Added #from: to Collection, which constructs an instance of the class
    based on a conveniently specified Array.  This allows one to construct
    Dictionaries or LookupTables using

	Dictionary from: { 1->2. 3->4 }

    Another methods meant to be used with the { ... } syntax is #join.
    For example

        { 'hello'. a. '!' } join

    returns a string and is the same as using #, repeatedly, but is more
    efficient.

o   All collection classes support #readStream, though the default
    implementation (which uses generators) could be slow.

o   Continuations and generators have moved to the base image.  More complex
    examples of continuations still reside in the Continuations package.

o   Directory entries are passed to #allFilesMatching:do:'s block argument
    if they match aPattern.  As before, the function descends in all the
    directories, even those that do not match aPattern.

o   Evaluated code now puts undeclared variables in a private namespace (so
    that you do not have to declare temporaries) and defers the resolution
    of undefined variable bindings until the time of their first access.

    Unfortunately, this slows down evaluated code noticeably; you can get
    back the performance by putting code in a method or an Eval (in the
    latter case, you will have to declare temporaries explicitly, or the
    code will still use the slower deferred variable binding).

o   Flushing a socket tries to push data all the way down to the network.
    This usually removes the need for TCP_NODELAY option.  If you have
    applications that want to use #flush to send data to the OS, but
    not to the network, we're all ears.

o   Image load uses copy-on-write memory mapped files.  This means that, as
    long as a loaded object is not touched, the operating system will map
    it to the same physical memory, for different copies of the GNU Smalltalk
    virtual machine that loaded the same image.

o   Processes that are garbage collected before they terminate execution (e.g.
    because they are waiting on a semaphore that is also garbage collected)
    are appropriately terminated.

o   Saving the image breaks hard links.  This was done to work around a
    Linux kernel bug, and might change in future versions.

o   Since they are not portable outside Unix systems, the `archive' virtual
    filesystems (deb, lslR, mailfs, patchfs, uar, urar, uzoo, ulha, ucpio, utar)
    are now available only if the VFSAddOns package is loaded.  Without the
    package, only #uzip is available and it will only support extracting from
    ZIP files.

o   Startup time and quit time were improved widely (the time for running
    a simple "Hello, World" program is about one fifth of 2.3.x).

o   SUnit scripts can declare variables (using a "variable=value" syntax)
    that can be accessed from within a testsuite.  

o   The "<category: 'bar'>" pragma can be used to set the category
    of a method.

o   The graphical browser can now be started just by typing "gst-blox".

o   The image is now installed in /usr/local/var/lib/smalltalk (which in
    most distributions will map to /var/lib/smalltalk).

o   The MySQL driver was updated to support MySQL 4.x authentication.
    Tests can be run by configuring with --enable-mysql-tests=USER:PASSWORD:DB
    (the given user, password and database should already exists when
    `make check' is run; the default is "root:root:test").

o   The XML package has been split in five smaller packages, XML-SAXDriver,
    XML-DOM, XML-SAXParser, XML-NodeBuilder and XML-XMLParser.  The previous
    name XML can still be used.  In the future it may load a different but
    compatible (e.g. Expat-based) parser.

o   When declaring a C function, the #returning: argument now supports
    specifying CPtr and CArray types, the same way it is done in CStruct
    and CUnion declarations.  For example, since you can specify an "int *"
    as "#{CInt}", an "int **" (pointer to pointer to Integer, i.e. pointer
    to CInt) would be written "#(#ptr #{CInt})".

    Conversion from Array to CType is generally available using the
    CType class>>#from: method.

o   The zlib bindings' WriteStream decorator supports partial flushing.
    Class PipeStream is distributed independently as it is not used anymore
    by the zlib bindings.


New goodies:

o   A new package DebugTools provides a generic Debugger class that can
    be used to control an inferior Smalltalk process.  It is used by the
    textual MiniDebugger as well as the debugger that is part of the GUI.

o   Complex numbers support added (package Complex).

o   GNUPlot bindings

o   JSON reader/writer contributed by Robin Redeker.

o   MD5 packages renamed to Digest, SHA1 support added.

o   New DBI-like library replacing the old one, contributed by Mike Anderson.

-----------------------------------------------------------------------------

NEWS FROM 2.3.5 TO 2.3.6

o   Added #% as a shortcut for CharacterArray>>#bindWithArguments:.

o   Added #allButFirst, #allButFirst:, #allButLast, #allButLast:, #atAll:,
    #removeAllSuchThat: to Collection.

o   Added #join to SequenceableCollection.

o   Added symbolic link creation to File.

o   A race condition was fixed where a file handler was resurrected and
    another object inside it had already been finalized.

o   Pipes use OS pipes or socketpairs instead of a pseudo-tty.

o   Fixed bitrot in the debugger.

o   Fixed bug where ~= was computed incorrectly as = (e.g. 3 ~= 3.0e).

o   Fixed bug with growing of the Undeclared dictionary.

o   Fixed many minor bugs.

o   Fixed GC bug that could cause crashes if two GCs happened at particularly
    unlucky spots.

o   Fixes to File and Directory for Windows.

o   Fixes to MIME message parsing, UTF-7 encoding and XPath.

o   VariableBinding objects were made read-only when used as literals.

-----------------------------------------------------------------------------

NEWS FROM 2.3.4 TO 2.3.5

o   Added more examples of continuations.

o   Fixed a floating-point accuracy problem in the test suite.

o   Fixed a 64-bit cleanliness problem in the GDBM bindings.

o   Generational GC enabled on x86_64.

o   Support for writing a block with arguments and no statements
    as [ :a :b ] in addition to [ :a :b | ].

o   The StreamFilter.st example, which provided lookahead, filtering,
    concatenation and other kinds of manipulation for Streams, has been
    promoted into the default image.

-----------------------------------------------------------------------------

NEWS FROM 2.3.3 TO 2.3.4

o   Fixed bug in LargeInteger division on systems not equipped with GMP.

o   Fixed bug in socket #nextHunk implementation, which lost the first
    or second byte in the input buffer.

o   Fixed paths in the image when "make DESTDIR" was used.

o   Fixed implementation of Dictionary>>#addAll:, and fixed Integer>>#binomial:
    when the argument is 0 or self.

o   Fixed various minor bugs and imprecisions in the documentation.

o   Improvements to the ancillary scripts gst-load and gst-sunit.  In
    particular, a package can describe the classes that constitute its
    testsuite, and gst-sunit allows to quickly run the testsuite for a
    package.

o   Improvements to the test suite.  Several of the modules included with
    GNU Smalltalk are tested.  The testsuite is now written using Autotest.

o   Installed binaries do not require the Bourne shell anymore.

o   Some libffi files (for IA64 and PA) were missing from the distribution.

o   Upgraded libsigsegv, for improved Mac OS X on Intel support

o   zlib bindings provided in package ZLib.

-----------------------------------------------------------------------------

NEWS FROM 2.3.2 TO 2.3.3

o   Introduced the --with-imagedir configure option to specify the directory
    used for the image.

o   The manual was not properly generated in version 2.3.2.

o   Removed text relocations from the virtual machine's shared library.

-----------------------------------------------------------------------------

NEWS FROM 2.3.1 TO 2.3.2

o   #copyFrom:to: is uniformly 0-based for all Streams (unlike in Collections),
    because a Stream has 0-based #position and #position: methods.

o   Fixed many floating point rounding bugs in LargeIntegers and Fractions,
    thanks to Nicolas Cellier.

-----------------------------------------------------------------------------

NEWS FROM 2.3 TO 2.3.1

o   configure does not lock up when the system emacs is XEmacs and does not
    include both the comint package and the package's source code.

o   Fixed a garbage collection bug that typically occurred when installing
    GNU Smalltalk, or when launching the installed image.

o   gst-package honors the INSTALL command found by configure.

o   gst-config does not "forget" to prefix the library directories with -L.

o   Segmentation violations on large integer operations (on 64-bit hosts)
    were fixed.

-----------------------------------------------------------------------------

NEWS FROM 2.2 TO 2.3

IMPORTANT: GNU Smalltalk now adds an explicit exception to the GNU GPL
license, allowing the programs running under the virtual machine to use
a GPL-incompatible license.  This exception is used both by the
virtual machine and by the library bindings included in GNU Smalltalk.
This clears gray areas when a Smalltalk program is using functions
in the external library bindings via dynamic linking and the foreign
function call interface (C call-outs).


o   C call-outs returning #void now return self rather than nil.
    Performance of code heavily using C call-outs has improved.

o   FileStreams can now use pwrite for more efficient operation on files
    opened for read/write, and will do many less gratuitous lseek
    operations.  pread will also be used by FileStream>>#copyFrom:to:.
    The number of system calls issued when generating the documentation,
    for example, is reduced by a third.

o   Fixed bug in methods containing both -0.0 and 0.0 (positive and negative
    floating-point zero).

o   Fixed bug in Directory class>>#create:, that could not create a
    directory relative to the current directory.

o   Fixed bug in File>>#touch, which did not work really.  There are also
    methods to modify a file's atime and mtime.

o   Fixed bug in SortedCollection.  After #removeAtIndex:, adds would leave
    the collection unordered.

o   Fixed many more bugs.

o   Introduced a method to efficiently convert a WriteStream into a ReadStream.
    It is called #readStream and makes WriteStream more polymorphic with String.

o   Introduced two more class shapes, #character and #utf32, that can be used
    for String and UnicodeString.

o   More reliable detection of at-end-of-file condition for pipes, TTYs,
    and so on (especially on Mac OS X), and of sockets closed by the peer.
    Due to incompatibilities between various OSes, you are advised to test
    end-of-stream conditions *before* rather than after reading a character
    from stdin.  In 2.2, either way would work, but serious bugs were
    found on Mac OS X unless stdin was redirected from a file.

o   Moved gdk_draw_ functions to GdkDrawable.

o   New goodie to parse the command line.  Look at the documentation for
    the Getopt class and for SystemDictionary>>#arguments:do:.

o   New example, lazy collections.  When loaded, #select:, #reject: and
    #collect: do not create a new collection unless necessary.  Idioms like

	(a select: [ :each | ... ]) do: [ : each | ... ]

    or

	a := a select: [ :each | ... ].
	a := a reject: [ :each | ... ].
	a := a select: [ :each | ... ].
	^a size

    can be much faster when this example is loaded.

o   Regular expressions are now included in the default image.  The interface
    is now definitive and is similar to 2.2.  The concrete classes for
    RegexResults are in a private namespace (since the user need not
    instantiate them anyway).  Right now, regular expressions are only
    usable for String objects (see Unicode support below).  This may
    change in the future.

o   The backtraces now omit again the internal methods in the exception
    handling system.

o   The class above which super-send bytecodes start searching is now embedded
    in the bytecode stream.  This provides the infrastructure to implement
    'here' as in Smalltalk/X or 'self.Foo b' to execute the Foo>>#b method
    (these possible extensions have not been implemented).

o   The header files compile cleanly with a C++ compiler.  For the occasion,
    the preferred name of the old `mst_Object' has changed to `gst_object'.

o   Various speedups.


Unicode support:

o   Characters above 127 are no longer used to represent extended ASCII
    characters.  Instead, they are only used to represent a byte in
    the encoding of the Unicode characters from 128 on.  To create
    them use the Blue Book method Character class>>#value:.

    To represent Unicode characters above 127 use the (ANSI Smalltalk)
    Character class>>#codePoint: method.  Note that these characters
    *cannot* be shown on a stream with #nextPut: (use #display: instead)
    nor compared with #== (use #= instead).

    Character literals like $+ or $A are guaranteed to create normal
    "Character" objects, for which you can safely use #nextPut:.  Right
    now, these are valid only for characters between 0 and 127.  To create
    Character literals for unicode characters, use the new syntax to
    express characters using their Unicode code point.  This may be
    extended in the future to support Unicode character literals.

    A ``safe'' way to obtain the character whose encoding is between
    128 and 255 is this (which requires the Iconv module to be loaded):
    
        ##('<your character>' asUnicodeString first)

    (This snippet has no shortcut by design because, in general, converting
    a Character to a UnicodeCharacter is not a well-defined operation).

o   New UnicodeCharacter and UnicodeString classes.  These new classes
    can also be passed to and received from C functions.  See the
    manual for more information.

o   New syntax $<13> to express characters using their Unicode code point.
    As anticipated, this syntax will create instances of the new UnicodeCharacter
    class when the number is > 127.

o   Part of the I18N module was separated into the Iconv module, which
    provides support for printing Unicode characters and strings correctly.


Other goodies:

o   NCurses bindings, contributed by Brad Watson.

-----------------------------------------------------------------------------

NEWS FROM 2.1.12 TO 2.2

Scripting improvements:

o   A sharp-bang sequence at the beginning of a file is parsed as a
    one-line comment.

o   Provides an "-f" option (long option "--file") to be used in a #! line,
    as in "#! /usr/bin/env gst -f", which has the same effect of -Q,
    processing the file indicated by the option's argument, and passing
    the rest of the command line to GNU Smalltalk.  In other words, the
    two invocations that follow are equivalent:

	gst -f script.st ARG1 ARG2
	gst script.st -Qa ARG1 ARG2

o   Load.st installed as gst-load, Reload.st installed as gst-reload,
    Test.st installed as gst-sunit.


VM changes:

o   Can define subclasses of CompiledMethod and have a method invoked on
    the instances whenever the method is called.

o   Can pass a "void **" to C using the #cObjectPtr parameter specifier
    (previously undocumented and broken).

o   The #class method can be overridden.  This is useful for example
    for debuggers and proxies.

o   Code for decoding/interpreting the bytecode set is for the most part
    automatically generated.  Take a look at the ``genbc'' and ``genvm''
    programs if you are going to write an high performance interpreter, and
    write to the mailing list for any information on them or on the other
    program ``superops'' (this one is much more specialized).

o   CompiledBlocks and CompiledMethods are read-only.

o   Dollars are allowed in the middle of identifiers and method names.
    This is unportable, so do not abuse it.  As with underscores, it is not
    possible to use them at the beginning of an identifier or method name.

o   Fixed bug that caused the compiler to accept duplicate argument or
    temporary names.

o   GCC needed to compile GNU Smalltalk.

o   gst_smalltalk_args accepts a const char **.

o   Improved clarity and portability using intptr_t, size_t and ptrdiff_t
    more widely and wisely.

o   Indexed instance variables can be 8-bit and 16-bit, signed and unsigned
    integers; or they can be 32-bit and 64-bit, signed integers and unsigned
    integers and floating point values; or objects of course.  Previously
    the only three possibilities were objects, 8-bit unsigned ints, and
    pointer-sized unsigned ints.

o   Instance variables are scanned backwards: if a subclass declares an
    instance variable with the same name of the superclass, it wins when
    compiling code in the subclass (fixes the so-called "fragile subclass"
    problem).

o   Keywords and parameters need not be separated by a space (as in
    `self x: y z:w').

o   New bytecode set.  This is a significant departure from the Blue Book's
    instruction set, and it improves performance by ~20%.  Over 150 common
    bytecode sequences are optimized, saving on dispatching overhead and
    minimizing the cost of decoding arguments.

o   Options -l and -L (--log-changes and --log-file) are no more.  The
    change log is not useful outside the GUI, while inside the GUI it
    ought to be maintained by the GUI itself.

o   Option -s is no more.  It was made the default in 2.1.5.

o   Passing floating-point arguments to C works.

o   Prefetching instructions are used wherever supported (Alpha, SPARC,
    PPC, AMD K6 or newer, Intel PIII or newer, all with GCC 3.2).  This
    speeds up the startup by up to 20%.

o   Instances of subclasses of CompiledBlock and CompiledMethod can be
    created using the same primitive that creates CompiledBlocks and
    CompiledMethods, but sent to the subclass.

o   Several important bug fixes in event handling and asynchronous file
    input/output.

o   Subclasses of MethodInfo can be used as the descriptors for CompiledMethod
    objects.

o   Two-character binary messages ending with a minus are scanned differently
    if followed by a number: "1+-2" is now read as "1 + -2", not "1 +- 2".
    This is what you would usually expect; however, including spaces explicitly
    is recommended.

o   When GCC 3.3 or later is used, a shared library is also built.  The
    code has been to some extent optimized to make this less expensive, but
    the shared library still has a 5-10% performance hit.  Note that the x86
    shared library is undebuggable (-fomit-frame-pointer) with GCC < 4.0
    because of the dearth of registers.  The installed virtual machine is not
    linked to the shared library for optimal speed.

o   Wider set of operations available to modules that plug into GNU Smalltalk,
    including access to system classes, queries on the method dictionaries,
    and access to indexed instance variables.



Smalltalk changes:

o   CLongDouble class allows one to access long doubles; long doubles are
    supported by CStruct, Memory and ByteArray as well.

o   CompiledCode>>#literalsDo: does what CompiledCode>>#allLiteralsDo:
    used to do.  CompiledCode>>#allLiteralsDo: recurses into literal
    arrays.

o   Glorp, a layer for mapping objects to relational databases, is provided
    and integrated with the MySQL driver.

o   GNU Smalltalk includes a mechanism for defining security policies
    on a class-by-class basis.  See below for more information.

o   Interval can return a #first and #last even if the Interval is empty.
    These are the start and stop object that it was created with.  The
    private methods #start, #stop and #step have thus been superseded by
    #first, #last and #increment.

o   #min: and #max: always return a NaN when one of the two operands is
    a NaN; previously they would always return the other operand.

o   New syntax for C call-outs, can be transparently filed out from the
    image and then filed back in.  See the documentation or the
    kernel/CFuncs.st file for more information.

o   PackageLoader can be told the namespace in which to load the package.
    Most package loading scripts are now no longer necessary or can be
    reduced to simple initialization duties.

o   #raisedToInteger: is better optimized and does the minimum number of
    multiplications for exponents up to 256.

o   SequenceableCollection has a more efficient implementation of #fold:,
    as well as #second, #third, and #fourth (and I'm going to stop here!).

o   #return and #return: now reinstate exception handlers, which will
    therefore be active while executing pending #ensure: or #ifCurtailed:
    blocks.

o   Stored CompiledBlocks into the method's literal frame for non-clean
    blocks, and turned #blockCopy: into a `make dirty block' bytecode
    without introducing a method of unclear utility.  This is a little
    faster and (consistently) saves around 1% on image files.

o   The syntax for primitives has been generalized into a "method attribute"
    mechanism; pragmas are accessible through methods in CompiledMethod.

o   The thisContext variable is compiled as a message send like
    "ContextPart thisContext".

o   When a send to super fails, #doesNotUnderstand: is also sent to super
    and not to self.  This change is experimental; these semantics look more
    coherent to me.  As a result (think about it...) sends to super from a
    root class are now forbidden.

o   When a non-existing message is sent with the wrong number of arguments
    (using #perform:), #doesNotUnderstand: is invoked.  In the past, the
    wrong number of arguments error would have been printed.  The reason
    for this is to allow selector names that would be invalid for the
    Smalltalk language.


Work in progress:

o   Blox-GTK interface, to use the browser under Gtk+.  Currently, only
    the browser works; to try it, configure with --enable-gtk=blox or
    load the BloxGTK package.  Thanks to Robert Collins.

o   GNU Smalltalk now supports executing (some) Java programs.  See the
    info documentation for more information.  The class library is based
    on GCJ 3.4, but should be reasonably upwards-compatible.  There is no
    AWT nor JNI support, and it is not planned; networking, reflection and
    serialization are not there but should be added in the future.


Overview of the security mechanism:

o   Implemented class-level permissions.  Each class can have its own
    permission set, and if this is not trivial (all-allowed) the class
    is marked untrusted; then instances of that class, as well as contexts
    that have at least an untrusted object as the receiver in the sender
    chain, are considered untrusted.  In the future, security checks will
    be made for untrusted objects in such methods as

	C call-outs				[#memoryAccess]
	CObject class>>#alloc:			[#memoryAccess]
	CObject class>>#alloc:type:		[#memoryAccess]
	CObject>>#free				[#memoryAccess]
	CObject>>#at:				[#memoryAccess]
	CObject>>#at:put:			[#memoryAccess]
	Memory>>#at:				[#memoryAccess]
	Memory>>#at:put:			[#memoryAccess]
	FileDescriptor>>#fileOp:...		[#io]
	ObjectMemory>>#snapshot:		[#io]
	ObjectMemory>>#quit:			[#system]
	ObjectMemory>>#abort			[#system]
	ObjectMemory>>#setSpaceGrowRate:	[#system]
	ObjectMemory>>#setSmoothingFactor:	[#system]
	ObjectMemory>>#setGrowThresholdPercent:	[#system]
	ObjectMemory>>#setBigObjectThreshold:	[#system]
	ObjectMemory>>#growTo:			[#system]
	Object>>#makeUntrusted:			[#securityManagement]
	Object>>#instVarAt: 			[#debugging]
	Object>>#instVarAt:put:	           	[#debugging]
	Object>>#perform:... 			[#debugging]
	Object>>#changeClassTo:			[#debugging]
	Process>>#suspend			[#processManagement]
	Process>>#resume			[#processManagement]
	UndefinedObject>>#subclass:... etc...	[#system]
	Class>>#subclass:... etc... (mutation)	[#system]
	Metaclass>>#instanceVariableNames: 	[#system]
	MethodDictionary>>#at:put:		[#system]

o   Instance variables of an untrusted class that are declared by a trusted
    class are read-only.  This is necessary to avoid that a misbehaving
    class method screws up the instance variables of Behavior that are known
    to the VM.

o   Methods are verified.

o   Permissions can be granted by a method to its callees if the method's
    definition class owns those permissions.  This can be used to invoke
    trusted C call-outs.

o   Primitives cannot be declared for untrusted objects (this might be
    fine-grained in the future).


-----------------------------------------------------------------------------

NEWS IN 2.1.12

This is a bugfix release.  It fixes several problems on 64-bit systems.

-----------------------------------------------------------------------------

NEWS IN 2.1.11

This is a bugfix release.

-----------------------------------------------------------------

NEWS IN 2.1.10

This is a bugfix release, but with this visible change:

o   PackageLoader supports loading package source code from multiple
    directories.

    Directory packages.xml is in       Directories looked in
    /usr/share/smalltalk               /usr/share/smalltalk
                                       parent of local kernel directory, if any
                                       image directory
    parent of local kernel directory   parent of local kernel directory
                                       image directory
    image directory                    image directory

o   Directory>>#append:to: supports passing an absolute path as the file
    name (first argument).  In this case, the file name itself is returned.

This release works under MacOS X 10.3 and 10.4 as well.  It also works
around bugs in MacOS X Tiger's poll function.


-----------------------------------------------------------------------------

NEWS FROM 2.1.5 TO 2.1.9

These are bugfix releases.  The only visible changes are:

o   DLD can open the C library (2.1.6).

o   Fix bug in compilation of ##() expression where the expression
    evaluates to an integer (2.1.8).

o   Fix bug in #next: on sockets (2.1.6).

o   Fix crash when accessing an ill-formed namespace from Smalltalk code
    (2.1.8).

o   Fixes to the JIT compiler (2.1.8).

o   libltdl is no longer configured in a separate subdirectory (2.1.6).

o   Updated version of Automake, Libtool, Autoconf, snprintfv.

o   Updates to Emacs mode (2.1.6).

o   Work around bugs in MacOS X Tiger's poll function (2.1.9).

-----------------------------------------------------------------------------

NEWS FROM 2.1.4 TO 2.1.5

o   Changes in the internals of the GTK+ bindings.  The bindings are
    loaded with the GTK+ package which is enabled by default if GTK+ 2.0
    is installed.  They don't disable the Tk bindings.

o   Can pass integers to C routines that expect floats (where passing
    floats works...)

o   Do idle processes correctly.

o   More examples provided for GTK+.

o   Option -s is always enabled and will be removed in 2.2.

o   Removed some GNU make-isms

o   #return and #return: should reinstate handlers according to the
    ANSI standard, but they currently aren't;  SUnit however needs this
    behavior.  For this reason a workaround was added to SUnit, and
    this behavior will be adopted uniformly in 2.2.

o   Warnings are suppressed correctly under GCC 3.3.

o   --without-emacs suppresses compilation and installation of Emacs LISP
    files

-----------------------------------------------------------------------------

NEWS FROM 2.1.3 TO 2.1.4

o   Fix bugs treating old objects that have already been considered by
    the incremental GC (and survived it).  Example:

	ObjectMemory globalGarbageCollect.
	HomedAssociation class instanceCount

    gave 0 instead of 1.  As a result, --enable-checking now can be
    used.

o   Fix bugs when doing #become: between old objects, exactly one of
    which has not been considered by the incremental GC and was
    incorrectly swept when the collector finally reached it.

o   Fix bugs when garbage collection triggered finalization while a
    primitive was being run.  Finalization is now done in a separate
    Process.

o   Fix bugs treating very large objects.

o   Fix infinite loop when the big object threshold was set between
    the size of survivor spaces and the size of the eden.

o   Printing Integers was unbelievably inefficient.  Fixed together
    with some more low-hanging fruit.

o   SequenceableCollection>>#replaceFrom:to:with:startingAt: allows
    again that stop=start-1 (like replaceFrom: 1 to: 0 with: ...)

-----------------------------------------------------------------------------

NEWS FROM 2.1.2 TO 2.1.3

o   Add Object>>#allOwners.

o   CallinProcesses do not survive across image saves.  This fixed a
    memory leak where upon every image save, the CallinProcess that
    invoked the save was left ready to run in the least.  This also
    caused mysterious bugs whenever, for example, you saved the
    image with

        ObjectMemory snapshot; quit!

    and then tried to do

        Processor yield!

    Now the CallinProcess would wake up from the point it was snapshotted,
    and happily quit the VM!

o   --disable-generational-gc in theory should not be necessary anymore.

o   Fixed a couple of bugs in printing bytecodes

o   Fixed bug in LargeInteger>>#bitAt:

o   Fixed compilation under Alpha

o   Fixed method caching error when using the JIT compiler

o   Fixed rare GC bug

o   Fixed syntax highlighting of unary and binary methods

o   New iteration method Collection>>#fold:, the latest variation on the
    #inject:into: and #do:separatedBy: themes.  You'll undoubtedly love

        #('abc' 'def' 'ghi') fold: [ :string :elem | string, ' ', elem ]

    which yields 'abc def ghi'.  This method can also replace most
    usages of #anyOne together with #inject:into:, as in

        coll inject: coll anyOne into: [ :max :elem | max max: elem ]

    versus

        coll fold: [ :max :elem | max max: elem ]

o   Set was incorrectly said to have 2 instance variables.

o   SmallIntegers are reported to be read-only.

o   Support for generational GC under NetBSD/Alpha (and possibly more
    OSes running on Alpha)

o   Updated libtool to Debian's 1.4.3-9.

o   Upgraded GNU lightning to 1.1.

-----------------------------------------------------------------------------

NEWS FROM 2.1.1 TO 2.1.2

o   Adding instance variables via #addInstVarName: validates their name and
    possibly recompiles the class if the superclass defines an identically
    named class.  Removing class variables via #removeClassVarName: recompiles
    the class.

o   BACKWARDS INCOMPATIBLE: ObjectMemory class>>#snapshot: will fail if it
    cannot write to the file.

o   BACKWARDS INCOMPATIBLE: File class>>#extensionFor: includes the leading
    dot.  This is necessary to obtain the sensible behavior

    (File stripExtensionFrom: string), (File extensionFor: string) = string

o   Better support for detecting the headers when multiple versions of Tcl/Tk
    are installed on the same machine.

o   Fixed call-in bug (if a primitive did a call-in and *then* failed, the
    call-in might have dirtied the method cache and an invalid method was
    invoked).  This could not happen in previous releases, but the new
    #snapshot: primitive satisfies this condition.

o   Configure option --disable-generational-gc to disable usage of libsigsegv
    (which seems to lock up under some versions of MacOS X).

o   Fix lexing bugs under Linux/PPC and, supposedly, S390 and ARM too.

o   Fix misbehavior under GCC 2.x

o   Upgraded libsigsegv from CVS (includes ports to Linux/HPPA and
    OpenBSD/i386).

-----------------------------------------------------------------------------

NEWS FROM 2.1 TO 2.1.1

o   Support for readline 4.2 and 4.3.

o   Works under Cygwin, with generational GC enabled

o   .stinit is not loaded in regression testing mode.

-----------------------------------------------------------------------------

NEWS FROM 2.0.11 TO 2.1

VM changes:

o   #asObject returns nil instead of SIGSEGV-ing when a bogus OOP number
    is passed.

o   Changed default verbosity of the virtual machine.  Specify -V to get 
    execution statistics.

o   Corrected an incredible number of bugs in Processes.

o   Do-its at the 'st>' prompt return the last evaluated value.

o   Finalization is no longer provided by the VM, but rather implemented
    on top of the more general "ephemeron object" facility.  As a result
    of using ephemerons, code referencing the WeakKeyLookupTable class
    should use the new WeakKeyDictionary class (which behaves the same).

o   gst_init_smalltalk will not exit on error, instead it will return an
    error code

o   If an invalid image file is specified along with -I, it is considered
    an error.

o   More portable than ever!

o   New, redesigned implementation of call-ins and call-outs, enforces the
    priority under which the call-ins are executed and supports context
    switches during a call-out as well as asynchronous call-outs.  The
    #defineCFunc:withSelectorArgs:forClass:returning:args: method which
    had been deprecated three years ago was finally removed.

o   Primitives are written with a `little language' (actually C with a few
    extra directives) and preprocessed to C at build time.

o   Rewritten the garbage collector: it is now generational and incremental.

o   Small massaging to the bytecode set.  Replaced little-used push -1
    and push 2 bytecodes with push signed 8-bit and push unsigned 8-bit
    bytecodes

o   Smalltalk processes can ask not to be interrupted by external events.

o   Source code line number stored in the bytecodes.

o   Support for single-stepping into a Process (to be used and abused by
    debuggers).

o   Support for compile-time evaluation with the ##( ... ) syntax.

o   Support for compile-time Namespace resolution, with any of the .
    or :: scope-resolution operators (former used in kernel source code).

o   Unused JIT-compiled code is garbage collected.

o   Upgraded libtool and libltdl to 1.4.3.


Smalltalk changes:

o   Associations that are part of a Namespace or a class pool know
    which namespace they are in and, when stored, resolve to the
    association that is already in the namespace.  This is achieved
    through a new class VariableBinding.

o   Backtraces don't show methods that are internal to the exception
    handling system.

o   Calls to dynamically loaded libraries are resolved on demand
    rather than right after the image is loaded.  Useful for GTK+
    bindings which have thousands of function to be resolved.

o   Class autoloading supports namespaces.  In addition autoloaded
    classes have a proper metaclass even before they are loaded,
    and keep the same VariableBinding they used to have before
    loading.

o   Class pool dictionaries know about the class that hosts them.

o   CompiledCode supports dispatching the bytecodes to an object that
    wishes to decode them.

o   Creating an instance of a variable class with #new creates an
    instance with no indexed variables, instead of failing.

o   Deprecated Integer>>#radix: in favor of #printStringRadix:.

o   "Falling off" an exception handler does not resume a resumable
    exception: instead the #on:do: block is always left like it already
    was for non-resumable exceptions.  For example

     | var |
     [ var := self mySelector ]
	on: MessageNotUnderstood
	do: [ :ex | 1234 ]

    used to give 1234 as the answer to the not understood message and
    hence used to assign it to var.  Instead now 1234 is returned by
    #on:do: and then discarded.  Also,

     [ 'Huey' printNl.  self mySelector.
       'Dewey' printNl.  self mySelector.
       'Louie' printNl.  self mySelector ]
	   on: MessageNotUnderstod do: [ :ex | ].

    used to resume the block and then to print all the three strings,
    while now it only prints "Huey" before leaving the #on:do: block.
    This was caused by an incorrect reading of the ANSI standard.  The
    correct way is to write `ex resume: 1234' or `ex resume' explicitly
    in the exception handler.  This is *BACKWARDS INCOMPATIBLE*.

o   Namespaces use instance variables properly to store information
    about superspaces and subspaces (they used to use special keys
    such as #Super).

o   New class RecursionLock that is like Semaphores but will let the
    Process that owns the lock send #wait without actually waiting.

o   New syntax %<trueString|falseString>n supported by String>>#bind...
    picks one of the two strings depending on the truth value of %n.

o   The packages file is XML.  It also contains enough information to
    simplify the Makefiles and avoid unneeded recursive invocations of
    make.

o   Protected blocks (#ensure:/#ifCurtailed:) are executed even if the
    enclosing process is terminated.  Processes receive a notification
    (SystemExceptions.ProcessBeingTerminated) when they are sent
    #terminate.  They are also removed from the semaphore they are
    waiting on (if any).

o   Support for pluggable debuggers to be started whenever an error
    exception fires.  An example text-mode debugger is provided, as well
    as a nicer Blox debugger.

o   The EndOfStream exception is now a notification exception (i.e. not a
    fatal exception).  The ReadStream class raises it (it did not because
    ANSI mandates that it returns nil and does not fail at the end of the
    stream; turning EndOfStream to a notification allows us to satisfy
    ANSI and raise the exception at the same time).

o   Virtual filesystems for unzipping, untarring, uncpio-ing, etc. are
    now implemented.


Goodies:

o   Database manager with MySQL driver

o   Emacs Smalltalk mode back from the dead (thanks to David Forster)

o   GTK+ bindings support callbacks and GTK+ 2.x

o   NetClientsBase is integrated in the base image.  FileStreams support
    opening URLs (only file URLs until you load NetClients).

o   Numerical methods library

o   The Parser and its companion classes have been dropped, and their
    users converted to use the Refactoring Browser's parser, formatter
    and parse trees.  Some of the advantages, such as better syntax
    highlighting in the browser, are already visible.

o   WebServer supports virtual hosting.  The change is backwards compatible,
    if you don't intend to use virtual hosting you don't need to change
    your initialization scripts, and you don't either need to change the
    servlets in any way.

o   WebServer supports STT (Smalltalk Templates) a` la PHP

o   XML parser supports SAX 2.0 API


Blox & the browser:

o   Added callbacks to BMenu

o   Added or improved many menus (e.g. Method set browser's upper pane)

o   Added menu bars that mimic the pop-ups

o   Changed fonts

o   Class definitions are syntax highlighted just like methods

o   Class hierarchy browsers enters "add method" mode automatically whenever
    a protocol is clicked

o   Context inspector is now a debugger with context list, variable names,
    and single-step capabilities (*could lock up the JIT compiler!*)

o   Faster!

o   Fixed many bugs

o   Rewritten inspectors, with multiple visualization and Dive/Pop
    functionalities

o   `self' is the inspected object when evaluating code from an Inspector

o   The clipboard and the primary selection work as expected

o   The label that is shown in a BDialog wraps correctly.

o   Undeclared variables used in a worksheet variables survive across
    multiple evaluations

-----------------------------------------------------------------------------

NEWS FROM 2.0.2 TO 2.0.11

These are bug-fix releases.  The only visible changes are:

o   Added Integer>>#printStringRadix: which replaces Integer>>#radix:
    The latter is now deprecated and will be removed in 2.2 (2.0.11)

o   Added shortcut keys to the browser (2.0.7)

o   Better error detection in TCP connections (2.0.11)

o   Better error recovery in the parser (2.0.7, 2.0.11)

o   Modified CObjects to be more orthogonal (2.0.4)

Bug fixes:

o   Backported several little improvements for the development branch
    (2.0.11)

o   ByteStream on a ByteArray is now equivalent to a FileStream (2.0.5)

o   Blox compiles cleanly on FreeBSD (2.0.5)

o   Blox shows XPM images again (2.0.9)

o   Child process when opening a pipe is made a session group leader, so that
    job control will work correctly (2.0.11)

o   Detect FreeBSD's Tcl/Tk port in which tclsh is not a valid binary (2.0.11)

o   Fixed dangling pointer in DLD (2.0.11)

o   Fixed failure to compile when libtool is not installed (2.0.11)

o   Fixed race condition in Delay (2.0.7)

o   Fixed race condition between arrival of SIGCHLD and SIGIO (2.0.6)

o   Fixed rare bogus compilation error (2.0.11)

o   Fixed rare out-of-bounds access to context objects due to incorrect
    computation of the number of stack slots needed by cascades (2.0.6)

o   Fixed rare garbage collection bug, when a GC was triggered between
    _gst_get_cur_file_name and the creation of a FileSegment that used
    that name (2.0.10)

o   Fixed severe lossage in the JIT related to #ensure: (2.0.11)

o   Fixed testsuite failures when GMP is not installed (2.0.11)

o   Improved autoconf detection of Tcl/Tk (2.0.5)

o   Improved detection of pipe-like behavior of files such as FIFO
    special files and /proc special files (2.0.6)

o   Improved handling of low-water conditions (2.0.6)

o   Included implementations of long double transcendental
    functions in case the C library does not provide them (2.0.4)

o   Instead of guessing, if possible use MAP_NORESERVE to have
    the OS give us a big consecutive area of memory to store the OOP
    table (2.0.9)

o   Re-enabled separate memory space for large objects, was disabled
    because of a bug (2.0.6)

o   Removed a couple of C99-isms in the source code that had
    crept in (2.0.3)

o   Restored portability problem to systems with unaligned doubles
    with clever compilers such as GCC 3.0 on the SPARC (2.0.8)

o   SequenceableCollection>>#includes: was unnecessarily slow (2.0.6)

o   Support for locale files stored in a user-specified directory (2.0.9)

o   SUnit upgraded to 3.1 (2.0.6)

o   Various updates to libsnprintfv (2.0.10)
 
o   XPath package and XSL processor are included under the LGPL (2.0.6)

-----------------------------------------------------------------------------

NEWS FROM 2.0.1 TO 2.0.2

This release should be ANSI compliant.  All the known problems with ANSI
compliancy have been fixed.

VM changes:

o   #ensure: methods are always executed, even in the presence of non-local
    returns.  #ifCurtailed: conditions are also more general and include
    non-local returns (not only exceptions).

o   Floating point constants are always parsed as long doubles to increase
    their precision.

o   Implemented the `make installcheck' target.

o   LargeInteger primitives failed and went back to Smalltalk code when
    zero operands were involved; LargeInteger exact division in addition
    failed to detect division by zero.

o   Object copying with the default semantics is a primitive for speed

o   Support for separate FloatD/FloatE/FloatQ classes with varying
    precision.

o   Uses libsnprintfv to simplify printing OOPs (custom %-specifiers)


Other Smalltalk changes:

o   All the expected failures in the ANSI test suite have been fixed (both
    with the bytecode interpreter and the JIT---the causes of the failures
    were different in the two cases).

o   Fixed a few bugs in the parsing of ScaledDecimal constants in both the
    compilers (builtin and Smalltalk-in-Smalltalk)

o   Fractions print without parentheses

o   Some numeric methods return values of different classes (for ANSI
    compliancy).

o   The package loader stores absolute paths to the packages

-----------------------------------------------------------------------------

NEWS FROM 2.0 TO 2.0.1

VM changes:

o   Fixed embarrassing syntax error in the JIT

o   Image directory must not be world-writeable anymore, unless of course
    the image must be built

-----------------------------------------------------------------------------

NEWS FROM 1.95.13a TO 2.0

VM changes:

o   A few internal data structures are now implemented as balanced binary
    trees rather than resizable arrays.  This allows for faster lookup.

o   All the functions and variables in the C source code are now
    commented.

o   Big objects are allocated outside the main heap, hoping to improve the
    locality of reference between small objects

o   Byte and word instance variables are range checked.  Previously (it was
    a bug, not a feature) we only checked that the values of byte instance
    variables were < 256 (and not even that they were >= 0).

o   Globals are searched in the class namespace before and in the
    pool dictionaries (i.e. in the imported namespaces) after.  This is
    backwards-incompatible.

o   Just-in-time compiler to native code for the PowerPC, SPARC and x86
    architectures

o   Hash table sizes are assumed to be power of two.  The class library
    and the VM both take care of scrambling the bits with some rotations
    instead of using the modulo to do this.

o   Image loading is up to 15% faster

o   LargeIntegers operations are demanded to the GNU MP library if found
    (otherwise, the old Smalltalk implementation is used).  On my 266MHz
    PC this means that the factorial of 100000 is computed in 6
    seconds. :-)

o   ObjectMemory hooks are traced only if -E/-D is specified, in order to
    decrease the amount of noise given by the more commonly used -e/-d.

o   Optionally, preemptive multitasking of Processes can be enabled.

o   Primitives are named rather than numbered

o   Removed most special-purpose hooks from the higher-level parts of the
    system, such as the compiler and C interface, into the low-level
    parts (such as GC and the VM)

o   SIGUSR1 triggers a backtrace

o   Support for file sizes over 2 gigabytes

o   vpath builds are fully supported


Other changes:

o   All the libraries are loaded within their own namespace.  This
    is STInST for the Smalltalk compiler and parser, I18N for the
    internationalization library, TCP for the sockets library, and
    BLOX for the GUI library.  You might need to change your pool
    dictionaries declarations accordingly.

o   ANSI-compliance tests integrated into "make check"

o   Backwards-incompatible fixes for ANSI compatibility in:
	SequenceableCollection>>#replaceFrom:to:with:
	SequenceableCollection>>#copyReplaceFrom:to:withObject:
	Dictionary>>#keyAtValue:
	Bag>>#add:
	Bag>>#add:withOccurrences:
	PositionableStream>>#next
	PositionableStream>>#position
	PositionableStream>>#position:

o   Changed the names of these methods, for ANSI compatibility:
	Float class>>#largest (now #fmax)
	Float class>>#smallest (now #fmin)
	Float class>>#mantissaDigits (now #precision)

o   Constants like CDoubleSize that are used only to pass information
    about the runtime environment do not pollute the Smalltalk namespace
    anymore.

o   Deprecated methods in SystemDictionary were removed (use their
    counterparts in ObjectMemory).

o   Documentation includes BLOX, TCP and internationalization.

o   FileDescriptors support #atEnd for pipes as well

o   File operations go through a virtual filesystem layer that can
    provide transparent decompression and archiving of files.

o   Floats now implement IEEE 754 correctly.  NaNs and infinities
    are generated by transcendental functions (since arithmetic
    operators already generated them), negative zero is correctly
    handled, and custom versions of #min:, #max: and the like are
    provided that take NaNs into accounts.  Tests for NaN and
    infinity are possible for any kind of Number.

o   A gst.m4 file, providing an AM_PATH_GST autoconf macro, is installed
    (courtesy of Ryan Pavlik).

o   Load.st and Reload.st correctly provide an exit status.

o   Optimized and bugfixed many numeric computations: Fractions based
    on algorithms in GNU MP, bitwise operations such as #highBit,
    factorial, etc.

o   Pool dictionaries can be specified with dot notation to indicate
    subspaces.

o   Regression testing mode disables backtraces when an exception is
    raised.  Only the error message is printed.

o   The behavior of the filename-manipulation class methods in File has
    changed in sometimes backwards incompatible, but more correct, ways.
    For example, the path of '/vmlinuz' is '/' and not the empty string.

o   The disabled operations in Blox that were kept for backwards
    compatibility with GNU Smalltalk 1.1.5 have been removed.

o   The ObjectDumper's #postLoad hook is only called the first time
    an object is found in the stream; once the object got its
    definitive shape it makes no sense to lose time (or even do harm)
    with post-load fixups.  This change is at least in theory backwards
    incompatible, but I doubt it has practical relevance.

o   The `packages' file is searched in the parent directory of the kernel
    directory, rather than in the image directory.

o   The policy for picking the exception handler when more than one is
    specified is best-fit rather than first-fit.  For example, previously

	[...] on: Error do: [...]
	      on: MessageNotUnderstood do: [...]

    never picked the MessageNotUnderstood handler because the Error handler
    was chosen earlier.
 
o   The Random class includes a facility to use a common Random object
    instead of forcing every client to use his own object.

o   The source has been converted to ANSI C and reformatted according
    to the GNU standards.  All the external symbols are prefixed with
    either _gst_ or gst_ depending on their privateness.  Since there
    were four public symbols in all, this does not cause much trouble,
    but it *is* backwards incompatible

o   To avoid namespace pollution, the C callout mechanism does not
    generate global variables with strange names anymore (actually,
    it generates them in a separate namespace).

o   true, false and nil inside Arrays are parsed according to the ANSI
    standard.

o   Warnings are raised if one tries to send any of the six reserved
    keywords, since they most likely forgot a period (the six keywords
    are #self, #super, #true, #false, #nil and #thisContext).


New goodies:

o   GTK+ bindings are provided.  No way to have callbacks from GTK+ to
    Smalltalk yet, and we need a way to have gtk_main act as a coroutine.
    Note that these bindings are a proof-of-concept and are expected to
    be used internally by a future port of Blox to GTK+.

o   NetClients toolkit, supporting popular Internet protocols.  NNTP and
    IMAP are not very well tested yet, but HTTP/FTP/SMTP/POP3 are.

o   New NamespaceBrowser tool (the traditional four-paned browser)

o   Primitive support for address families other than AF_INET.  In particular,
    the default implementation classes for sockets are now picked by subclasses
    of SocketAddress, rather than by a class instance variable in Socket.  Also,
    the #byName: and #allByName: methods should now be sent to SocketAddress
    rather than to one of its subclasses such as IPAddress.  SO_REUSEADDR is
    not accessible anymore by instance methods because it was totally useless;
    instead it is always set for server sockets.

o   Proxy class loader, used to generate documentation without compiling the
    source code.

-----------------------------------------------------------------------------

NEWS FROM 1.95.5 TO 1.95.13a

These are bug fix releases.  Bug fixes include:

o   correct installing when DESTDIR is specified (1.95.13a)

o   fixed possible infinite loops in exception handling (1.95.12)

o   improved portability to HP/UX systems and systems without
    the readline library (1.95.12)

o   fixed hangups that sometimes happened when outputting to
    a tty (1.95.11)

o   adopted the glibc implementation of MD5 (1.95.11)

o   fixed exactly four bugs due to missing periods (symptom:
    strange `does not understand' messages). (1.95.10)

o   improved SortedCollection performance (1.95.9)

o   ensured that the Directory class>>#image method returns the
    *current* rather than the default image path (1.95.9)

o   fixed bugs in the namespace classes (1.95.8)

o   fixed lossage when many I/O events happened in a row (1.95.7)

o   The #(a b) syntax for symbols inside Arrays has been obsoleted,
    since 2.0 will parse it according to the ANSI standard.  A warning
    is emitted if you use it.  The source code has been modified
    accordingly. (1.95.6)

-----------------------------------------------------------------------------

NEWS FROM 1.95.4 TO 1.95.5

VM changes:

o   Calls to the virtual machine from plugins, and objects that are passed
    as OOPs in call-outs, put OOPs in the incubator rather than in the
    registry; call-outs are wrapped in incSavePointer/incRestorePointer.

o   Command line parsing uses getopt and thus behaves exactly like other
    programs (previously there were some discrepancies)

o   Errors are signaled if a file specified on the command line is not found.

o   Events can be passed to the Smalltalk image via an ObjectMemory class.

o   Fixed bug in evalExpr and typeNameToOOP (gave a parse error).

o   Removed the `make optimize' mess.

o   Supported two additional ways to pass objects from Smalltalk to C:
    #selfSmalltalk and #variadicSmalltalk, which are similar to respectively
    #self and #variadic but pass raw object pointers to the C function
    instead of attempting automatic conversions.

Other Smalltalk changes:

o   #bindWith:... methods now accept other objects than Strings as parameters.

o   Complete hierarchy of exceptions, with more meaningful error message
    and possibility of more fine-grained exception handling.

o   FileStream calls are not blocking and can preempt the current Process.

o   FileStream handling has been rewritten; the buffering is now done
    by Smalltalk code rather than implied in stdio.  Unbuffered file
    descriptor access (which used to be provided by UnixStream, defined
    by the TCP package) is provided by FileStream's parent, FileDescriptor.

o   Many methods in SystemDictionary were moved to ObjectMemory (a new class);
    the old ones are now deprecated.

o   SortedCollection's #includes:, #indexOf:, and #occurrencesOf: can
    check for objects that could not be inserted in the collection
    (e.g. an Integer in a collection of Strings).  Fixed bugs in the same
    methods related to sort blocks for which sort-block equality
    (a <= b and b <= a) does not imply equality.

o   Support for init blocks will be removed in a future version, as it
    was replaced by the much more powerful ObjectMemory class.

o   The SystemDictionary>>#enableGC: method does not exist any more, since
    it only caused harm (the correct way to obtain its effect is to use the
    incubator, since what we want is to unregister a batch of many objects
    at the same time).

o   The TCP library does not poll the socket for I/O, but relies on the
    system's preemptive I/O facilities.  As a result, the polling period
    methods in Socket have disappeared.

o   Usual round of bug fixes


New goodies:

o   MD5 checksums

o   Perl regular expressions

o   Support for localization, internationalization and multiple character sets
    (note: must be tested more thoroughly)

-----------------------------------------------------------------------------

NEWS FROM 1.8.5 TO 1.95.4

VM changes:

o   Added support for allocating objects with malloc so that they don't move
    across GCs.

o   Added support for `free' methods, that is, for calling methods that do
    not reside in a MethodDictionary or in the receiver's MethodDictionary.
    This can be achieved by sending #perform: with a CompiledMethod parameter.
    #executeStatements is now a free method.

o   A little more performance could derive from keeping the MethodDictionaries
    no more than 75% full (actually this was done to fix a discrepancy between
    the C-coded identityDictionaryFindKeyOrNil, which grew a full dictionary,
    and the Smalltalk class, which assumed that dictionaries are never full).

o   An object must be explicitly marked as to be finalized *every time the
    image is loaded*.  That is, finalizability is not preserved by an
    image save.  This was done because in most cases finalization is
    used together with CObjects that would be stale when the image is
    loaded, causing a segmentation violation as soon as they were accessed
    by the finalization method.

o   Fixed bug when #at: and #at:put: were handled by a C call-out.

o   Invalid C call-outs raise an error instead of simply writing to stdout.

o   Sending arithmetic selectors to a Float with a SmallInteger parameter
    (not vice versa) does not cause the primitive to fail (much faster!).

o   Support for a fetch/decode/execute pipeline on architectures with a
    lot of registers.

o   Works on Solaris and possibly other systems (thanks to Dirk Sodermann!
    I would never have caught it!!!)


ANSI & cross-dialect compatibility:

o   DateTime and Duration classes provided.  The Date class does not support
    2-digit years anymore---instead, a proleptic calendar is adopted for years
    before 1582 (*backwards-incompatible*).

o   ScaledDecimal class provided; the 2.0s3 syntax for literals is supported.

o   Sending #asInteger to a Number `rounds' the number instead of `truncating'
    (*backwards-incompatible*)

o   Support for the #{ClassName} syntax referring to the association for
    the named class.


Other Smalltalk changes:

o   A great part of the exception handling code has been rewritten.  The
    new algorithm scans backtraces for contexts marked as storing exception
    handlers instead of storing the handlers' state in a Dictionary, which
    is smarter, faster when no exceptions are raised, and less bug prone.

o   BList (Blox's list box) used indices that were half 0-based, half
    1-based.  This caused an infinite loop if you double-clicked a BList;
    for this reason they have been corrected to be 1-based everywhere
    even if this is *backwards-incompatible*.

o   IMPORTANT: the preferred method for mantaining geometry in Blox has
    changed, as a provision for switching to other (less flexible in this
    respect) toolkits like GTK+.  The #...Offset: methods should *not*
    be used anymore as they are now flagged implementation-dependant.
    Instead, you should use the new #inset: method, or rely more heavily
    on BContainers which now use the packer (in a backwards-compatible way).
    Relying on widget outside of the client area is also deprecated because
    GTK+ alignments do not allow this.

o   In general, the performance and stability of Blox are now more acceptable.

o   More ObjectDumper proxies are provided, including easy support for
    singletons, controlled creation of the object at load time, and
    versionable schemas.

o   ObjectDumper sends #postStore rather than #postLoad to restore an
    object to its previous state after storing it.  For backwards
    compatibility, #postStore's default action is to send #postLoad.

o   ObjectDumper uses exception handling to ensure that #postStore (see
    above) is sent to an object that was sent #preStore.

o   Sets support arithmetic; to avoid this to propagate into Dictionary,
    a new common superclass of Dictionary and Set (HashedCollection) has
    been created.

o   Usual round of bug fixes


New goodies:

o   Enhanced and refactored socket library, including support for multiple
    address families, UDP servers, out-of-band data and ICMP sockets.

o   GDBM interface works again and has a nice Dictionary-like layer.

o   LargeArray classes which obtain optimal memory consumption (at the
    expense of O(log n) access).

o   Smalltalk code pretty printer

o   SUnit tool for writing test suites (missing: a nicer user interface).

o   The command-line interface supports readline's completion (for filenames,
    globals, and method keywords)

o   The VisualWorks XML parser is now included.  It will gradually replace
    the InDelv parser (2.0 will include the InDelv parser, but its usage will
    be deprecated).  The reasons are that the VW parser is more modern (it is
    validating and supports namespaces), it is more actively mantained, and
    there is an open-source XSL processor that uses it.

o   Web server (needs more testing, but is relatively stable)


Packaging and other external changes:

o   Automake is used to mantain makefiles more easily; the library is now
    in a `libgst' directory rather than `lib'.

o   At last, there is a new module system using libtool to build modules
    as shared dynamic libraries.  Old-style support for portable dlopening
    has also been superseded by libltdl.  This scheme is incompatible with
    the old one.

o   HTML documentation can be built.  A custom version of texi2html is
    included which produces very pretty output.

o   Moved Emacs interface and CPP implementation to an `unsupported'
    directory.

o   The configuration file is not installed anymore

o   The class reference has indices and cross-references

o   Using libtool gives the benefit of versioning libgst.  The current
    version is 1:0:0 (there is no cfuncs.h file anymore, hence the
    age of 0).


-------------------------------------------------------------------------------

NEWS FROM 1.8.4 TO 1.8.5

o   Had forgotten to bump up version number.

o   The position where we allocate the heap is now found at startup rather than
    when configuring, to deal (for example) with the presence of more shared
    libraries.  The test has been made more portable and checks whether pages
    had already been mapped.

-------------------------------------------------------------------------------

NEWS FROM 1.8.3 TO 1.8.4

o   Added autoconf test to find where to mmap the heap.

o   Documented new mailing list (help-smalltalk@gnu.org)

o   Removed (as announced in 1.8.3) the ByteMemory and WordMemory classes.

o   Supported { ... } syntax for creating Arrays without sending
    #with:... (Squeak also has them on LHS, but this is seldom used).

-------------------------------------------------------------------------------

NEWS FROM 1.8.2 TO 1.8.3

This is a bug-fix release.

o   Better Tcl/Tk autoconf test provided

o   ByteMemory and WordMemory are now deprecated.  References to it have
    been removed from the manual; the code will be took out soon

o   DLD functions are relinked correctly when an image is restored

-------------------------------------------------------------------------------

NEWS FROM 1.8.1 TO 1.8.2

This release was provided mostly as a means to synchronize with other
Smalltalk dialects with regard to exception handling, and to provide
a version that could run the SUnit test system.  In the meanwhile,
several bugs were fixed.

o   A few SortedCollection bugs fixed.

o   ANSI Exceptions provided.  The only backwards-incompatible change is
    that the old Exception and ExceptionCollection classes are now called
    CoreException and ExceptionSet, respectively.  Should cause little
    problems (if any).

o   Fix to the VM: not understood messages don't overwrite the method
    cache

o   Fixed bug in re-linking dynamically linked functions at image startup.

o   More stable in low-water conditions

o   OSes without /dev/zero supported

-------------------------------------------------------------------------------

NEWS FROM 1.8 TO 1.8.1

I just received this patch for a gst-config script and could not wait
publishing it!!!  This version also modifies install-pkg to be more
flexible; it is now called gst-package and installs in the binary
directory.

-------------------------------------------------------------------------------

NEWS FROM 1.7.5 TO 1.8

When I took over mantainance, I decided that increasing the second version
number would have meant a mountain of changes and improvements in GNU
Smalltalk's speed and flexibility.  This is not the case with the step
from 1.7.5 to 1.8, which only includes some things that I had written
a few months ago and, until now, had only been in the development version.

The reason is that 1.7.x was, overall, an unlucky series, crippled with
bugs and packaging problems.  I admit my faults, I apologize, and seek
forgiving from you. :-/ I had little free time, and devoted most of
it to 2.0's development instead of being more careful with the stable
versions.

Recently, when university courses ended, I had more free time available,
and was able to fix a lot of these problems (many thanks, among others,
to Albert Wagner).  Hoping that changing the second version number
ends the 1.7.x bug saga (in Italy 17 is believed to be an unlucky number,
just like 13 in the US), I am releasing this version as 1.8.

The changes from the development version that I had mentioned include:

o   DLD supports BeOS.

o   Execution times for SortedCollection are O(n log n) rather than O(n^2),
    and are amortized so that long runs of adds are the same as a single
    #addAll:

o   Working growable object table (OOP table in Blue Book parlance),
    thanks to the new memory allocator (which can handle separate
    sbrk-like regions).

-------------------------------------------------------------------------------

NEWS FROM 1.7.4 TO 1.7.5

o   Abort compilation if a method turns out to be too complex for the
    bytecode set (e.g. if it jumps too far).  Previously, erroneous code
    was generated.

o   Fixed bug in LargeIntegers which broke gst on HP-UX (and possibly other
    OSes which load programs high in memory)

o   Fixed bug in parsing #( () ), where empty inner arrays were parsed to
    nils

o   Fixed crash in parsing #[]

o   Support LinuxPPC which loses on va_arg(..., char)

-------------------------------------------------------------------------------

NEWS FROM 1.7.3 TO 1.7.4

o   Adopted GNU Free Documentation License

o   Fixed bogus errors on big-endian machines

o   Fixed a few (innocuous) typos

o   Fixed bug in configure

o   Fixed bug in redefining a class that had pool dictionaries (caused crash
    on first compile!)

o   TCP ignores SIGPIPE on writing to a socket

-------------------------------------------------------------------------------

NEWS FROM 1.7.1 TO 1.7.3 (1.7.2 was retired because of a packaging problem)

o   Adopted Lesser General Public License

o   Fixed crash on sends to super from a block

o   Finally fixed the installer after years of struggle...

o   In C call-outs, ByteArrays passed as Strings are considered
    null-terminated, and Strings passed as ByteArrays are not.
    This allows more interoperability between ByteArrays and Strings;
    the choice of whether to truncate them to the first null is left
    to the library (which uses #defineCFunc:...), not to the user.

o   Time zone support

o   Various Delay-related bug fixes

-------------------------------------------------------------------------------

NEWS FROM 1.7 TO 1.7.1

o   Fixed bug when left shifting -1

o   Fixed bug when returning from non-existent method context

o   Test suite was broken (`.ok' files were not up to date)

-------------------------------------------------------------------------------

NEWS FROM 1.6.2 TO 1.7

Changes to the VM:

o   #at: and #at:put: implementations don't retrieve the instance
    specification twice.

o   Growable object table (OOP table in Blue Book parlance) allows to
    use huge data structures---not working yet... I have to find a way
    to reserve memory without allocating it.

o   New structures for contexts and BlockClosure makes it possible to do
    things faster, creating BlockClosure objects at compilation time and
    simplifying the VM's job when blocks are particularly well-behaved
    (so called `clean' blocks).  Now there are four levels of block
    optimization:
    - inlining (always been there)
    - `clean' (no refs. to self, to instance variables, to temporaries
      that reside in outer contexts, no method returns)
    - `self-contained' (can reference self or instance variables)
    - `full' (can do everything)

o   Number of arguments is checked in #perform:...

o   More polite behavior: when a Process object yields control, the
    virtual machine automatically goes to sleep for a millisecond to
    give more occasions to run to the other processes running on the
    operating system.

o   Blocks store their bytecodes in a separated CompiledBlock object.

o   The image no longer has to store all the pointers to the global OOPs
    (classes, symbols, Processor,...) Instead the program is able to
    rebuild the pointers after the image has been loaded. This should
    make the image format for future versions more stable.

o   The method header is cached together with the method OOP.

o   Using various dirty tricks increased the interpreter's speed; they
    include caching the number of the primitive which #at:/#at:put:/#size
    called last time, avoiding to retrieve instance specifications twice,
    and specially handling cases where execution is surely LIFO.

o   You can read and write 32-bit LargeIntegers (64-bit on Alphas) to word
    objects, to the Memory object and to C objects.



Other changes to the C code:

o   `configure' macros specific to GNU Smalltalk are split in several small
    .m4 files that are then automatically grouped in aclocal.m4

o   DLD interface to AIX

o   Floating point operations with infinity/NaN work fine with FreeBSD.

o   Full open-coding of control structures (including #whileTrue,
    #whileFalse, #repeat)

o   Maximum number of instance variables is now 262143 (ANSI mandates 65535)
    Not so useful anyway until we add bytecodes that access variables whose
    index exceeds 63...

o   New -K option to load file from the shared files path (useful for
    Load.st, for example).

o   Option parsing now more similar to getopt and getopt_long's (-- does not
    mean `standard input', but `no more options').

o   Parameter checking in callins from C to Smalltalk.

o   Support for ByteArrays in Smalltalk code, like #[1 2 3].
						    ^	  ^

o   Support for forward references through the Undeclared dictionary.

o   Support for large integers in Smalltalk code, like 16r800000000000.

o   Support for sharps inside array constants, like #(1 #(2 3) 4).
							^

o   Support for the [ :a :b || c d e | ... ] syntax.
			    ^^

o   Support for the #(1 2 3 #a #b #'cdef' 45) syntax for Symbols
			    ^^ ^^ ^^^^^^^

o   Support for the 1.0d32 and 1.0q254 ANSI syntaxes for Floats
		       ^	  ^

o   The parser uses GNU's winning obstacks to avoid memory leaks (important
    because large integers are passed to the parser into a structure that
    is created on the heap, and freeing it at the appropriate points was
    pretty hard).

			    
Changes to the Smalltalk system (new classes, etc.):

o   Class TranscriptInterface changed its name to TextCollector

o   Easy to use weak collections are included in the basic image

o   File-outs without exclamation marks are readable from other Smalltalks
    too (that was a bug).  As for exclamation marks, please wait a bit more;
    I can do that only between two versions whose image files are compatible
    (otherwise I'd break all the code that you wrote...)

o   Methods know about the class to which they belongs and about their
    selector.

o   Mutation of existing instances is done with a trick that allows the
    original instances to preserve their original instance specification
    during the mutation process; the result is simpler and (I hope)
    more stable code.

o   Namespaces (yeah!)

o   New CharacterArray class (superclass of String) is a provision for
    multilingual support...

o   New LookupTable class: it behaves like Dictionary but it is represented
    as an IdentityDictionary; not in the Book but is quite standard

o   New MethodDictionary class avoids crashes caused by partially updated or
    inconsistent method dictionaries.

o   Printing `for the programmer' and printing `for the user' are separated.
    The former is accomplished by the familiar #printOn: and #printString
    family; the latter is accomplished by the new #display... family of
    methods.

o   Restored LookupKey now that I finally figured out what it was meant to do.

o   Small integers are now instances of SmallInteger (used to be Integer).


    
Changes to BLOX and the GUI:

Blox has undergone major improvements in this release.  Many more features of
Tk have been implemented, making it a lot more powerful especially in the
creation of mega-widgets.

o   BImage reads XPM files; some images are available as BImage class methods

o   BLabels do word wrapping.

o   Browsers support namespaces

o   Callbacks in BEdit controls.

o   Canvases handle child windows, images and scrolling

o   If possible, different short-cut letters are chosen for items in the same
    menu

o   Controls with two scroll bars look better; in addition the user can force
    scroll bars to appear and disappear on the fly (previously the widget code
    hard-coded their presence or absence). Finally, scroll bars are hidden
    automatically when they are not needed.

o   Images in a text widget

o   Many more methods for miscellaneous features (some interesting ones are
    Blox class>>#atMouse to get the widget under the mouse, #fontWidth:,
    #fontHeight: and Blox class>>#fonts to measure and enumerate fonts,
    Blox class>>#createColor:saturation:value: for HSV colors).

o   New BEventSet class to assign the same event handlers to many widgets

o   New (private) BPopupWindow class allows to create popup widget (drop-down
    lists and balloons, and lots of other possible uses!); it is easily used
    by sending #new to a widget class (a `should not implement' error was 
    issued in previous versions).

o   Some extended widgets are included in Blox as useful examples (progress bar,
    drop-down lists, balloon help).

o   Source more commented (but not enough yet...)

o   Syntax highlighting



New goodies:

o   Lisp and Prolog (!) interpreters by Aoki Atsushi & Nishihara Satoshi

o   HTML/XML parser and World Wide Web Consortium's Document Object Model

o   TCP/UDP layer

-------------------------------------------------------------------------------

NEWS FROM 1.6.1 TO 1.6.2

o   Can load images produced by system with similar sizeof(long) but
    different endianness.

o   Class reference now includes a beautiful class hierarchy.

o   DLD class always present (even where it is not functional). This prevents
    `undeclared variable' errors in code using DLD where it is not supported
    (they will have a run-time error instead).

o   DLD interface to libtool's libltdl.a

o   DLD tries to append sensed extensions to the passed filename

o   Fixed more bugs in the makefiles

o   Fixed parse error :-( on some systems in sysdep.c (I'm sorry for the
    problems that this caused to so many of you).

o   GNU make is not needed anymore

o   More logical and coherent policy to look for the image file. In 1.6.1 we
    chose a default path, and overridden it if an image was found in the
    current directory: the problem was that snapshots were *always* saved to
    the default path! Now, instead, we choose a path for the image directly.

o   Now uses the `missing' shell script if bison and makeinfo aren't found

o   Readline interface is enabled by default.

-------------------------------------------------------------------------------

NEWS FROM 1.6 TO 1.6.1

o   Fixed bug in the makefiles (install target)

o   GNU qsort is provided

-------------------------------------------------------------------------------

NEWS FROM 1.1.5 TO 1.6

The versioning scheme has changed - I didn't need three version numbers,
I even wonder when and if I'll change the first.

Also the mantainer has changed, from the great Steve Byrne to yours truly
Paolo Bonzini.

Changes to the VM:

o   Blocks are now real closures.  This had a lot of side effects.  For in-
    stance, context realization now happens only after a GC, making GCs
    much less common.

o   #==, #notNil and #isNil are optimized out by the bytecode interpreter.

o   Ctrl-C interrupts and bytecode interpreting errors (`boolean instance
    required') now do callbacks to Smalltalk.

o   Faster &&-based dispatch for GCC (to disable it, define USE_OLD_DISPATCH).

o   Methods that simply return a constant (i.e. ^6 or ^#(1 2 3) or ^nil) are
    now optimized like methods that return self or an instance variable.

o   More inlining in the C code.

o   More than 64 literals (16384) supported.

o   Open-coded relational operators (plus #isNil and #notNil) try to look
    for a jump bytecode immediately following them, and directly do that
    jump (only for GCC new dispatch)

o   Overflow detection in Integer primitives.

o   Sends to super are now handled outside sendMessage so that sendMessage
    does not have to choose its behavior at run-time (it was testing a
    parameter that is always a constant).

o   Support for breakpoints.

o   Support for finalizable objects.

o   Support for readonly objects.

o   Support for weak objects.

o   The GC code now does not analyze OOP slots which are surely free.  This
    change made it up to five times faster.

o   The GC code now skips unused (beyond the stack pointer) slots of a context
    object.

o   The OOP table now has a free list (+200% speed with this!!).

o   The size of context stacks depends on the complexity of its method's code

o   The symbol table is hashed better (the new hash is based on John Boyer's).

o   The VM has more error handling built in: this includes passing integers
    where real OOPs were expected, detecting wrong number of arguments
    passed to blocks, trapping negative sizes passed to #new:, etc.

o   #to:do:, #to:by:do:, #timesRepeat: and #yourself are optimized out by
    the bytecode compiler.



Other changes to the C code:

o   _ inside an identifier is now valid. Note that, in Squeak, _ always
    identifies the assignment operator, even in code like a_b, while GST
    allowed something like a:=b, but a_b was a syntax error. Use of _ inside
    identifiers is common in other Smalltalks to avoid namespace clashes for
    automatically generated code.

o   New command line switch -a: the C code never gets everything after -a,
    while Smalltalk code gets only those arguments that are past -a.

o   New command line switch -Q: produce absolutely no message.
 
o   New command line switch -S: automatically save a snapshot before exiting.

o   New system to include user modules, works like this:
	./modules blox
	make
    To use it, model your Makefile.body and cfuncs.h after those in the
    blox or tcp directories. If you want to have many versions, proceed
    like this:
        ./modules blox;		make; mv gst blox/gst
        ./modules;		make; mv gst base_gst
        ./modules blox tcp;	make
    and you'll have blox/gst with only blox; base_gst with nothing; gst
    with blox and tcp.

o   Portability: now compiles under CygWin (Win32 GCC), HPUX and more.

o   Precise Win32 version of Delay.

o   Support for long GNU style options.

o   The compiled bytecodes are now ran through an optimizer that performs
    jump and peephole optimizations, and eliminates unreachable code.



Changes to the Smalltalk system (new classes, etc.):

o   Added ability to access the Smalltalk arguments; Smalltalk can get
    arguments that follow -a through the SystemDictionary>>#arguments
    method.

o   Added a thread-safe Transcript object which prints to stdout if the
    GUI is not loaded and which is used by #print, #printNl and companions.

o   Added binary dump of Smalltalk objects (class ObjectDumper).

o   Added endian-neutral binary I/O to FileStream through the new
    ByteStreams.

o   Added fast ByteStreams, specially crafted for ByteArrays, which can
    be used with ObjectDumper.

o   Added ContextPart (superclass of MethodContext and BlockContext).

o   Added DirectedMessage.

o   Added file-handling classes (File and Directory).

o   Added IdentitySets.  Also, most of the Set hierarchy has been
    refactored and rewritten for better speed and design.

o   Added LargeIntegers.  LargeInteger literals can't be used in Smalltalk
    code yet, though. 

o   Added optional automatic freeing of CObjects (through finalization)
    and automatic closing of FileStreams.

o   Added RunArrays.

o   Added three subclasses of CObject: CSmalltalk, CInt, CUInt (and
    analogous messages to the Memory class).

o   Added useful functionality to Date.

o   Added ValueAdaptors.

o   Added #zero and #unity in Number; they make a few operations a bit
    faster if you override them in subclasses (it is not necessary though).

o   #allInstances now returns a weak object, thus avoiding that a call
    to it forces GST to keep lots of unused objects in the heap.

o   A lot of messages have been added to most classes.

o   An implementation of a great idea by Andreas Klimas: a packaging system
    which automatically handles prerequisites and tests availability of C
    call-outs.

o   #asSortedCollection: now uses quicksort.

o   ByteArrays now support accessing shorts, longs, ints, etc.

o   CObjects are now variable word classes (try 'stdout store' in 1.1.5!!)

o   Code for mutating existing class has been merged from the BLOX directory.

o   DLD (dynamic loading of C modules) is now a `first class' package, included
    in the image wherever it is available. Architectures supported (besides
    GNU DLD, available in 1.1.5 too) include Linux (dlopen), HP/UX and Win32.

o   FileStreams detect when they have been closed and refuse to do any more o-
    perations - this shields Smalltalk programs from C's quirks and bugs.

o   Fixed millisecondClock and secondClock to use correct Blue Book semantics.

o   Float is now a variable byte class.

o   Float now handles NaN and infinity values correctly.

o   Some fixes to Point and Rectangle.

o   Many fixes in PositionableStream.  For example, #upToAll: and #skipToAll:.
    now don't seek back in the stream, and hence are usable with stdin.

o   Methods are not `special' objects anymore

o   Most of the Smalltalk code is now commented.

o   Removed LookupKey.

o   SortedCollection now uses binary search in #indexOf:, #occurrencesOf:
    and #add:.

o   Support for class-instance variables (at last!).

o   Support for class declarations like "nil subclass: #XXX ..." (at last!).

o   Support for fixed instance variables in non-pointer classes

o   Support for the almost standard message #copyEmpty: (with the colon!).

o   System classes now have a category.

o   The kernel now uses := (even though of course _ is still supported).

o   The results of most character operations are now precalculated.

o   The Smalltalk-in-Smalltalk compiler, even though is slow, works quite well
    and supports #[1 2 3 4] ByteArray and LargeInteger literals.  Bug reports
    for the compiler are MUCH appreciated!!  Please include code that is as
    short as possible.

o   WriteStreams now double the size of the collection they stream on when
    there's no more space.



Changes to BLOX and the GUI:

o   Added a Transcript window.  Also, the Smalltalk menu is now part of every
    window.

o   Added support for standard color selection and file selection dialogs.

o   BLOX now has a comprehensive test suite.

o   Completely rewritten, 99% Smalltalk code now, working across different
    platforms because it relies on Tcl/Tk, with advanced Tk features such as:
    - X11 color names.  Also, colors can now be passed with
      strings like '#0080FF' or '#1234789ADEF0' ('#RRRRGGGGBBBB').
    - event handling (including focus in/out, mouse enter/leave, key
      press/release, button press/drag/release/double click/triple click)
    - a much better text widget, with support for text with different
      attributes in the same widget
    - a new canvas widget for vector graphics - will somebody ever contribute a
      nice Asteroids for GST???

o   The Class Hierarchy Browser shows classes not derived from Object.

o   The hierarchy for the BLOX toolkit is better designed (since I'm now
    implementing it in Smalltalk, if I had not done it I would have had a lot
    of duplicated code).

o   The new GUI system is not 100% compatible with the old one, partly because
    it now uses Tk and partly because of a few design decisions that were, to
    say the least, questionable.  Check your old code where it sets the
    geometry and where it passes the gui CObject to a method (in this case,
    just remove the first parameter).