Inform 6.35
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
andMAX_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 aswitch
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 aroundif
andelse
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
andIffalse
), 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.