GT.M High end TP database engine / News: Recent posts

GT.M V6.3-001 available

V6.3-001 brings important and useful enhancements to GT.M.

GT.M provides a fast and efficient mechanism for processes to opt-in to share their database access statistics for other processes to monitor. The statistics are the same as those available to the process itself using the ZSHOW "G" command.

MUPIP FREEZE -ONLINE freezes database writes from global buffers to the filesystem, while allowing applications to continue database updates as long as they are able to, without requiring a write to the database filesystem. During this time, journal writes continue, ensuring database recoverability.... read more

Posted by K.S. Bhaskar 2017-03-16

GT.M V6.3-000A & Peer Replication reference implementation available

V6.3-000A brings timely fixes to issues, including two issues in the string optimization introduced in V6.3-000, GTM-8540 and GTM-8549. The release includes other fixes and performance enhancements, as described in the release notes ( Please do use V6.3-000A.

While not a part of the GT.M distribution, we would also like to let you know about a reference implementation of GT.M Peer Replication, a type of bi-directional replication that uses GT.M triggers. Subsets of application logic which do not need update / transaction serialization, but which can benefit by aggregating updates from separate instances, can be deployed using peer replication. For example, financial transactions on a bank account must be serialized because each transaction depends on the result of the previous transaction on that account; balance inquiries need not be serialized because, while an inquiry to an account depends on the last financial transaction on that account, it does not depend on the last inquiry to that account. The reference implementation of GT.M peer replication is available as a plugin that you can add to your application (the reference implementation of a plugin is code that you can use as-is if it meets your needs, or adapt to your needs as appropriate; an existing example is the POSIX plugin). Plugins are not part of the GT.M core release but are separately released packages. The plugin includes a detailed readme file on implementing peer replication using the plugin.

Posted by K.S. Bhaskar 2016-05-17

Major new release GT.M V6.3-000 available

V6.3-000 brings significant enhancements to GT.M's use of encryption. One defensive technique is to reduce the "surface" available to an attacker. V6.3-000 reduces the surface in several ways.

An attacker with the wherewithal for a brute-force attack on encryption can in theory benefit from the voluminous, long-lived, and structurally similar data in a typical application database, such as financial transactions and medical records. One component of a traditional layered defense-in-depth is to change the actual encryption keys periodically. By enabling encryption keys for database files to be changed "on the fly" while a database is in use (GTM-6310), V6.3-000 operationally simplifies changing the keys, and makes key changes less prone to human error. The prior technique required database regions to be extracted and loaded into newly created database files with keys different from those of their predecessors. Context-sensitive initialization vectors (IVs) in database, journal, extract and bytestream backup files (GTM-8117) further reduce the surface for a brute-force attack.... read more

Posted by K.S. Bhaskar 2016-03-29

V6.2-002 available

V6.2-002 brings a number of modest enhancements to GT.M.

Improving performance:

  • By reducing the number of dirty global buffers to be flushed in anticipation of an impending epoch, epoch tapers aim to ameliorate spikes in response time that can occur at epochs.

  • $ORDER(gvn,-1) - "reverse dollar order" - of global variables is faster.

  • Under conditions of high contention, processes holding locks exit faster, processes acquire database critical sections more efficiently when the mutex queue slots are all used, and lock acquisition is more efficient with substantially reduced impact on database throughput.... read more

Posted by K.S. Bhaskar 2015-06-08

GT.M V6.2-000 available

V6.2-000 is a major release that introduces auto-relink, a publish+subscribe model that enables GT.M processes to automatically and safely execute the latest published versions of routines; adds support to read and write encrypted sequential disk files, pipes, and FIFOs; adds the ability to pass SOCKET devices from one process to another; and includes many other enhancements and fixes.

Posted by K.S. Bhaskar 2014-09-18

GT.M V6.0-003 available

In V6.0-003, GT.M: adds IPv6 to the previous support of IPv4 for TCP connections. SOCKET devices, replication, inbound connections managed by Internet superservers such as inetd, and the GNP protocol - all GT.M uses of TCP/IP except the deprecated "TCP" devices - use TCP over both IPv4 and IPv6; maintains $KEY for terminal operation and introduces the [NO]EMPT[ERM] device parameter for terminal devices that allows an "erase" character to terminate a READ when there are no characters in the input buffer; improves critical section management & deadlock detection; changes the time stamp used for prior generation journal files to make operational management easier; as well as providing a number of other enhancements, improvements in robustness, and bug fixes. Details are in the release notes.

Posted by K.S. Bhaskar 2013-08-09

GT.M V6.0-002 and GTMJI now available

GT.M V6.0-002 and the new GTMJI GT.M Java Plug-in, together extend the usefulness of both GT.M and Java by enabling in-process calls between Java and M application code. Together they make the power of GT.M available to Java application code, and allow GT.M applications to access functionality written in a popular programming language. V6.0-002 implements the changes within GT.M needed to allow access from and to Java application code, and GTMJI enables Java application code to call and be called by M code.... read more

Posted by K.S. Bhaskar 2013-05-04

GT.M V6.0-000 available

V6.0-000 significantly extends database file limits:

The maximum supported key size increases from 255 to 1,019 bytes.
Global variable nodes need no longer fit within a database block. This opens opportunities for applications to consider smaller block sizes where these improve performance. Also, the new maximum global variable node size of 1,048,576 bytes (1 MiB) means that any local variable node can also be stored in a global variable.
The maximum size of a database file is now 1,040,187,392 (992 Mi) blocks. Previously this limit was 234,881,024 (224 Mi) blocks.... read more

Posted by K.S. Bhaskar 2012-09-20

POSIX plugin released

GT.M's open architecture makes it easy to extend GT.M with calls to functions in popular standard libraries. Such a call entails creating a small wrapper of a few lines for each function. On UNIX/Linux platforms, GT.M V5.5-000 brought a small enhancment to the "gtmprofile" shell commmand file that provided a framework for plugins that could be dropped into an existing GT.M installation: for any standard format plugin in the plugin subdirectory, the "gtmprofile" file automatically sets up environment variables to access the plugin. With the release of V5.5-000, we released a plugin to use the popular zlib compression library. ... read more

Posted by K.S. Bhaskar 2012-07-19

V5.5-000 available

(Our apologies; this news nugget was not submitted in a timely manner.)

V5.5-000 provides a new type of replication, described in more detail in the Supplementary Instance Technical Bulletin (for all GT.M user documentation go to and click on the User Documentation tab). With Supplementary Instance (SI) replication, GT.M provides a mechanism to replicate to a supplementary instance which can execute its own business logic and commit database updates, for example, to provide reporting, decision support, data warehousing, auditing, and so on. In the course of that work, we have improved other aspects of replication.... read more

Posted by K.S. Bhaskar 2012-07-19

GT.M V5.4-002B available

GT.M V5.4-002B brings timely remediation to several issues. Please review the release notes* to see whether any of the issues are relevant to your use of GT.M. In this release, we also improved the performance of NOBEFORE_IMAGE journaling by eliminating a time-consuming action that added no value to its correct operation; we expect a more interesting impact with the MM access method than with the BG access method.... read more

Posted by K.S. Bhaskar 2011-07-22

V5.3-004 will be the last release on Tru64 UNIX

We anticipate future releases on the x86 GNU/Linux and Alpha/AXP OpenVMS platforms, but not the Tru64 UNIX platform. If this will cause you hardship, please do contact us to discuss possible arrangements.

-- Bhaskar

Posted by K.S. Bhaskar 2009-07-17

GT.M V5.3-004 released

GT.M V5.3-004 adds major new functionality and platform support.

* Database encryption. GT.M on selected platforms can encrypt data in database and journal files. Encryption protects against unauthorized access to data by an unauthorized process which is able to access disk files, that is, encryption protects data at rest (DAR) to help improve security in cloud based application deployment, as well as making it easier for sites to comply with data protection standards such as PCI and HIPAA. A plug-in architecture facilitates use of your preferred encryption software. Details are in the GT.M Database Encryption Technical Bulletin ( read more

Posted by K.S. Bhaskar 2009-07-17

Experimental Toaster - WorldVistA EHR on GT.M in UTF-8 mode

I have created an *experimental* Toaster (software appliance, virtual machine) of WorldVistA EHR VOE/ 1.0 on GT.M V5.3-003 on Ubuntu Jeos 8.04 - *running in UTF-8 (Unicode) mode*. See for information about GT.M Unicode support. Instructions for use are the same as for the VistA Tour CD ( except that the file name of the virtual disk image differs.... read more

Posted by K.S. Bhaskar 2009-01-23

GT.M V5.3-003 released

V5.3-003 is a new GT.M release with useful additional functionality. Complete details are in the release notes (http://

Highlights include:

* IO to a process. A GT.M process can now OPEN a process, WRITE to that process and READ from that process. For the simplest usage, application code can now write directly to, say, the lpr command to send output directly to a print spooler without the need for a temporary intermediate file. For a more complicated example, you can use an external program like iconv to translate between encodings of strings by writing to its STDIN and reading from its STDOUT. Details are in a technical bulletin ( user_documentation/html/rn_tb/PIPE_IO_Technical_Bulletin.html).... read more

Posted by K.S. Bhaskar 2009-01-14

VistA Tour CD now available

As part of the GT.M sponsorship of VistA Tour (, Peter Bodtke will hand out CDs of WorldVistA EHR VOE/ 1.0 on GT.M V5.3-002. A copy of the CD is now available in the download area.

Posted by K.S. Bhaskar 2008-11-18

[S9I10-002703] Security advisory - update

An updated advisory, with details of a remediation wrapper for gtmsecshr has been posted ( Please act on it at your earliest convenience.

-- Bhaskar

Posted by K.S. Bhaskar 2008-10-31

[S9I10-002703] GT.M Security Advisory

In response to a report of a GT.M vulnerability, we have produced a GT.M security advisory (see\). This vulnerability can theoretically allow someone who has programmer access to GT.M in a UNIX/Linux system to escalate privileges to root, but should not otherwise expose a properly secured production system.... read more

Posted by K.S. Bhaskar 2008-10-27

GT.M+PIP Technology Exchange

We will have our first GT.M+PIP Technology Exchange in Malvern, Pennsylvania, October 16 & 17 ( Please do plan to attend if you can.

-- Bhaskar

Posted by K.S. Bhaskar 2008-09-15

GT.M V5.3-002 available

GT.M V5.3-002 is a major new release that completes the planned support for 64-bit architectures by adding Sun SPARC Solaris to the set of 64-bit platforms. It also adds support for the Mapped Memory database access method and includes functional & performance enhancements (especially on platforms running GNU/Linux), as well as bug fixes. Details follow.

Effective V5.3-002:

* GT.M on the following computing platforms runs as 64-bit processes: Solaris on SPARC; GNU/Linux on x86_64 and Itanium; AIX on pSeries; HP-UX on Itanium. With this and future releases, there are no 32-bit GT.M processes on these platforms.
* GT.M on the following computing platforms continues to run as 32-bit processes: x86 GNU/Linux; HP-UX on PA-RISC; Tru64 UNIX and OpenVMS on Alpha/AXP. There are no plans to move to a 64-bit architecture on these platforms. ... read more

Posted by K.S. Bhaskar 2008-08-22

GT.M V5.3-001A available

GT.M V5.3-001A is available. It is a minor release derived from V5.3-001, and provides timely fixes to defects, including an issue with NOUNDEF handling, an issue with TP transactions that include multiple global directories, as well as some other issues as described in the release notes at read more

Posted by K.S. Bhaskar 2008-04-27

GT.M V5.3-001 available

GT.M V5.3-001 is a major new release that extends the platforms on which GT.M is a 64-bit application to IBM pSeries AIX and x86_64 GNU/Linux.

On IBM pSeries AIX, GT.M processes are now 64-bit processes rather than 32-bit processes. Since there is no contemporary 32-bit hardware, and all contemporary releases of AIX are 64-bits, there are no more 32-bit GT.M processes on pSeries AIX. M application program logic and database formats remain 100% compatible between the 32-bit V5.3-000 and the 64-bit V5.3-001. As a consequence of the move to 64-bits, GT.M processes on pSeries AIX are no longer limited to 11 database regions, and shared libraries are no longer limited to a system wide limit of 256MB (there are still limits of course, but they are vastly greater than the needs of any application that we know of).... read more

Posted by K.S. Bhaskar 2008-01-31

Project name change - we are now FIS GT.M

The Source Forge project name has been changed from sanchez-gtm to fis-gtm, to reflect rebranding following the acquisition of Sanchez Computer Associates by Fidelity National Information Services.

-- Bhaskar

Posted by K.S. Bhaskar 2008-01-23

GT.M V5.3-000 available

GT.M V5.3-000 is a major new release. Although there are no changes to M language support or to database functionality, GT.M has been internally re-engineered to support both 32- and 64-bit architectures. Even on 64-bit hardware, prior GT.M releases have always executed as 32-bit processes.

Coming in a release in the near future, 64-bit GT.M processes will be supported on GNU/Linux on x86_64. Since 64-bit hardware and operating systems are not yet common on the x86 platform, a 32-bit GT.M will continue to be available to run on GNU/Linux on both x86 as well as x86_64 hardware.... read more

Posted by K.S. Bhaskar 2008-01-23

GT.M V5.2-000B available on all platforms

GT.M V5.2-000B is available. This release is identical to V5.2-000A with a fix for a regression introduced in V5.2-000 that was recently reported by the user community. Release notes will be on the GT.M web site (go to and click on the User Documentation tab) shortly, if they are not there already. The release note entry for the fix is:

READ * in M-mode on Sequential Disk file and Socket device of a character with encoding between 128 to 255 inclusive now returns the correct code value. This fixes a problem introduced in V5.2-000 that resulted in READ * on those devices returning an incorrect (negative) value. (C9H04-002843)... read more

Posted by K.S. Bhaskar 2007-04-24