GT.M V4.4-002 and V4.4-FT01 are now available.
With V4.4-002 on UNIX/Linux, the M run-time system is now packaged as a shared library (libgtmshr.so) and the mumps executable is merely a wrapper that calls functions in the shared library (e.g., it is now just 15,833 bytes in size on Linux). The major new functionality that results from this is that the top level program (that which is called from the shell), no longer needs to be an M program -- the outer level can also be a C main() function. Effective V4.4-002, M and C code can be intermixed in an application. The implications are significant -- for example, it is now possible to use GT.M for dynamic web content scripting by directly calling M functions from a web or application server, instead of using a CGI interface. There is a new technical bulletin (TB5-027) on the call-in functionality.
V4.4-002 also brings a significant rewrite of the journaling and recovery logic, enhancing both performance and robustness. In particular, interrupted rollbacks and backward recoveries (e.g., recovery from a system that crashes while a recovery from a system crash is in process) are now much better handled by simply repeating the rollback or backward recovery command (previously, such a condition could have required restoring a backup and using forward recovery). The journaling chapter of the GT.M Administration and Operations Guide has been rewritten, and is made available as a technical bulletin (TB5-029) describing the new functionality.
In both the above, backward compatibility has been maintained, while adding significant new functionality. The online help has been updated to reflect the current user documentation. On x86 GNU/Linux, Red Hat 9 is also now supported.
Of course, there are a number of bug fixes. Details are in the technical bulletin (TB5-028A). The error messages have been updated (TB5-030).
GT.M V4.4-FT01 is a field test release based on V4.4-002 with two additional changes on the Linux platform.
The first is that the maximum string size has been increased from 32KB to 1MB.
The second is a bug fix: if the second argument of a Set $Piece is a $Select, GT.M will give incorrect results. Certain versions of the VistA source code work around this problem, but others don't. If you encounter otherwise unexplained errors with VistA (e.g., undefined variables), see whether V4.4-FT01 makes the errors go away.
-- Bhaskar