General

Library Files

In general, if only the implementation and not the interface of a module changes, we would not like to recompile other modules that depend upon that module. Noting that the interface for a module is determined by its library file, we will accomplish this goal as follows:
  1. Each source file, foo.clu, shall have an associated source file foo.lib.clu
  2. Using foo.lib.clu, a library file foo.lib will be generated
  3. Modules that depend upon foo will be compiled using foo.lib

Revision Control

Whenever you have multiple people working with interrelated source code modules, and especially whenever they are modifying the same files, you have to be careful that one person's modifications do not have unintentional side-effects for another person. To accomplish this, we will adopt the following conventions.
  1. Once working source code is placed in the shared code directory, it will only be replaced with revised versions which are also functional.
  2. When a shared code file foo.clu is modified, the previous version will be renamed foo.clu.bak.1 and left in the directory
  3. When changes are made to program specifications, the affected people should be notified via email ASAP.