GNU Smalltalk 3.2.3

Tagged:

GNU Smalltalk 3.2.3 has been released at

This is a minor release, but it includes a few new features. The most important is support for HTTPS in gst-package.

This is the list of changes in this release:

  • Class attributes can have more than 1 keyword.
  • Documented #byteArrayOut C call argument passing mode.
  • Fixed crash when an invalid UnicodeString was created using #changeClassTo:
  • Fixed deadlock with #atEnd and two-way pipes.
  • Fixed bugs when adding instance variables to an existing class.
  • Fixed Socket>>#isPeerAlive falsely returning true.
  • Fixed some bugs in UTF-7 conversion.
  • FreeBSD port and 64-bit Darwin port. The latter requires a pre-installed libsigsegv.
  • gst-convert -f squeak reads binary selectors with more than two characters; however they should be shortened with rewrite rules in order to use the output.
  • 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.
  • GTK+ bindings are generated correctly for newer versions of GLib (tested up to 2.26).
  • If found, pre-installed libsigsegv, libffi and libltdl are used by default.
  • 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.
  • Machine-specific optimizations for x86-64, and other microoptimizations resulting in small but consistent performance improvements.
  • More out of memory conditions are detected.
  • New methods: ByteArray>>#castTo:, ByteArray>>#asCData, String>>#asCData, UndefinedObject>>#inheritsFrom:
  • New goodie: Announcements.
  • Number class>>#readFrom: can parse numbers in scientific notation.
  • Package descriptions do not need to include a 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).
  • Packages can be downloaded using HTTPS.
  • Performance statistics printed by -V are now correct.
  • Scoped methods ("A class >> a") can be used in an A class [ ... ] block.
  • Semaphore>>#wait returns nil if the wait was interrupted externally (e.g. from Process>>#resume).
  • String>>#asCData: and String>>#asCData NULL-terminate their output.
  • Support for timeouts when waiting on a Semaphore.
  • Swazoo supports SCGI. Its configuration however is still manual, since the Seaside and Iliad adaptors do not know about it.
  • Updated VisualGST.

Thanks to Gwenael Casaccio, Holger Hans Peter Freyre, Nicolas Petton, Mathieu Suen for helping with many of the above features and for testing the development versions of GNU Smalltalk.

I tried to compile GNU Smalltalk on Cygwin (CYGWIN_NT-5.1 1.7.7(0.230/5/3) 2010-08-31 09:58) on Windows XP Professional. I compiled it with following commands:
$ env CC=gcc-4 ./configure --disable-generational-gc
$ make
Compilation ends without errors but test suit returns following output (shortened version):

  1. ------------- ##
    1. Test results. ##
    2. ------------- ##

    ERROR: 122 tests were run,
    10 failed unexpectedly.
    5 tests were skipped.

    1. ------------------------ ##
      1. Summary of the failures. ##
      2. ------------------------ ##

      Failed tests:
      GNU Smalltalk 3.2.3 test suite test groups:

      NUM: FILE-NAME:LINE     TEST-GROUP-NAME
           KEYWORDS

        1: testsuite.at:27    arrays.st
           base
        8: testsuite.at:34    floatmath.st
           base
       11: testsuite.at:41    strings.st
           base
       16: testsuite.at:46    cobjects.st
           base
      110: testsuite.at:148   Complex
           complex sunit
      116: testsuite.at:154   Digest
           digest sunit
      118: testsuite.at:156   Iconv
           iconv sunit
      122: testsuite.at:160   Seaside-Core
           seaside-core sunit
      123: testsuite.at:161   Sport
           sport sunit
      124: testsuite.at:162   Swazoo
           swazoo sunit

      1. -*- compilation -*-

      1. testsuite.at:27: testing ...
      { (cd /home/kl/gst/smalltalk-3.2.3/tests && timeout 60s gst -I /home/kl/gst/smalltalk-3.2.3/gst.im -r arrays.st 2>&1); echo exit 0 > retcode; } | tr -d '\r' | tee stdout; . ./retcode
      ./testsuite.at:27: { (cd $abs_srcdir && $TIMEOUT gst $image_path -r arrays.st 2>&1); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . ./retcode
      --- expout 2011-01-02 21:29:45.984375000 +0100

      +++ /home/kl/gst/smalltalk-3.2.3/tests/testsuite.dir/at-groups/1/stdout 2011-01-02 21:29:47.015625000 +0100

      @@ -24,7 +24,7 @@

      returned value is 'quem'
      
      Execution begins...

      -returned value is 3.40000

      + returned value is 0.00/01010

      Execution begins...
      returned value is 1

      1. testsuite.at:27: 1. arrays.st (testsuite.at:27): FAILED (testsuite.at:27)

      1. -*- compilation -*-

      8. testsuite.at:34: testing ...
      { (cd /home/kl/gst/smalltalk-3.2.3/tests && timeout 60s gst -I /home/kl/gst/smalltalk-3.2.3/gst.im -r floatmath.st 2>&1); echo exit 0 > retcode; } | tr -d '\r' | tee stdout; . ./retcode
      ./testsuite.at:34: { (cd $abs_srcdir && $TIMEOUT gst $image_path -r floatmath.st 2>&1); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . ./retcode
      --- expout 2011-01-02 21:29:56.734375000 +0100

      +++ /home/kl/gst/smalltalk-3.2.3/tests/testsuite.dir/at-groups/8/stdout 2011-01-02 21:29:58.296875000 +0100

      @@ -3,22 +3,22 @@

      returned value is ObjectMemory
      
      Execution begins...

      -returned value is 3.10000

      + returned value is 0.00/11111

      Execution begins...

      -returned value is 3.45000

      + returned value is 0.00/00100

      Execution begins...

      -returned value is 30000.0

      + returned value is 0/.1000

      Execution begins...

      -returned value is 34500.0

      + returned value is /:.1011

      Execution begins...

      -returned value is 7.70000

      + returned value is 0.00/01100

      Does anyone have idea what is wrong?

      I can post full testsuite.log (I tried it to mailing list help-smalltalk@gnu.org, but my posts are returned by spam filter)
      Thanks
      Lubos

      I think I know what is causing the bug. Thanks!

      User login