Up Next
Go up to Top
Go forward to 2 Registration

1 Version control

Most languages that support some form of modularization do not have the facility to specify explicit version numbers of modules. This means that version control is entirely a matter of version management tools that have to keep track of whole configurations of modules that are compatible.

In contrast to this, CASL has constructs to specify both default and explicit versions of libraries. The relevant paragraph of the CASL summary [LD98] is the following:

  LIB-NAME         ::= LIB-ID | LIB-VERSION
  LIB-VERSION      ::= lib-version LIB-ID VERSION
  VERSION          ::= version NUMBER+

A library identifier LIB-ID in a local library may be written as a simple identifier. A library version name LIB-VERSION in a local library is written:

LI version N_1. ... .N_n
The lists of version numbers are ordered lexicographically on the basis of the usual ordering between natural numbers.

Usually, specifications are imported from libraries without specifying the version number of the library, using a LIB-ID. This implicitly refers to the default (=latest) version. But it is also possible to specify a specific version using a version number.

A version number consists of a list of natural numbers, like 1.8.3. The different integers are not only used to distinguish between minor (from 1.8.3 to 1.8.4) and major (from 1.8.4 to 2.0) changes, but also between different branches in the development. Different branches may occur temporarily in the development process. Consider the case that LIB1 uses version 1.5.3 of LIB2. Then, an alpha test version 1.6.0 of LIB2 appears, doing some redesign of interfaces.2 Those people who do not want to be alpha testers should use version 1.5.3 until 1.6 has become stable. Now before 1.6 becomes stable, some minor bug of 1.5.3 is discovered and fixed, so we get 1.5.4. Of course, at the latest when 1.6 has become stable, say with 1.6.2, it should also incorporate the bug fix from 1.5.4, and 1.5.4 becomes obsolete.3

This example shows that dates as version numbers do not suffice: Version 1.5.4 is newer than version 1.6.0, so the date would not express the entire story about the relation between 1.5.4 and 1.6.0. But the user may still want to specify a date instead of a version number. This can be necessary if a user's library imports other libraries with the default mechanism, and then these libraries evolve and become incompatible with the user's library. There can be tools that, for a given date, look up the version which was current at this date. By feeding the date at which everything worked into the tool, the version numbers of the compatible versions may be found.


CoFI Note: M-5 -- Version: 1.0 -- 29 September 1998.
Comments to till@informatik.uni-bremen.de

Up Next