This release introduces connection pooling for QMClient sessions to improve performance of applications such as web servers that create many short life QMClient sessions. This is currently available only on Windows.
The user authentication mechanisms have been enhanced such that a Linux “user mode” installation of QM on which the qmlnxd daemon is running as root will now apply operating system level validation to the user name and password, running the QM process as this user name if login is successful. For systems with qmlnxd running as a non-root user, validation is performed using QM’s own user register if security is enabled.
The automatic save and restore of the command stack when the $COMMAND.STACK X-type VOC record is present no longer treats a QMConsole session on Windows as a special case. The command stack is now stored in the stacks subdirectory of the account in which the user entered QM regardless of process origin. On ECS mode systems, the stack is saved in UTF-8 encoding. The GET.STACK and SAVE.STACK commands have been extended to allow an alternative file name to be specified.
When using a CALL correlative, the @ACALL.FNO variable contains the field number from the A/S-type dictionary item.
The DO.REMOTE command can be used to execute a command on a remote QM server.
The MAP command now has an option to list locally catalogued programs.
The CATALOGUE.LOCAL setting of the OPTION command causes the CATALOGUE and DELETE.CATALOGUE commands to default to using the local catalogue. Both commands have been extended to allow the mode to be explicitly specified as PRIVATE to override this default.
A USER option has been added to the WHO command to display the user name.
The QMBasic compiler now includes the ability to specify in the $BASIC.OPTIONS record a list of files that will be searched for include records.
All QMBasic statements that produce numbered select lists now have equivalents that produce Pick style select list variables.
The QMBasic FILEINFO(FL$OWNER) and OSPATH(OS$OWNER) functions can be used to find the owner of a file on Windows.
A new shared mode for files opened with OPENSEQ allows multiple QM processes to append data to the same file as might be required, for example, in an audit trail log.
The OS$FULLPATHX key to the QMBasic OSPATH() function acts like OS$FULLPATH but preserves the casing of file names on case insensitive file systems.
A new SYSTEM() function key, 1065, has been added to return information from the transaction cache. This can be used to obtain diagnostic information when tracking down faults in transactional applications.
The QMBasic TRY/CATCH construct has been extended to allow optional creation of a call stack trace when an exception is thrown.