David Kinder has announced the latest release of the Inform 6 Compiler for Interactive Fiction. Inform 6.36 includes a bunch of newly added features and bug fixes including the following:
- The algorithm used to apply abbreviations for Z-code has been replaced with a more efficient dynamic programming algorithm, based on the paper by R.A. Wagner “Common phrases and minimum-space text storage”, Communications of the ACM, 16 (3) (1973).
- Inform has been refactored to use dynamic memory allocation rather than fixed size buffers. As a result, the following settings are now removed: if the available space is filled, Inform will allocate more memory without requiring user intervention.
- MAX_ABBREVS (removed only for Glulx)
- MAX_LOCAL_VARIABLES (now a constant)
$HUGE) are now redundant, and have been removed.
- It is now possible to declare an individual property with the
Property individual propname;
- A new setting
$ZCODE_LESS_DICT_DATAhas been introduced. When set to a non-zero value, this tells the compiler to omit the last byte of Z-code dictionary entries (which can be referred as
#dict_par3), as this is commonly unused.
- There are now warnings if the compiler detects that the type used in certain expressions is not correct. This only checks expressions that contain defined symbols, and does not change the generated code. The checks are:
remove O: O is an object
move O to P: O is an object; P is an object or a class
give O A: O is an object; A is an attribute
O has/hasnt A: O is an object; A is an attribute
O in/notin P: O is an object; P is an object or a class
X ofclass C: C is a class
X provides P: P is a property
X.#P: P is a property
- Assembly output (
-amode) now shows symbolic information for each assembly operand, if possible.
-uswitch now generates
Trace verbsdirective now prints out the entire grammar table.
- Using the
-Dswitch when the game or library does not support
debug_flagnow produces an explanatory warning:
DEBUG mode is on, but this story or library does not appear to support it
- Expressions of the form
(x <= y or z)or
(x >= y or z)now produce a warning message: while their effect is documented, well defined, and is not being changed, it is not necessarily what a user might expect.
- The check for whether an abbreviation actually reduces the size of the Z-code output file has been made more accurate, and the message if an abbreviation does not reduce the size is now a warning, rather than an error.
- For Glulx, stub functions (and the veneer function
Symb__Tab()) are now always compiled as local-argument functions (with a type byte of 0xC1). Previously, they were in some cases compiled as stack-argument functions (with a type byte of 0xC0).
- Counts of properties in errors and in the statistics report (output with the
-sswitch) are now consistent, and reflect how many properties the user can define.
- The check that there are not too many common properties defined now correctly excludes individual and alias properties.
- Inform will now report an error if the “class” line of a class definition mentions the class being defined.
- A crash when compiling a malformed array declaration has been fixed.
You can download the latest version of the Inform 6 compiler for Windows at:
To use the Inform 6.36 compiler, you will need the Inform library which can be downloaded from here:
Inform 6 for Mac OS X, Linus, Mac 68K and PPC as well as many other platforms is available on the Inform Executables page at: