ml1.org.uk History of ML/I versions

Many implementations of ML/I will have two distinct version identifiers. One will be the version of the core logic of ML/I, and the other will be a system-dependent value, relating to the machine dependent logic (input/output, etc.). This page is concerned only with the various versions of the core logic, and the features of each one. This should help when reading user documentation such as the ML/I User's Manual.

The version identifier for the core logic has a somewhat arcane format; it consists of three letters. The first letter indicates the source of the implementation (original language).

Possible values for the first letter are:

A
The source language was either L or LOWL; i.e. the logic was mapped from one of these. For more details, see How ML/I is implemented. Each language is given its own column in the table below.
B
The source language was BCPL; i.e. the logic was compiled from the BCPL source for ML/I.
C
The source language was C; i.e. the logic was compiled from the C source for ML/I.

The second letter indicates a 'major version' identifier, and the third letter changes when minor changes are made to the logic. Currently, implementations differing in only the first letter are expected to support the same features. Note that this is probably not the original scheme, but it fits with earlier versions and has now been adopted!

The table below is in chronological order, oldest version first. Many versions appear in only one or two source forms, as noted. Earlier versions did of course exist, but there is no information about them. There is also little information about some of the earlier versions mentioned below, but this is really only of academic interest. Intermediate development versions have been omitted.

Version Features/changes
L LOWL BCPL C
AGA
  • Earliest recorded version
AIC
  • Closing delimiter for operation macros changed from semicolon to newline
AID AID
  • Not known
AIE AIE
  • Not known
AIG
  • Not known
AIH
  • Minor code optimisations
AJB BJB CJB
  • Minor code optimisations
  • Messages now in mixed case instead of all upper case
  • Count of errors now stored in S5
CKA
  • Addition of character (string) variables
CKD
  • Addition of support for logical OR (|) and logical AND (&) operators in macro expressions
CKJ
  • Addition of support for all possible character codes in the range 0 to 255 (C version)
CKL
  • Addition of support for a single non-alphanumeric character to be treated as alphanumeric (via setting of S6)
CKM
  • Minor portability corrections.
CKN
  • Minor portability corrections.

Valid XHTML 1.0! Valid CSS!

This site is copyright © 2011 Bob Eager
Last updated: 13 Aug 2011