1. Release Notes for GemBuilder for Smalltalk 8.5

GemBuilderfor Smalltalk (GBS) version 8.5 is a new version of the GemBuilder for Smalltalk product, adding support for GemStone/S 64 Bit version 3.6 and providing limited preview support for VisualWorks 9.0, and fixing a number of bugs. Please take time to read through these release notes before installing or upgrading, to acquaint yourself with the changes.

These release notes provide changes between the previous version of GBS, version 8.4, and version 8.5. If you are upgrading from a version prior to 8.4, please also review the release notes for each intermediate release between your version and 8.5, to see the full set of changes.

This release supports GemStone/S 64 Bit only, with VisualWorks 8.x and 9.x. GBS 8.5 does not support 32-bit GemStone/S, nor VA Smalltalk.

To install GemBuilder for Smalltalk 8.5, follow the instructions in the GemBuilder for Smalltalk Installation Guide for version 8.5.

Supported Platforms and Versions

The following tables describe the client Smalltalk versions and platforms supported by GBS 8.5, and the GemStone server product shared library versions that can be used with each.

For more details, including the specific required client libraries for each server product and versions, refer to the GemBuilder for Smalltalk Installation Guide for version 8.5.

Table 1  Supported GemStone/S 64 Bit Server versions

 

VW 8.3.2
32-bit

and

64 bit

VW 8.2.1
32-bit

and

64 bit

Windows 10

3.6, 3.5.4          

3.6                

Windows 7

3.5.4

 

Ubuntu Linux 20.04

3.6, 3.5.4

 

Ubuntu Linux 18.04

3.6, 3.5.4

 

Ubuntu Linux 16.04

3.5.4

 

Red Hat Linux ES 8.1

3.6, 3.5.4

 

Red Hat Linux ES 7.8

3.6, 3.5.4

 

Red Hat Linux ES 6.10

3.5.4

 

VisualWorks 9.0 is a “preview” platform with GBS 8.5. It is expected to work, but the GUI has not had sufficient testing for full support.

Changes and New Features

The following changes are in version 8.5:

Support for GemStone/S 64 Bit version 3.6

Support for the latest version of the GemStone/S 64 Bit server, v3.6, has been added.

If you are upgrading to v3.6 as well as upgrading to GBS v8.5, please read through the Release Notes for v3.6 for changes that impact your GBS application.

New Specials added

GBS 8.5 includes support for replicating the special data types added in GemStone/S 64 Bit v3.6:

  • SmallDate
  • SmallTime
  • SmallScaledDecimal

These are replicated as immutable instances of client objects. Note that while the v3.6 server also adds the new special SmallDateAndTime, the superclass DateAndTime is not supported for replication in GBS, so SmallDateAndTime is also not supported for replication.

Note that, because the new server classes are immediate, GBS does not map them to client objects. This means that two server objects that reference the same (identical) Time will replicate as client objects referencing the same (identical) client Time. However, two server objects referencing the same SmallTime will replicate as client objects referencing *different* (but equal) client Time objects.

Equivalent replication happens for all server immediates that are not client immediates: SmallDate, SmallTime, SmallScaledDecimal, SmallIntegers (beyond 32-bit VW SmallInteger range), SmallDoubles (in 32-bit VW), and SmallFraction.

Performance Improvements

Finding methods in a class

For classes with very large numbers of selectors, finding methods was very slow; the code for this has been redesigned and is much, much faster.

UserProfile edit and SymbolList tool

The code that interacts with the server to provide data for these tools has been streamlined to reduce the round trips, improving performance significantly, especially for larger numbers of entries.

Bugs Fixed

The following bugs have been fixed in version 8.5:

GbsStackDumper could error and produce incomplete stack dumps

There was a codepath where an error could occur while attempting to create the stack dump, that was not itself reported in the resulting stack. This resulted in a mysteriously incomplete stack. (#48076)

On login, GBS disabled GEM_HALT_ON_ERROR

The login arguments that were specified on login had the side effect of disabling the Gem’s setting for the configuration parameter GEM_HALT_ON_ERROR. (#48154)

Unnecessary imports of server special objects

Many classes did an import of GemStone.Gbs.SpecialGemStoneObjects that was not necessary. These imports have been cleaned up, and the import for classes that still required this has been simplified. (#48191)

Debugger error on modify server method temp

In the Debugger, modifying a method temporary variable of a server method in the context inspector would error. (#49105)

GBS’s finalizer process did not run on saved and restarted image

GBS replaces the default finalization mechanism with its own GbxFinalizer. This was being replaced by the default finalizer on image started; so while after the first load of GBS the correct finalization was done, if the image was saved and restarted it reverted to the default finalizer. (#48334)

Instances of Time are truncated to seconds on replication

In older versions of VW, the Time class had integral seconds, so the server Time class would truncate from milliseconds on the server to integral seconds in the GBS replicate. VW 7.10.1 and later have nanosecond resolution, so this is not only unnecessary, but creates loss of information. (#48711)

Now, client Times will be rounded to milliseconds when flushing to versions earlier than 3.6, and to microseconds when flushing to v3.6 or later servers.

Also, out of range client Times (negative times, or times of more than 24 hours), were previously left out of range; these are now replicated to the server as modulo 24 hours.

NoModificationError on clustering of immutable replicated byte objects

When clustering moves the page of an immutable byte object such as a Float, it is put in the write set for tracking, although it is not actually modified. The checks in GBS were too general and triggered an error. (#48541)

Browse versions errored from a Class Hierarchy browser

In the Hierarchy Browser, the Class > Browse Versions menu operation errored. (#49001)

Launcher Issues

Launcher menu item Parameters > Copy nonfunctional

The menu item on the GemStone Launcher, Parameters > Copy, did not have an effect. The equivalent Copy button works correctly to copy a SessionParameters. (#48882)

Current session not bold in Launcher

The current session within the list of sessions in the Launcher should be in bold font for easy identification; but was the same font as other sessions in v8.4. (#48883)

X509 sessions display in Launcher without session ID

The display of a session for X509-secure GemStone in the list of sessions in the Launcher did not include the session ID. (#49039)

Inspector issues

Improved handling of failures in inspectors

The case in which an inspector is opened on an object, but the object printing code signals an exception, is handled better in this release. Warnings and Notifications will no longer create an incorrect string, and Errors will be printed with minimal detail. (#48284)

Some cases of inspector failures due to internal variable naming

GBS executes strings to fetch data for inspectors. There were some temporary variable names used when composing these strings that could conflict with the variable names of the objects being inspected. (#48979)

Wrong error when connecting class variable connector with unresolved server variable

When connecting a class variable connector, if the server class exists but does not have the specified class variable, the condition is not properly detected, resulting in the error UndefinedObject does not understand #value. (#48700)

Unnecessary extra ’class’ in fileout for class method from implementors/senders browsers

When filing out a class method from the senders or implementors browser, the class name was followed by an unnecessary but harmless extra ’class’. (#44931)