GemStone/S 64 Bit 3.3.3 is a new version of the GemStone/S 64 Bit object server. This release fixes a number of issues, and includes an updated version of VSD.
These release notes describe changes between the previous version of GemStone/S 64 Bit, version 3.3.1, and version 3.3.3. Version 3.3.2 was a limited distribution release; all changes in 3.3.2 are included in these release notes. If you are upgrading from a version prior to 3.3.1, review the release notes for each intermediate release to see the full set of changes.
The Installation Guide has not been updated for this release. For installation, upgrade and conversion instructions, use the Installation Guide for version 3.3.1.
GemStone/S 64 Bit version 3.3.3 is supported on the following platforms:
Supported Windows client platforms are
For more information and detailed requirements for each supported platforms, please refer to the GemStone/S 64 Bit v3.3.1 Installation Guide for that platform.
GemStone/S 64 Bit version 3.3.3 requires GBS version 8.1 or later for VisualWorks Smalltalk, or version 5.4.3 or later for VA Smalltalk. The following versions of GBS are certified with GemStone/S 64 Bit version 3.3.3:
For more details on supported GBS and client Smalltalk platforms and requirements, see the GemBuilder for Smalltalk Installation Guide for that version of GBS. Consult the matrices on the website, gemtalksystems.com/products/gbs-vw or gemtalksystems.com/products/gbs-va, for the latest updates.
The GemStone/S 64 Bit v3.3.3 distribution includes VSD version 5.3. The previous version of GemStone/S 64 Bit, v3.3.1, included VSD v5.2.
VSD v5.3 includes a number of new features, including control over saving display preferences and secondary sort keys.
For more information, see the Release Notes for VSD v5.3, or the VSD home page.
Version 3.3 included a new version of the ICU libraries. Since this controls sort ordering of any strings that use ICU/Unicode collation, GemStone now requires that the ICU libraries that are loaded have an ICU version matching that stored in the repository.
If you are upgrading from a 3.2.x version, there is an additional step required to configure version of the ICU library that will be loaded. The Installation Guides for v3.3.1 provides the specific steps that are required as part of upgrade.
Alternately, you would have to resort SortedCollections and rebuild Dictionaries that involve ICU comparisons.
However, due to the way libraries are loaded on AIX, setting this parameter is not effective. On AIX, you must rename the shared library files or create symbolic links. For example:
cd $GEMSTONE/lib
chmod +w .
mv libicudata.54.1.so libicudata.54.1.so.save
ln -s libicudata.51.2.so libicudata.54.1.so
mv libicui18n.54.1.so libicui18n.54.1.so.save
ln -s libicui18n.51.2.so libicui18n.54.1.so
mv libicuuc.54.1.so libicuuc.54.1.so.save
ln -s libicuuc.51.2.so libicuuc.54.1.so
Change in 3.3.3; not fixed in 3.3.2
Upgrade to v3.3.x requires method recompile, which can be done either by filein or sending recompileAllMethods to the class. The recompile failed if the method included non-class literals. (#46519)
Change in 3.3.3; not fixed in 3.3.2
Remote page servers create a runpgsvrmain* log in a directory that is by default the users’s home directory. This log was not deleted on clean exit. (#46535).
Ubuntu by default creates entries for 127.0.1.1 for hostname. Listening on "any interface" or on localhost did not pick up connects to 127.0.1.1, and so these listens would not detect connects using the hostname. Now, the Stone and NetLDI will also listen on the hostname port when that is not the same as localhost. (#46452)
When a large object is modified, changes to leaf objects composing it must be tranlogged. In the case of byte objects (such as Strings), insert operations did not correctly log the changes, so after restore the state could be inconsistent. (#46474)
During the login process, after the gem log is created but before the login completes, if the client exits then the Gem sees this as an error. However, since the client may have elected to exit, this may not actually be an error, so for this case, the exit was done cleanly and the log deleted. However, fatal client errors during login also were handled this way, so log file handling has been changed. (#46419)
Now, while the Gem still exits cleanly, the Gem log file is not deleted.
When a remote Gem logs in, and there is not already a page server for that remote node on the Stone’s host, the page server that is started on the Stone’s host reads the root pages for each extent. The page servers read each root page several times, which impacted performance when there was a large number of extents. (#46476)
When random data is sent to GemStone listening ports, it could have resulted in the Stone freezing. (#46477)
The method DateTime >> asStringISO8601 should report the time as adjusted for the DateTime’s timezone, followed by the timezone offset. Instead, it was reporting the time in local time, but including the timezone offset for the timezone. This produced incorrect results when executed for DateTimes that were not in the current timezone. (#46315)
Some instance variables are unsafe to access directly due to the way they are stored in memory. These accesses are protected; however, instVarAt: was not reimplemented to provide safe access. This method has been added to GsNMethod. (#46405)
GsSecureSocket >> secureConnect and secureAccept may have waited forever if the connection did not complete, rather than timing out. (#46375)
Due to an off-by-one error, the first dynamic instance variable’s key was not included when performing scans for listReferences methods. (#46400)
When changeClassTo: is requested, and the number of named instance variables is fewer than that of the original class, the values in the removed named instance variable slots may be moved to unnamed instance variables. This caused object corruption for instances of IdentityBag, and data corruption for instances of IdentitySet. (#46475 )
The method Object >> storeOn: had a typo that was exposed for large strings. (#46381)
When debugging server code in GBS, there were cases in which accepting a server method within the debugger, when the debugger is in a server method context, encountered a corrupt object error, and the session was lost. (#46418, #46471)
Context frames for a block in the debugger do not normally include references to outer scope variables. However, when the variable, such as a method argument, is referenced within the block, this should be included in the frame. In earlier 3.3.x versions, such referenced outer scope variables were not included. (#46349)
After upgrade from an earlier version with method version differences, code must be recompiled before it can be executed. Attempting to execute a method that was not recompiled previously, returned an error message of the form " GsNMethod with oop 33230593 needs recompile", which was unhelpful without further analysis. Now, the error include the class and selector of the method that was not recompiled, as well as its OOP. (#46000)
When GEM_TEMPOBJ_CACHE_SIZE was configured to larger than about 2800000, the method System >> _tempObjSpaceMax returned a negative value. (#46384)
When method code attempts to assign to an argument variable, which is illegal, the message was "expected a variable". This has been clarified, and now says "Expected an assignable variable". (#46455)
Previously, writing non-string data to GsSysLog did not error, but did not do a write. (#45999)