Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Inform 6.14 released

0 views
Skip to first unread message

Graham Nelson

unread,
Sep 8, 1997, 3:00:00 AM9/8/97
to


Inform 6.14 now released
========================

The Inform compiler is finally getting another maintenance release,
the first since Inform 6.12 and 6.13 at the end of March. There are
no new features, and almost all of the bugs fixed are arcane rarities
which, like lightning, never strike twice. But for a few authors of
large games the first bug fix (below) may be important, and that
justifies making the release.

Two people have had rather ghostly sightings of "backpatch errors"
which, alas, have not been reproducible and so have not necessarily
been mended. I've tried to clarify the position with this release
by making Inform print out text asking people to email me their
source code if such an error occurs again: I'm determined to fix it.

Until library 6/7 comes out, if you're going to use the -U option
of Inform 6.14 (to link in the library modules) you'll need to make
a slight correction to one of the library files, I'm afraid: from
"linklv.h", delete the line reading

Import global gender_and_number;

(This is needed because Inform 6.14 is better at spotting linkage
errors than 6.13 was: the error was in the library all along.)

As a temporary measure, you can get hold of the new material from the
Inform 6 Home Page:

http://www.gnelson.demon.co.uk/inform.html

Please note that there may be a delay of one to three days before
the new material becomes "visible" from your region of the Internet,
because of the regrettable way that my Internet service provider
organises its WWW space. The material will in any case be filed
in its proper place at ftp.gmd.de shortly.

Please also note that I am releasing source code: executables
will follow when the porters work their magic.

My thanks, as ever, to those who have emailed me bug reports.
I am always grateful for these, though it can sometimes take me
a couple of weeks to reply when I have a serious email backlog,
for which I apologise. Please try to send me a short piece of
source code demonstrating what you think is wrong, if possible:
this saves on long explanations and makes it much easier for me
to find the problem.


Graham Nelson
8 September 1997


---------------------------------------------------------------------------
Modifications since 6.13 (as reproduced from the Technical Manual):

Bugs fixed:
"Parker's disease": In very large games only, backpatch errors being
caused because the Z-code area of the Z-machine had overflowed
past the size where the compiler could backpatch it (this tended
to happen only if large amounts of text were printed by Inform code
rather than being property values). The Inform code generator now
automatically writes any string of text longer than 32 characters
into the static strings area: designers shouldn't notice any difference
in behaviour of the "print" or "print_ret" statements.
(The new arrangement is fractionally wasteful of bytes -- about
2 to 4 bytes per string in excess of 32 characters -- but makes
a big difference to the relative sizes of the code and strings
areas. "Advent" compiled the old way was 60.1% code, 17.3% strings;
the new way, it comes out 40.6% code, 37.1% strings and is about
1K bigger. Most of the change occurs when compiling library
messages; the effects are less dramatic on typical Inform code.)
A different cause of backpatch errors is attempting to link Version 5 modules
into a Version 8 game. If you're compiling a V8 game and want to
link in the library, for instance, you'll need to compile the
library modules with "-v8" as well. Inform used not to check this
error condition, but now does produce an error message if there's
a version mismatch between game and module.
The linker also now checks that module and game are using the same
Z-machine character set. (If either one has made a Zcharacter directive
which differs from the other, then the sets are inconsistent and
linkage can't take place. This will only ever happen if you're
working in a language other than English, and trying to use the linker,
and it can be cured by copying the Zcharacter directives out of the
language definition file into a little include file, and including
that in the source for your main file as well as the source for any
modules of your own -- i.e., any modules other than the library ones.)
Finally, the linker checks for the error condition that the module asked
to import a variable which turns out not to have been defined in the
main game.
"continue" not working (branching to the non-existent label -1, in
fact) if used inside a "switch" statement. (It ought to continue
the innermost loop containing the "switch" statement, if there is
one, or give an error if there isn't.)
The two string escapes @@94 (producing a ^ character) and @@126
(producing ~) in fact producing new-line and double-quote.
Conditional branches to rtrue or rfalse in assembly-language being
reversed in sense.
Source code being garbled after any Include statement which ends at
a byte position which is a multiple of 4096, minus 3. (My thanks
to Andrew Plotkin for both finding and diagnosing this.)
"For" loops in the form "for ( : : )" (with white space between the two
colons), which occur in a routine after a previous one which happens
to have a designer-defined label in a particular position, causing
an incorrect if harmless "Label declared but not used" warning.
Very short programs testing "x provides <property>", but never reading,
writing or otherwise using <property>, causing stack overflows or
restarts. Nobody would ever need such a program anyway.
Function calls not working, or having garbled arguments, in Version 3
or Version 4 games (the Inform library requires Version 5 or better
nowadays, so the ability to compile V3 or V4 files is only needed
for interpreter testing).
The error message disallowing use of an assembly opcode if the Z-machine
version doesn't support it, now quotes the opcode name.
Suppressed "declared but not used" warnings for global objects not being
counted towards the total number reported as suppressed when Inform
prints its final message.

Source code cleaning:
Three character conversions amended to unsigned character conversions.
Backpatch errors, which I devoutly hope not to see again, are now
reported as a new category of error: "compiler errors" which produce
an apologetic banner, asking the user to report the fault to me.
Link errors are reported more prettily (differently, anyway).

---------------------------------------------------------------------------

--
Graham Nelson | gra...@gnelson.demon.co.uk | Oxford, United Kingdom


Uncle Bob

unread,
Sep 9, 1997, 3:00:00 AM9/9/97
to

DOS and Linux ports will be posted to ftp.gmd.de on or before
Wednesday, 10 September, barring unusual problems.

Bob Newell


Robert A. Pelak

unread,
Sep 10, 1997, 3:00:00 AM9/10/97
to


Macintosh versions for 68K and PPC macs are now availble at
ftp.gmd.de in the \incoming\if-archive directory. They will
undoubtedly be moved to their usual home soon.


0 new messages