File Format

Versions are often saved in binary files for storage in repositories, distribution to users etc. These files are commonly call 'mcz files' as they carry the extension .mcz.

Archive contents

Mcz files are actually ZIP archives that follow certain conventions. Conceptually a Version contains four things:

Package.

A Version is related to a particular Package. Each mcz file contains a member called package which contains information about the Version's Package.

VersionInfo.

This is the meta-data about the Snapshot. It contains the author initials, date and time the Snapshot was taken, and the ancestry of the Snapshot. Each mcz file contains a member called version' which contains this information.

Dependencies.

A Version may depend on specific Versions of other packages. An mcz file may contain a dependencies/ directory with a member for each dependency. These members will be named after the Package depended upon.

Snapshot.

A Snapshot is a record of the state of the package at a particular time. Each mcz file contains a directory named snapshot/. All the members in this directory contain definitions of program elements, which when combined form the Snapshot. Current versions of Monticello only create one member in this directory, called source.st.

Source code encoding

The member named snapshot/source.st contains a standard fileout of the code that belongs to the package.

Metadata encoding

The other memebers of the zip archive are encoded using S-expressions. Conceptually, the expressions represent nestable dictionaries. Each pair of elements in a list represent a key and value. The following example needs little explaination: (key1 'value1' key2 (sub1 'sub value 1'))