GemBuilder™ for 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.
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.
The following changes are in version 8.4:
Support for VisualWorks version 8.3.2 has been added. Testing has also been done with VW 8.3.1.
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.
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.
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.
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' .
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.
The following bugs have been fixed in v8.4.
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)
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)
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)
When in a inspector on a GemStone server class, the menu item Browse did not correctly open a GemStone class hierarchy browser. (#47389)
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)
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)
The private method GbsSession>>privdoesClientClass:matchServerClass: incorrectly counted inherited instance variables, which resulted in it detecting differences where none actually existed. (#47632)
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)
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)