Filewatcher File Search File Search
Content Search
» » » » » gnu-smalltalk_3.0.3-2_amd64.deb » Content »
pkg://gnu-smalltalk_3.0.3-2_amd64.deb:698046/usr/share/doc/gnu-smalltalk/  info  control  downloads

gnu-smalltalk - GNU Smalltalk interpreter and image…  more info»


List of user-visible changes in GNU Smalltalk

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:


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

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:

    SequenceableCollection>>#with: (also #with:#with: etc.)
    Stream>>#with: (also #with:#with: etc.)

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

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

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 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/' and `~/.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

    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

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

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

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 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

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 | ... ]


	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 ARG1 ARG2
	gst -Qa ARG1 ARG2

o installed as gst-load, installed as gst-reload, 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"

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

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

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

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/ 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:

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

    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

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


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

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

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 ]


        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


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

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

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

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

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.


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

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

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

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

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

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

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

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:

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

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 and 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

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

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-o
Results 1 - 1 of 1
Help - FTP Sites List - Software Dir.
Search over 15 billion files
© 1997-2017