Skip to content

Inform 6.35

Compare
Choose a tag to compare
@DavidKinder DavidKinder released this 22 May 06:14
· 1361 commits to master since this release

Inform 6.35 was released on 22th May 2021.

Features added

  • Some Unix-style command line options are now supported, primarily to avoid the use of $ in command lines (although the old syntax is still supported). The new syntax for these options is:

    --help
    --path PATH=dir
    --addpath PATH=dir
    --list
    --size huge, --size large, --size small
    --helpopt SETTING
    --opt SETTING=number
    --config filename
    
  • Numeric constants can be declared as command line options, either like a setting:

    $#SYMBOL
    $#SYMBOL=NUM
    

    Or as a new Unix-style command line option:

    --define SYMBOL
    --define SYMBOL=NUM
    

    This defines SYMBOL as a constant, just like the Constant directive. Like that directive, if no value is supplied, it defaults to zero.

  • The settings $MAX_ABBREVS and MAX_DYNAMIC_STRINGS control the number of abbreviations and the number of dynamic strings, respectively. When compiling to Z-code these settings are linked, as they both use the same 96 Z-code abbreviations that are available.

  • The setting $TRANSCRIPT_FORMAT controls the output format of the -r option. The default is still the same format as before, (and can be explicitly selected with $TRANSCRIPT_FORMAT=0), but $TRANSCRIPT_FORMAT=1 enables the new, more informative and machine-readable format.

  • The Origsource directive, added in version 6.34, is now used in error reporting, regardless of the error format selected. (Previously it only appeared with the default error message format, E0.)

  • If an attempt is made to redefine an existing symbol, there is now a clearer error message, explaining what the error is and where the symbol was previously defined.

  • -g3 is now a valid option: it enables tracing for all routines, including the veneer. This functionality was added back in Inform 6.21, but the code to check the actual option was omitted.

  • Using the option -k (which turns on the generation of debugging information) no longer implies -D (which turns on debug mode).

Bugs fixed

  • Only the following directives are now allowed in a function or object definition: all others give an error:

    #ifv3
    #ifv5
    #ifdef
    #ifndef
    #iftrue
    #iffalse
    #ifnot
    #endif
    #message
    #origsource
    #trace
    
  • An #ifdef statement at the start of a switch block now compiles correctly, and no longer gives a spurious error.

  • The following, incorrect forms of array declaration now generate an error:

    Array foo --> 'dictword';
    Array foo --> FunctionName;
    Array foo --> [];
    
  • If a common property array overflows when compiling to Z-code version 3, the object is no longer corrupted.

  • The incorrect code

    Object foo with name 'x';
    

    now correctly causes the warning

    'name' property should only contain dictionary words
    

    when compiled to either Glulx or Z-code: previously the warning only appeared when compiling to Z-code.

  • The compiler now correctly handles #If directives around if and else clauses.

  • Forward declared properties (that is, properties that are used before they are defined in the game source code) now work correctly.

  • Where directives allow a constant to be used (Release, Version, Dictionary, Iftrue and Iffalse), the compiler now reports an error if the constant is not defined.

  • When compiling to Z-code version 3, dictionary words are now correctly truncated at 6 Z-characters (instead of 9).

  • When compiling to Z-code version 3, two dictionary words that differed only in Z-characters 7-9 would lead to two identical dictionary entries: now there will only be one entry.