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 !