mirrored from git://git.sv.gnu.org/smalltalk.git
-
Notifications
You must be signed in to change notification settings - Fork 26
/
NEWS
3254 lines (2121 loc) · 118 KB
/
NEWS
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
List of user-visible changes in GNU Smalltalk
NEWS FROM 3.2.5 to 3.2.91
o gst and gst-remote now understand the --no-line-numbers option. The
line number is embedded in the bytecode of a CompiledMethod and is
executed as part of the normal execution. This option allows to not
emit the line number bytecode which can result in a noticable speed
up on embedded systems.
o Change the semantic of >>#rowCount for the SQLite backend. One can
either use the >>#next/#atEnd selectors to stream over the result or use
the #>>rows/#rowCount selectors.
o Add PackageLoader>>#loadPackageFromFile: to load a package by using
a package.xml. This can make the development more effective.
o The compiler now generates a DebugInformation providing access to the
argument and temporary names of methods and blocks. This can be used
by the debugger to provide additional information.
o gst-sunit now understands the -d/--debug parameter. In case of an
unhandled exception or a test failure VisualGST will be spawned.
o The Netlink module has been added for Linux.
o gst-sunit -p package.xml TestClass will execute only the tests of
the TestClass now.
o RecursionLock>>#critical: returns the result of the block like it
is done for Semaphore>>#critical:
o Object>>#initialize has been added as am empty selector and
Behavior>>#new/Behavior>>#new: has been modified to call basicNew
followed by a call to initialize. This has been done to ease porting
from and to the Pharo Smalltalk Environment. The >>#initialize
selector needs to return self (or have no explicit return statement).
Classes that provide a custom >>#new implementation and call
"super new initialize" should either remove the custom >>#new
implementation or use "self basicNew initialize".
-----------------------------------------------------------------------------
NEWS FROM 3.2.4 to 3.2.5
o Add Delay>>#value:onTimeoutDo: as an easy way to timeout an operation.
o Improve Delay and millisecondClock behavior across image save and restore.
millisecondClockValue is guaranteed to be monotonic across image save, and
delays are restarted when the image is restored.
o DateTime>>#today will return midnight of the current timezone.
o DateTime has a new method #asLocal.
o DateTime>>#readFrom: can read more time formats.
o Time resolution is now based on nanoseconds.
o Absolute-time delays (Delay>>#untilMilliseconds:) are precise and not
anymore converted to relative-time delays.
o package.xml files support a <dir> tag, like <dir name="Foo">. It can
be used to make package.xml clearer for large packages.
o MethodDictionary is now thread-safe.
o String>>#% supports string keys, like %(string). They can be used
when the argument of #% is a Dictionary or LookupTable. Note that
the keys of the dictionary must be Strings, not Symbols.
o Socket fixes including reporting of EndOfStream on broken pipes and
connection resets.
o Fix the FileDescriptor finalization code to close open descriptors.
o The system file descriptor of FileDescriptor is set to nil on image
restore.
o The asynchronous event notification has been rewritten. The old
version could fail when many file descriptors became available at
the same time.
o DBD-Postgres gained support to bind parameters on queries and various
fixes to allow to resume images that use Postgres.
o Images created with gst-remote can now be resumed.
o Add #system:withArguments: to avoid using #system: with #% to add
arguments.
o Added Integer>>#printPaddedWith:to:.
o Added CharacterArray>>#withShellEscapes
o Added Collection>>#includesAllOf:
o Stream>>#fold: works correctly.
o 64-bit integer types are available using CLongLong and CULongLong.
o gst-blox and gst-browser understand the -i/--rebuild-image option.
o GObject errors show backtraces.
o Improvements to multiarch support.
o CType objects implement #= and #hash, so they can now be used as keys
in a dictionary.
o Floating-point numbers are printed more accurately in some rare cases.
o Some optimization of OrderedCollection and SortedCollection
o Selectors starting with an underscore are treated as keyword messages.
o A new function gst_uint_to_oop is in libgst, and uintToOOP is also
provided by the VMProxy.
o Growing the heap is working again.
o Various bugfixes.
o GNU Smalltalk does not run anymore on i386 hardware, an i486 is needed.
o Slightly faster garbage collection.
-----------------------------------------------------------------------------
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.