1. Release Notes for GemBuilder for Smalltalk 8.4

GemBuilderfor Smalltalk (GBS) version 8.4 is a new version of the GemBuilder for Smalltalk product, adding support for GemStone/S 64 Bit version 3.5 and VW 8.3.2, and fixing a number of bugs. This release includes substantial changes in the infrastructure supporting tracking dirty objects and exception handlers within code that handles Gem interactions, to support a new private feature, automatic asynchronous abort. 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.3, and version 8.4.

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

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

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

Supported Platforms and Versions

The following tables describe the client Smalltalk versions and platforms supported by GBS 8.4, 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.4.

Table 1 Supported GemStone/S 64 Bit Server versions

 

VW 8.3.2
32-bit

and

64 bit

VW 7.10.1
32-bit

 

VW 7.10.1
64-bit

Windows 10

3.5, 3.4.3

3.5, 3.4.3

3.5

Windows 7

3.5, 3.4.3

3.5, 3.4.3

3.4.3

Ubuntu Linux 18.04

3.5

 

 

Ubuntu Linux 16.04

3.5, 3.4.3

3.5, 3.4.3

 

Red Hat Linux ES 7.4

3.5, 3.4.3

3.5, 3.4.3

3.5, 3.4.3

Red Hat Linux ES 6.9

3.5, 3.4.3

3.5, 3.4.3

3.5, 3.4.3

Changes and New Features

The following changes are in version 8.4:

Support for VW 8.3.2

Support for VisualWorks version 8.3.2 has been added. Testing has also been done with VW 8.3.1.

Support for GemStone/S 64 Bit version 3.5

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

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

library change on UNIX

In v3.4, a combined library libfloss was introduced. This was insufficiently flexible, and the change has been removed. With 3.5, as with v3.3.x and earlier, the required client libraries included, in addition to libgcirpc* or libgcilnk*, the shared library libssl*.

This does not apply to clients on Windows, which continue to require the same set of libraries.

Support for X509-Secure GemStone server

GemStone/S 64 Bit v3.5 adds a new feature, X509-Secure GemStone, which provides logins secured by X.509 certificates, as well as other security features. These are described in the GemStone/S 64 Bit X509-Secured GemStone System Administration Guide.

X509-Secured logins require a different set of login parameters than traditional logins. To support X509-secured logins from GemBuilder clients, a new Parameters Editor has been added. This is available from the GemStone Launcher Parameters > Add X609... menu item.

Support for private automatic asynchronous abort feature

GBS now includes support for the automatic asynchronous abort server feature. This should be used only under the guidance of GemTalk Engineering.

Displaying dynamic instance variables

Dynamic instance variables are now included in inspectors. Dynamic instance variables are per-instance key/value pairs that do not need to be common to all instances of a class.

The following example shows the display of an instance of Animal after sending

dynamicInstVarAt: #species put: 'Cat' . 

Default changed for initialDirtyPoolSize

The default for GbsConfiguration parameter initialDirtyPoolSize was previously 100 and is now 10. While this increases the cost in some situations, many round trips have few or no dirty objects, and each round trip requires iterating over the capacity, regardless of the size of the contents.

Bugs Fixed

The following bugs have been fixed in v8.4.

GbxAbstractProxy ifNotNil: handled Symbol arguments incorrectly

When ifNotNil: was sent to a stub or forwarder with a Symbol as the argument, the results were inconsistent with sending ifNotNil: to other objects. Symbol arguments are now handled consistently. (#48002)

Remember password during login was not remembered

If the password is not stored in the Login Browser parameters, and the remember password checkbox was selected in the prompt during login, this was not remembered; the Login Browser parameters were not updated. (#47895)

GS-Senders of optimized selectors resulted in walkback

While optimized selectors appear in the source code for methods, the compiled bytes are optimized, so these are not actually message sends. Starting with GemStone/S 64 Bit v3.3, the set of methods with the occurrences of that optimized selector is returned from the server query; however, attempting to display these methods resulted in a subscript out of bounds error. (#47392)

Browse class from inspector on class failed

When in a inspector on a GemStone server class, the menu item Browse did not correctly open a GemStone class hierarchy browser. (#47389)

Compiling a server class to the client gave too many dialogs

The process of compiling a server class on the client, if there was already a server class on the client, displayed a replacement dialog for each individual method. Now, the dialog allows you to skip, replace, or replace all. (#47426)

Committed method changes may have been lost if class option instancesNonPersistent added

Adding the class option #instancesNonPersistent does not create a new version of the class; this is behavior on the GemStone server. When the #instancesNonPersistent was added to a class's definition, the methods for that class were reverted to the methods that existed the previous time that class had been versioned, regardless of method changes that had been committed meanwhile. This resulted in the loss of committed method changes. (#47385)

"Compile in GS" may have incorrectly reported structure differences between GemStone and VisualWorks

The private method GbsSession>>privdoesClientClass:matchServerClass: incorrectly counted inherited instance variables, which resulted in it detecting differences where none actually existed. (#47632)

UserTools update authentication scheme to GemStone did not work

Attempting to modify a GemStone user's authenticationScheme to GemStone, using the User Tools, encountered an error, #enableGemStoneAuthentication: not understood. In v3.4, the method was renamed to #enableGemStoneAuthenticationWithPassword:. (#47294)

Deleting current class version did not update references

In the Class Versions Browser, deleting the current class version (usually the most recent class version at the top of the list) did not update the SymbolAssociation, so references to the removed version remained. This was indicated by ClassName[0] in browsers. (#47209)

GBS suppressed inspector watches tab

VisualWorks 8.x introduced a watches tab on the inspector. This was not being opened due to method overrides in GBS code. (#46523)