Inform 6.34

After some recent patches from Zarf, it seems like time to release Inform 6.34, which is now available from the IF-Archive: Release notes, source code and Windows console executable.

A summary of the changes:

  • New system constants for Glulx.
  • Unicode characters can now be included in Glulx word arrays.
  • High-plane Unicode characters can be used for Glulx.
  • New command line switch -V prints the version and date of the compiler and then exits.
  • New setting $SERIAL sets the six digit serial number written into the header of the game.
  • It is now possible to add to an existing path without replacing it by using an additional ā€˜+ā€™ character.
  • New ā€œOrigsourceā€ directive has been added to allow a record of the location of the relevant in a higher-level language that has been converted to Inform 6.
  • The constant $INDIV_PROP_START is now a setting that can be changed for Glulx.
  • Arrays that are never modified can be declared as ā€œstaticā€.
  • It is no longer possible to cause values to be pushed onto the stack but not then pulled by evaluating a logical expression but not assigning or using the result of that expression.
  • Replacing a recursive function now works correctly.
  • The output for the $list command line argument now includes the value of the $MAX_ARRAYS setting.
  • Memory settings can no longer overflow if set to very large values.
  • The debugging output file now contains the correct function addresses even when the compiler has been told to omit unused functions.
  • Invalid statements with empty parentheses now generate a sensible error.
  • Crashes caused by over-long identifiers have been fixed.
  • The object table is now always generated at an even Z-Machine address, as the logic in the veneer routine RA__Pr() requires this.
  • The F and u options are now explicitly disallowed with the Switches directive.
  • Assigning values to system functions now leads to an error message, rather than a crash.
  • Crashes due to over-long abbreviations have been fixed.
  • Representing the at symbol ā€˜@ā€™ by @{0040} now works when compiling to Glulx.
  • The USE_TEMPORARY_FILES option no longer has a bug that led to files being closed more than once.
  • The platform-specific definitions in header.h have been cleaned up, and ā€œUNIX64ā€ has been removed.
  • The maximum length of a verb is now limited to 120 (which can be changed in the source code).
  • Compiling to Z-code version 3 has shown a number of regressions since Inform 6.15: diverted actions are fixed, and the veneer routine RA__Pr() can be used.
14 Likes

Since ifarchive.org is now behind Cloudflare, it may take a little while for the content for the release notes to update: you might just get the 6.33 release notes. Hopefully this should clear itself up in a few hours, or 24 at the most.

3 Likes

The links at http://www.ifarchive.org/indexes/if-archive/infocom/compilers/inform6/ are already updated. (I have the index pages set to a shorter cache refresh time.)

4 Likes

Thanks! Iā€™ll have the Inform6 for Unix package updated with this as soon as I get some stuff finalized for version 6.12.4 of the Standard Library.

Hey guys,

I appreciate the effort and all. I love Inform 6, but Iā€™m wondering why you removed all the older builds of it like 6.31/6.32/6.33 from the archive? Is there an old folder, like in the library, that Iā€™m missing?

I thought the archive kept all that stuff?

Previous versions of the source is at:

http://www.ifarchive.org/indexes/if-archive/infocom/compilers/inform6/source/old/

Iā€™m not sure about executables, but you can compile any version from source if you need it.

1 Like

Yeah. Thanks for linking it. Too bad about the executables, I have my own for PC and Mac. But if anybody wanted to compile someone source using an older build, this would be a roadblock.

Thatā€™s all Iā€™m thinking about.

Note that I6 has been backwards-compatible since 6.30. (Maybe 6.21, but the jump to 6.3x was more significant.) The current compiler should successfully compile older games.

1 Like

Iā€™ve just updated to 6.34 via homebrew, and Iā€™m curious as to why the banner reports:

Inform 6.34 for Unix (16th August 2017)

What does the 2017 date refer to?

Maybe that homebrew recipe was generated from a bleeding-edge version of the source circa 2017? I think the version number has been ā€œ6.34ā€ in the source for a long while.

The release notes at ifarchive.org were updated on 21 May 2020 and the comment says ā€œRelease notes for Inform 6.30 to 6.34.ā€, but theyā€™re still the release notes for 6.33. Are the 6.34 release notes available somewhere else?

Stop looking. I found them. Theyā€™re on GitHub.

Waiting for the Unix package :slight_smile:

On a related topic,because you asked in another thread about how to improve Inform lib, I say that having enabling/disabling unused/unneeded function(s) can be useful even for a z5 and z8 story file.

(BTW, I never messed much with glulx I6ā€¦)

Inform 6 and Glulx is a pretty powerful combination. Iā€™ve just finished a game with music and graphics and am really pleased with the result. Unfortunately, youā€™ll have to wait until IFComp 2020 to see it, but I will no doubt write some more games using this combo.

Incidentally, I used the 6.34 compiler for the last beta release and I had no problems whatsoever.

3 Likes

Iā€™d like to add the ability to disable unused functions as well. However, I think this will be a fairly large undertaking. It wonā€™t be in 6.12.4. Iā€™m focusing of the milestones listed in https://gitlab.com/DavidGriffith/inform6lib/-/milestones/5.

1 Like

The I6 compiler has the ability to discard unused functions at compile time. (Itā€™s possible that Hadean Lands is the only game thatā€™s ever used it.)

To use this feature, add the argument $OMIT_UNUSED_ROUTINES=1 to the I6 command line. Or add the line

!% $OMIT_UNUSED_ROUTINES=1

to the top of the I6 source file (no comments or blank lines above it).

4 Likes

Thatā€™s brilliant and I have to admit that I didnā€™t know about it to be honest. Saved me 620 bytes in my work in progress game, which is much in a constrained environment. Thanks! :metal:

donā€™t work on commandline (Inform 6.34), but when put in the source works wonders:

(albeit is a test and the work is still in assessment, the filename is revealing, and I have a strict ā€œno anticipationā€ policy because of my near-infinite dev timeā€¦)

-rw-rā€“r-- 1 pigi pigi 88064 giu 2 16:50 xxxx.z5
-rw-rā€“r-- 1 pigi pigi 91136 giu 2 16:50 xxxx.z8
-rw-rā€“r-- 1 pigi pigi 83456 giu 5 09:13 xxxxomit.z5
-rw-rā€“r-- 1 pigi pigi 86528 giu 5 09:17 xxxxomit.z8

gain of 4.5kā€¦

ā€¦for the Divineā€™s sake, WHY THIS FEATURE IS NOT DOCUMENTED ???

EDIT: under linux/bash, the commandline needs to be escaped, e.g.:

inf634 '$OMIT_UNUSED_ROUTINES=1' yolp.inf yolp.z5

Best regards from Italy,
dott. Piergiorgio.

This is documented in the compilerā€™s Inform Release Notes (ReleaseNotes.html).

1 Like

Thanks, Aureas !