RELEASE NOTES FOR VERSION 3.1 ============================= 1. Data Structures ------------------ The data structures were re-written so that (hopefully) a significant improvement in the speed of parsing and making will be observed. Many strings that were malloc'ed on the fly are now character arrays on the stack. I'm pretty sure this is more efficient than lots of repetitive calls to malloc(). Where I was uncertain about the maximum length of a string, I left it as a dynamically allocated string. 2. Default Rules ---------------- The handling of default rules has been completely revised... o Rules are added to the head of the default rules list, so that if a redundant default rule is encountered it supersedes the old copy, since lists are searched from head to tail. o Multiple default rules for a given target are allowed. This means that a .OBJ may depend on .C OR .MAR OR .CLD. Just list each rule separately. The first rule that matches the target AND has an existing matching prerequisite is 'made'. If no matching rule is found that has a prerequisite that exists, the first rule (if any) that matched the target is used. 3. Target Line syntax --------------------- Target lines have a new extension to the syntax. The allowable delimiters for targets and prerequisites are whitespace (old) and commas (new). This allows one to define a symbol as a list of object modules separated by commas, so that the symbol may be used in both the target line and the link command. The colon separating the targets from the prerequisites must still be followed by at least one whitespace character if there are any prerequisites. 4. Symbol Definitions --------------------- Additional definitions of a symbol supersede the old value. All whitespace at the beginning of the symbol definition is eaten. 5. Continuation Lines --------------------- Continuation lines are handled in a much cleaner manner. The allowable continuation characters are the backslash '\' and the hyphen '-'. Upon digesting an input line, both are converted to a backslash. When target lines are parsed, all backslashes are converted to spaces, so it is important not to continue a line in the middle of a target name. When DCL command lines are added to the output file, backslashes are converted to hyphens and the line is broken after the hyphen. 6. INCLUDE Files ---------------- The command 'INCLUDE ' is interpreted as a directive to read the specified file and parse it. The word 'INCLUDE' must be all caps and must not be preceded by any whitespace or it will be interpreted as a DCL command line.