Inform 6 Updated

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:

Features added

  • 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)
    As a result of this, the memory size command line arguments ($SMALL$LARGE and $HUGE) are now redundant, and have been removed.
  • It is now possible to declare an individual property with the Property directive:Property individual propname;
  • A new setting $ZCODE_LESS_DICT_DATA has 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.PX.P()X.&PX.#P: P is a property
  • Assembly output (-a mode) now shows symbolic information for each assembly operand, if possible.
  • The -u switch now generates $MAX_ABBREVS possible abbreviations.
  • The Trace verbs directive now prints out the entire grammar table.
  • Using the -D switch when the game or library does not support debug_flag now 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.

Bugs fixed

  • 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 -s switch) 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:

Please follow and like us:

About the Author


The A.P.P.L.E. Website is run by the Apple Pugetsound Program Library Exchange Users Group and is open to all Apple and Macintosh fans and their friends.