mirror of
https://github.com/ganelson/inform.git
synced 2024-07-16 22:14:23 +03:00
1037 lines
45 KiB
Markdown
1037 lines
45 KiB
Markdown
|
# Release notes for Inform v9.3 (build 6M62)
|
|||
|
|
|||
|
This release was made on 14 December 2015, before Inform was open-sourced.
|
|||
|
At that time bugs were tracked by a Mantis server, with seven-digit issue numbers,
|
|||
|
and versions of Inform were identified by build codes in the form NLNN.
|
|||
|
|
|||
|
This is part of the [historical archive of release notes](../version_history.md).
|
|||
|
|
|||
|
# Introduction
|
|||
|
|
|||
|
This is for the most part a maintenance release of Inform, incorporating fixes
|
|||
|
for nearly 300 issues reported with the previous build. All bugs reported
|
|||
|
before 3 September 2015 (and most later ones) have been removed. Fans of bugs
|
|||
|
need not despair, however, as the code has internally been much rewritten, so
|
|||
|
new ones will doubtless appear.
|
|||
|
|
|||
|
A modest selection of minor improvements to the underlying language can be
|
|||
|
found in §2, but little is fundamentally altered.
|
|||
|
|
|||
|
The Mac OS X user interface application sees two new developments in this
|
|||
|
release. One is the new concept of an "extension project", intended for writers
|
|||
|
of Inform extensions, which manages the extension source text better, and can
|
|||
|
automatically test the extension's examples of usage, which should make
|
|||
|
maintenance easier. The other development is that the previous Skein and
|
|||
|
Transcript panels have been merged together into one, simply called Testing,
|
|||
|
with a much clearer and simpler user interface. As in the past, some of
|
|||
|
these developments are likely to appear on other platforms in due course,
|
|||
|
but users should expect this to take a little time.
|
|||
|
|
|||
|
Many users gave up their time to report bugs in 2014/15, and we're grateful to
|
|||
|
all of them, but a particular tip of the hat goes to Daniel Fremont, who not
|
|||
|
only tested many obscure corners of the language but also combed through the
|
|||
|
documentation for out-of-date usages. It is thanks to Daniel that we learned
|
|||
|
that repeating the sentence "Foo is a room." 117030 times would crash the
|
|||
|
compiler, and that the documentation made what he called "a 300 sextillion kg
|
|||
|
error in the mass of Jupiter" (in our defence, that makes less difference
|
|||
|
than you might expect); and, at Daniel's urging, we did indeed "pick a
|
|||
|
consistent spelling for 'discombobulate'".
|
|||
|
|
|||
|
# Minor new features in the language
|
|||
|
|
|||
|
Usage of the "stored action" kind has been streamlined considerably. For
|
|||
|
one thing, it can now be called simply "action". As when "indexed text" and
|
|||
|
"text" became the same thing, so too "action" and "stored action" are now
|
|||
|
synonymous. Constant actions no longer need to be written using the
|
|||
|
"action of" phrase, so for example these usages are now legal:
|
|||
|
```
|
|||
|
The best idea yet is an action that varies.
|
|||
|
|
|||
|
When play begins:
|
|||
|
now the best idea yet is pushing the button.
|
|||
|
```
|
|||
|
Previously one had to call it a stored action that varies, and one had to
|
|||
|
say "now the best idea yet is the action of pushing the button". The
|
|||
|
"action of..." phrase still exists, to keep old source text working, but
|
|||
|
it now has the following comically redundant definition in the Standard
|
|||
|
Rules:
|
|||
|
```
|
|||
|
To decide what action is the action of (A - action): (- {A} -).
|
|||
|
```
|
|||
|
|
|||
|
In past builds, switch-like ifs were valid only for simpler kinds of value
|
|||
|
such as numbers; they can now switch on any value, and in particular on texts.
|
|||
|
For example:
|
|||
|
```
|
|||
|
if the new password text is:
|
|||
|
-- "xyzzy": say "Nothing happens.";
|
|||
|
-- "password": say "Would you care to accept a position at the NSA?";
|
|||
|
-- otherwise: say "Accepted."
|
|||
|
```
|
|||
|
|
|||
|
Two minor improvements to the handling of named constants, which are
|
|||
|
relatively new in the language.
|
|||
|
|
|||
|
(a) The number of blank rows in a table can now be specified using a named
|
|||
|
constant, like so:
|
|||
|
```
|
|||
|
The spare capacity is always 10.
|
|||
|
|
|||
|
Table of Stuff
|
|||
|
whatever (a number)
|
|||
|
with spare capacity blank rows
|
|||
|
```
|
|||
|
The named constant must, of course, hold a non-negative integer. Note that
|
|||
|
it is allowed to be 0, which adds no blank rows. Inform doesn't allow
|
|||
|
completely empty tables, so if, as in this case, there are no explicit rows
|
|||
|
and the name comes out to 0 as well, Inform quietly gives the table a single
|
|||
|
row of blanks, but does compile it. (See bug report 0001724.)
|
|||
|
|
|||
|
(b) Map connections can now be made to or from rooms referred to by named
|
|||
|
constants, not explicitly as usual. Thus:
|
|||
|
```
|
|||
|
The Lounge is a room.
|
|||
|
The designated room is always the Lounge.
|
|||
|
The Exit Area is east of the designated room.
|
|||
|
```
|
|||
|
places the Exit Area east of the Lounge.
|
|||
|
|
|||
|
When one action is converted to another one inside the Standard Rules, as
|
|||
|
most often happens when "removing X from Y" is converted to "taking X",
|
|||
|
and the action then succeeds, the after rulebook for the original action
|
|||
|
is now followed. For example,
|
|||
|
```
|
|||
|
Some coins and some bills are in the tip jar.
|
|||
|
|
|||
|
After removing something from the tip jar:
|
|||
|
say "Alice is shocked at your bold impropriety."
|
|||
|
```
|
|||
|
will now work as might be expected from its wording. (This was filed as
|
|||
|
bug report 0001476, but it was really a feature request.)
|
|||
|
|
|||
|
A new Understand token "[any things]" is a sort of cross-breed between
|
|||
|
"[any ...]" and "[things]", in that it behaves like "[things]" (accepting
|
|||
|
a multiple object) but with no restriction on scope, that is, applying to
|
|||
|
anything however distant or invisible, as with "any". (This was suggestion
|
|||
|
751340.)
|
|||
|
|
|||
|
A new text substitution for adaptive text:
|
|||
|
```
|
|||
|
[regarding N]
|
|||
|
```
|
|||
|
makes it easier to write responses such as the parser error internal rule (Q):
|
|||
|
```
|
|||
|
"[if number understood is 0]None[otherwise]Only [number understood in
|
|||
|
words][end if] of those [regarding the number understood][are] available."
|
|||
|
```
|
|||
|
which inflects the verb to agree with the number.
|
|||
|
|
|||
|
A subtle change to the rules on kind inference: if a temporary value X
|
|||
|
is created with "let", in the shape
|
|||
|
```
|
|||
|
let X be V;
|
|||
|
```
|
|||
|
then Inform gives X whatever kind V has - for example, "let X be 10" will
|
|||
|
make X a number, and so on. Traditionally, though, if V is any kind of
|
|||
|
object, X has the kind "object", not something more specific. This is so
|
|||
|
that sensible-looking source text like this:
|
|||
|
```
|
|||
|
let X be Peter;
|
|||
|
now X is Jane;
|
|||
|
```
|
|||
|
...won't cause a problem message. If X is given the kind "man", the kind
|
|||
|
of Peter, then the "now" can't be allowed because Jane has kind "woman".
|
|||
|
In previous builds, then, Inform gave X the kind "object".
|
|||
|
|
|||
|
The change is that it now gives X the right top-level kind of object,
|
|||
|
instead of "object" itself. In the case of "let X be Peter", X will now
|
|||
|
be given the kind "thing", because Peter has the kind "man", but man is
|
|||
|
a kind of person, which is a kind of thing, and thing is a kind of object.
|
|||
|
More generally, where X would once have been an "object", it will now be
|
|||
|
one of "thing", "room", "region" or "direction". This removes a number of
|
|||
|
small annoyances (see for example bug report 0001501).
|
|||
|
|
|||
|
Most phrase definitions are not case sensitive, but an exception is made
|
|||
|
for text substitutions where there are different definitions depending
|
|||
|
on whether the first word is capitalised or not. This enables "[the X]"
|
|||
|
and "[The X]" to have different meanings. In the new build, case sensitivity
|
|||
|
has been extended to cover all text substitutions whose definition is a
|
|||
|
single letter. This means that "[S]" will no longer be misread as if it
|
|||
|
were "[s]", the notation for an optional "s"; so source text such as
|
|||
|
```
|
|||
|
let S be 10;
|
|||
|
say "S is [S].";
|
|||
|
```
|
|||
|
will no longer peculiarly say "S is s." or "S is .", but will say "S is 10."
|
|||
|
(Prompted by bug report 0001492.)
|
|||
|
|
|||
|
In past builds, the adjective "empty" couldn't usefully be applied to
|
|||
|
relations created in sentences in the usual way; for example, given
|
|||
|
```
|
|||
|
Noticing relates various people to one person.
|
|||
|
```
|
|||
|
the condition "the noticing relation is empty" and the instruction "now the
|
|||
|
noticing relation is empty" weren't allowed. They now are. (Prompted by
|
|||
|
bug report 0001416.)
|
|||
|
|
|||
|
A new rulebook has been added:
|
|||
|
```
|
|||
|
multiple action processing rules
|
|||
|
```
|
|||
|
This is called when a command would produce a multiple action, such as
|
|||
|
TAKE ALL. Rules in it can then take the opportunity to look at the list of
|
|||
|
objects to which the action would apply, and can change or rearrange this.
|
|||
|
|
|||
|
"Understand" can now apply to descriptions of values. For example,
|
|||
|
```
|
|||
|
Understand "glowing" as something lit.
|
|||
|
```
|
|||
|
now works; previously this could only be done with the circumlocution
|
|||
|
```
|
|||
|
Understand "glowing" as a thing when the item described is lit.
|
|||
|
```
|
|||
|
(Prompted by bug report 0001796.)
|
|||
|
|
|||
|
The following rules have been added to the Standard Rules:
|
|||
|
|
|||
|
(a) The "describe what's on mentioned supporters in room descriptions rule"
|
|||
|
improves the look of room descriptions when a non-scenery, non-undescribed
|
|||
|
supporter is holding up one item that has an initial appearance and another
|
|||
|
that hasn't, and is for some reason mentioned in that first item's initial
|
|||
|
appearance; this parallels the existing handling of scenery supporters.
|
|||
|
|
|||
|
(b) The "exclude indirect possessions from take all rule" means that
|
|||
|
TAKE ALL won't try to take items which are inside open containers already
|
|||
|
being carried, and so forth. (See bug report 0001474.)
|
|||
|
|
|||
|
The following existing rules in the Standard Rules have changed:
|
|||
|
|
|||
|
(a) The "standard taking rule" has been extended to add:
|
|||
|
```
|
|||
|
if the actor is the player, now the noun is handled.
|
|||
|
```
|
|||
|
This ensures that even items only fleetingly carried are "handled"; in
|
|||
|
previous builds, a successful taking action might not result in an object
|
|||
|
being "handled" if it were then lost again before the end of the same turn.
|
|||
|
(This can happens as a result of implicit takes. See bug report 0001460.)
|
|||
|
|
|||
|
(b) The "immediately undo rule" has a new response (F) which reports that
|
|||
|
the interpreter's UNDO capacity has been exhausted. (See bug 0001689.)
|
|||
|
|
|||
|
(c) The following existing responses in existing rules have been made
|
|||
|
adaptive (see bug report 0001715). Old and new definitions are as follows -
|
|||
|
```
|
|||
|
basic visibility rule response (A)
|
|||
|
"It is pitch dark, and you can't see a thing."
|
|||
|
"[It] [are] pitch dark, and [we] [can't see] a thing."
|
|||
|
|
|||
|
block climbing rule response (A)
|
|||
|
"I don't think much is to be achieved by that."
|
|||
|
"Little [are] to be achieved by that."
|
|||
|
|
|||
|
parser nothing error internal rule response (B)
|
|||
|
"There are none at all available!"
|
|||
|
"[There] [adapt the verb are from the third person plural] none
|
|||
|
at all available!"
|
|||
|
```
|
|||
|
(d) The "announce items from multiple object lists rule" now has a new
|
|||
|
response (A), which is responsible for the traditional format of the text
|
|||
|
dividing up replies relating to different objects (see bug report 0001762).
|
|||
|
This has the value
|
|||
|
```
|
|||
|
"[current item from the multiple object list]: [run paragraph on]"
|
|||
|
```
|
|||
|
and is responsible for e.g. "yellow marble: " and "red marble: " in -
|
|||
|
```
|
|||
|
yellow marble: Taken.
|
|||
|
red marble: Taken.
|
|||
|
```
|
|||
|
Being a response, it's now customisable. For example,
|
|||
|
```
|
|||
|
The announce items from multiple object lists rule response (A) is "[current
|
|||
|
action]: [run paragraph on]".
|
|||
|
```
|
|||
|
leads to
|
|||
|
```
|
|||
|
taking the yellow marble: Taken.
|
|||
|
taking the red marble: Taken.
|
|||
|
```
|
|||
|
* The implementation of integer square root and cube root has been improved,
|
|||
|
so that Glulx's floating-point operations are used if available. This is
|
|||
|
faster and normally more accurate. (See bug report 0001547.)
|
|||
|
|
|||
|
* When releasing with an existing story file, this file can now be named:
|
|||
|
```
|
|||
|
Release along with an existing story file called "Zork1_sg.z5".
|
|||
|
```
|
|||
|
(Previously it had to be "Story.z8".)
|
|||
|
|
|||
|
* A clarification: a list is sayable if and only if its contents are sayable.
|
|||
|
In previous builds lists were always sayable, but would produce meaningless
|
|||
|
output if the contents weren't sayable (for example, for a list of topics).
|
|||
|
|
|||
|
* A clarification: creating kinds of direction is not allowed, and it now
|
|||
|
produces a problem message rather than failing more obscurely. (See bug
|
|||
|
0001588.)
|
|||
|
|
|||
|
* A clarification: in past builds the documentation said that literal patterns
|
|||
|
could contain up to 4 parts; internally, the limit was 16, but would not
|
|||
|
always work correctly for high values; the limit is now set at 8.
|
|||
|
|
|||
|
* The "phrase" token works differently. This was undocumented and unsupported,
|
|||
|
and was to have been removed entirely in this build; but the extension
|
|||
|
"Hypothetical Questions by Jesse McGrew" turned out to use it regardless
|
|||
|
of its unofficial status, and the popular "Consolidated Multiple Actions
|
|||
|
by John Clemens" made use of this in turn. We have therefore retained it,
|
|||
|
a little reluctantly. Even so, its use has been somewhat restricted: it
|
|||
|
can't accept control constructs such as if, while, repeat, otherwise, now,
|
|||
|
or say. On the other hand it expands in a more predictable fashion, without
|
|||
|
generating braces which are problematic to deal with. It nevertheless
|
|||
|
remains an unsupported feature of Inform, and there's no guarantee it
|
|||
|
won't change.
|
|||
|
|
|||
|
## The Inform application
|
|||
|
|
|||
|
### Inform for Mac OS X
|
|||
|
|
|||
|
Firstly, the Mac OS X application has made the transition to 64 bit only. This
|
|||
|
change only adversely affects users who are still running OS X 10.6.8 on 32
|
|||
|
bit hardware. Users of Inform on OS X 10.7 and above are still fully
|
|||
|
compatible (because by definition they are already running on 64 bit
|
|||
|
hardware). Similarly, users still running OS X 10.6.8 on 64 bit hardware
|
|||
|
should remain compatible. This change is made to help improve stability and
|
|||
|
smooth future development.
|
|||
|
|
|||
|
New to this version is the Testing panel (which replaces the old Skein and
|
|||
|
Transcript panels of previous versions). The Testing panel is designed to help
|
|||
|
ensure the story consistently responds as expected while the development of
|
|||
|
the source continues. The Testing panel consists of ‘knots’ - all commands
|
|||
|
that have on previous occasions been played in the story with their associated
|
|||
|
response text. Knots are displayed in a branching fashion - knots lower down
|
|||
|
the panel are later in the story than those nearer the top. Each knot’s
|
|||
|
response text can be ticked (‘blessed’) to signify that it is correct (i.e. as
|
|||
|
expected). Any deviation from the blessed text in future plays of the story
|
|||
|
will be shown on the knot with a red star, and the differences highlighted in
|
|||
|
the response text itself. Each knot has a menu of options. Knots can be
|
|||
|
dragged and dropped onto other knots to be copied or moved, even onto other
|
|||
|
projects. Undo is supported. A Help section of the Testing panel describes
|
|||
|
each element. The Play All button allows all knots to be automatically played
|
|||
|
in the story.
|
|||
|
|
|||
|
Also new to this version are Extension Projects. Extension Projects are
|
|||
|
designed to help developers of Inform extensions. An Extension Project can be
|
|||
|
created from an existing extension or from scratch. The extension’s source can
|
|||
|
be edited, its ‘examples of use' played and tested individually, or all its
|
|||
|
examples tested automatically. The extension can then be installed or exported
|
|||
|
as required.
|
|||
|
|
|||
|
A smaller improvement is that the story is now only recompiled on ‘Go!' if
|
|||
|
needed, for example because its source text has changed.
|
|||
|
|
|||
|
- Bug fixed (0000089): 'More...' overlay is not properly hidden.
|
|||
|
|
|||
|
- Bug fixed (0000378): Bug with CocoaGlk and the Automap extension.
|
|||
|
|
|||
|
- Bug fixed (0000538): Problems with Skein and Transcript panels - now rewritten
|
|||
|
and replaced with the new Testing panel.
|
|||
|
|
|||
|
- Bug fixed (0000545): Problems with Skein and Transcript panels - now rewritten
|
|||
|
and replaced with the new Testing panel.
|
|||
|
|
|||
|
- Bug fixed (0001076): Invisible characters in source text editor.
|
|||
|
|
|||
|
- Bug fixed (0001093): glk_buffer_to_title_case_uni crashes in Mac IDE
|
|||
|
interpreter.
|
|||
|
|
|||
|
- Bug fixed (0001111): CocoaGlk: The built-in interpreter becomes unresponsive
|
|||
|
after RESTART.
|
|||
|
|
|||
|
- Bug fixed (0001189): CocoaGlk crash when measuring an unhinted style.
|
|||
|
|
|||
|
- Bug fixed (0001404): Crash with VoiceOver enabled.
|
|||
|
|
|||
|
- Bug fixed (0001437): Issues with 10.6.8 resolved.
|
|||
|
|
|||
|
- Bug fixed (0001481): Issues with 10.6.8 resolved.
|
|||
|
|
|||
|
- Bug fixed (0001641): Double-clicking the "Go!" button causes an I6 error.
|
|||
|
|
|||
|
### Inform for Windows
|
|||
|
|
|||
|
The progress bar shown when compiling a story (or downloading extensions) is
|
|||
|
now rather more prominent, and shown in the middle of the window.
|
|||
|
|
|||
|
The toolbar icons have been updated to match the OS X front end. This has also
|
|||
|
involved removing the "Stop" button from the main toolbar. Instead this can
|
|||
|
now be found as a button on the "Story" tab.
|
|||
|
|
|||
|
Two bugs have been fixed: 0001418 and 0001511.
|
|||
|
|
|||
|
### Inform for Linux
|
|||
|
|
|||
|
The GUI code is no longer hosted on SourceForge. The place to go is now GitHub
|
|||
|
(https://github.com/ptomato/gnome-inform7). The location for official
|
|||
|
downloads — the Inform website — has not changed.
|
|||
|
|
|||
|
Inform on Linux can be used in with a GUI in French and Spanish, following a
|
|||
|
bug fix. Those wishing to help translate the GUI into other languages can now
|
|||
|
visit Transifex (https://www.transifex.com/ptomato/gnome-inform7/).
|
|||
|
|
|||
|
Packaging issues fixed; thanks to Vincent Petry and Bart Massey for
|
|||
|
contributing these fixes.
|
|||
|
|
|||
|
Trying to open a nonexistent story from the recently-opened list will now
|
|||
|
remove that story from the list (0001732).
|
|||
|
|
|||
|
- Bug fixed (0001612) whereby the Public Library had stopped working.
|
|||
|
|
|||
|
- Bug fixed (0001446) whereby extensions marked "for Glulx only" were
|
|||
|
installed incorrectly when downloaded from the Public Library.
|
|||
|
|
|||
|
- Bug fixed (0001497) whereby code pasted into the story caused extra
|
|||
|
indentation to be inserted.
|
|||
|
|
|||
|
- Bug fixed (0001757) whereby some Inform 6 code was highlighted incorrectly.
|
|||
|
|
|||
|
- The correct version of Glulx Text Effects is included with this release
|
|||
|
(0001447).
|
|||
|
|
|||
|
- A few bugs fixed that caused crashes in certain circumstances: 0001286,
|
|||
|
0001406.
|
|||
|
|
|||
|
## Maintenance
|
|||
|
|
|||
|
### Core Inform maintenance
|
|||
|
|
|||
|
As ever, a number of cosmetic bugs have been fixed, which aren't worth
|
|||
|
itemising here in any detail: 0001287, 0001398, 0001400, 0001412, 0001442,
|
|||
|
0001445, 0001453, 0001454, 0001455, 0001465, 0001466, 0001471, 0001477,
|
|||
|
0001478, 0001479, 0001480, 0001504, 0001535, 0001543, 0001544, 0001546,
|
|||
|
0001551, 0001554, 0001556, 0001557, 0001579, 0001581, 0001598, 0001605,
|
|||
|
0001608, 0001615, 0001616, 0001621, 0001627, 0001628, 0001632, 0001638,
|
|||
|
0001640, 0001647, 0001650, 0001655, 0001656, 0001659, 0001668, 0001669,
|
|||
|
0001677, 0001678, 0001697, 0001718, 0001726, 0001727, 0001728, 0001729,
|
|||
|
0001737, 0001738, 0001739, 0001740, 0001743, 0001758, 0001769, 0001771,
|
|||
|
0001773, 0001774, 0001780, 0001783, 0001786, 0001790, 0001795, 0001798, 0001800.
|
|||
|
|
|||
|
#### Source text and punctuation
|
|||
|
|
|||
|
- Bug fixed (0001520) whereby a source text opening with a colon would throw
|
|||
|
an internal error rather than a problem message.
|
|||
|
|
|||
|
- Problem messages added (see 0001521) to catch various punctuation accidents:
|
|||
|
colons at ends of paragraphs or sentences, and semicolons at ends of sentences
|
|||
|
or following colons or full stops.
|
|||
|
|
|||
|
- Bugs fixed (0001523, 0001529) whereby instances and rules whose names included
|
|||
|
brackets would sometimes throw internal errors rather than problem messages.
|
|||
|
|
|||
|
- Bug fixed (0001797) whereby a plural consisting entirely of a bracketed text,
|
|||
|
such as "The plural of wug is (nothing).", would throw an internal error rather
|
|||
|
than a problem message.
|
|||
|
|
|||
|
#### Extensions
|
|||
|
|
|||
|
- Bug fixed (0001537) whereby overlong extension or author names in Include
|
|||
|
sentences would cause Inform to issue a problem message (correctly) and then
|
|||
|
end in exit code 2 or 11 rather than 1.
|
|||
|
|
|||
|
#### Assertions and creations
|
|||
|
|
|||
|
- Bug fixed (0001610, 0001617) whereby source texts making very repeated use of
|
|||
|
creation sentences would crash (e.g., at least 117030 copies of the sentence
|
|||
|
"Foo is a room.").
|
|||
|
|
|||
|
- Bug fixed (0001588) whereby attempts to create nameless instances of subkinds
|
|||
|
of "direction" would crash Inform by repeating the same problem message
|
|||
|
until the stack ran out.
|
|||
|
|
|||
|
- Bug fixed (0001600) whereby creating objects with very long names would lead
|
|||
|
to unexpected problem messages about quotation marks.
|
|||
|
|
|||
|
- Bug fixed (0001571) whereby constants left undefined would sometimes lead
|
|||
|
to I6 errors rather than problem messages.
|
|||
|
|
|||
|
- Bug fixed (0001572) whereby constants defined indirectly in terms of themselves
|
|||
|
would throw an internal error rather than producing a clear problem message.
|
|||
|
|
|||
|
- Bug fixed (0001539) whereby names containing long I6 inclusions (which is
|
|||
|
a very odd thing to try to do) would sometimes lead to internal errors.
|
|||
|
|
|||
|
- Bug fixed (0001411, 0001532, 0001686) whereby a sentence using a relative
|
|||
|
clause to equate things would in some cases (e.g. "Zog is a person that is
|
|||
|
false.") produce an internal error.
|
|||
|
|
|||
|
- Bug fixed (0001643) whereby changing the meaning of the verb "to be", not
|
|||
|
perhaps the wisest course in any event, would fail to produce the problem
|
|||
|
message for inconsistent verb definitions.
|
|||
|
|
|||
|
- Bug fixed (0001558) whereby "There is an object." was rejected, rather than
|
|||
|
doing something not very useful (creating a thing called "thing" and placing
|
|||
|
it nowhere) as it should.
|
|||
|
|
|||
|
- Bug fixed (0001587) whereby assemblies which create qualified common nouns
|
|||
|
would sometimes produce a bogus problem message about circular kind
|
|||
|
definitions.
|
|||
|
|
|||
|
- Bug fixed (0001662) whereby adjective definitions using object names in their
|
|||
|
domains could under some circumstances produce a "cannot establish position P"
|
|||
|
internal error.
|
|||
|
|
|||
|
- Bug fixed (0001667) whereby a sentence creating something "(called the)" or
|
|||
|
"(called a)" would produce an internal error not a problem message.
|
|||
|
|
|||
|
- Bug fixed (0001672) whereby a nonsensical assertion like "Edible has bar"
|
|||
|
could crash Inform rather than produce a problem message.
|
|||
|
|
|||
|
- Bug fixed (0001675) whereby a redeclaration of, say, a scene as a variable
|
|||
|
could sometimes cause an internal error not a problem message.
|
|||
|
|
|||
|
- Bug fixed (0001658) whereby assertions about map directions, which are
|
|||
|
vague about the origin, could throw an internal error if the subject of
|
|||
|
discussion had changed to something which wasn't an object (e.g. by
|
|||
|
creating a new kind).
|
|||
|
|
|||
|
- Bug fixed (0001693) whereby assertions about map directions which give
|
|||
|
the destination as a value other than an object would (usually) be ignored
|
|||
|
rather than throwing a problem message.
|
|||
|
|
|||
|
- Bug fixed (0001683) whereby the map might come out with confused connections
|
|||
|
if directions were declared in an unusual order, mixed in with sentences
|
|||
|
making map connections using them.
|
|||
|
|
|||
|
- Bug fixed (0001691) whereby some sentences creating things would be allowed
|
|||
|
even though they were said to be never or seldom true: for example, "In the
|
|||
|
Dining Room is never a door."
|
|||
|
|
|||
|
- Bug fixed (0001580) whereby bare existential sentences with multiple objects,
|
|||
|
such as "There are X and Y", giving no relationships between X, Y and anything
|
|||
|
else, would result in nothing being created.
|
|||
|
|
|||
|
- Bug fixed (0001593) whereby implications whose premiss is a negated adjective
|
|||
|
would sometimes have their sense reversed: e.g. "Something not lit is usually
|
|||
|
edible" would be read as if it said "Something lit is usually edible".
|
|||
|
|
|||
|
- Bug fixed (0001685) whereby assertions in the form "Home contains X with P.",
|
|||
|
where P is a property, would sometimes have P ignored.
|
|||
|
|
|||
|
- Bug fixed (0001456) whereby adjectives could be defined over topics, but with
|
|||
|
unfortunate consequences. There's now a problem to defend against this.
|
|||
|
|
|||
|
#### Model world
|
|||
|
|
|||
|
- Bug fixed (0001560) whereby creating 10000 or more objects in a single story
|
|||
|
would result in a "far too many relatees" error. There is now no upper limit,
|
|||
|
except of course the boundary between sanity and madness.
|
|||
|
|
|||
|
- Bug fixed (0001665) whereby creating infinitely large assemblies of things
|
|||
|
connected to other things would pause for a very long time after issuing the
|
|||
|
problem message. Technically not a hang, but not a good use of our limited
|
|||
|
time on this Earth either.
|
|||
|
|
|||
|
- Bug fixed (0001670) whereby implicit contradictions in one-to-various or
|
|||
|
various-to-one relationships caused by assembly might not result in problem
|
|||
|
messages being issued.
|
|||
|
|
|||
|
- Bug fixed (0001671) whereby recursive assemblies of non-object instances
|
|||
|
would sometimes fail to recurse as they should, thus halting early. (In
|
|||
|
practice this would mean that circular assemblies of this kind wouldn't
|
|||
|
result in problem messages.)
|
|||
|
|
|||
|
- Bug fixed - or really, convention changed (0001586) - so that if a room
|
|||
|
is made using "X is D of Y", where D is a direction with no reverse, then
|
|||
|
X is assumed likely to be a room in the absence of other evidence. Previously
|
|||
|
this happened only if D had a reverse. (This was because the convention was
|
|||
|
that assumptions were made only about the destination Y: when D had a
|
|||
|
reverse direction, un-D, the above sentence implied also "Y is un-D of X",
|
|||
|
and so X was also a destination.)
|
|||
|
|
|||
|
- Bug fixed (0001639) whereby timed events occurring close to midnight would
|
|||
|
sometimes never arrive if the clock had been altered to jump from before
|
|||
|
them to after midnight between turns, e.g., by replacing the advance time
|
|||
|
rule.
|
|||
|
|
|||
|
- Bug fixed (0001597) whereby putting a region initially inside a room was
|
|||
|
being allowed - it should of course produce a problem message, and now does.
|
|||
|
|
|||
|
- A problem message has been added (see 0001687) to catch the inevitably
|
|||
|
disastrous consequences of making "container" a kind of "supporter" or vice
|
|||
|
versa; similarly (0001692) for making "door" a kind of "backdrop" or vice
|
|||
|
versa.
|
|||
|
|
|||
|
- Bug fixed (0001607) whereby a proper-named person would, if his/her printed
|
|||
|
name were changed at run-time, sometimes be given the capitalised form of
|
|||
|
the original name in some responses.
|
|||
|
|
|||
|
- Bug fixed (0001603) whereby an item marked "undescribed" would nevertheless
|
|||
|
be described if it both provided an initial appearance text and was found
|
|||
|
on a supporter. (See the "initial appearance on supporters rule".)
|
|||
|
|
|||
|
- Bug fixed (0001493) whereby an item hidden through the use of the "deciding
|
|||
|
the concealed possessions of" activity would nevertheless be mentioned
|
|||
|
in the bracketed part of a list of objects, as in, "You can see an aquarium
|
|||
|
(in which are some pebbles and a goldfish) here.": in previous builds the
|
|||
|
pebbles would have been included even if the activity had said otherwise.
|
|||
|
|
|||
|
- Run-time problem added (0001463) for testing the adjacency relation with
|
|||
|
regions rather than rooms. (Previously this simply gave unhelpful answers.)
|
|||
|
|
|||
|
#### Properties
|
|||
|
|
|||
|
- Bug fixed (0001528) whereby "of" used with an either-or property would sometimes
|
|||
|
be rejected with internal errors rather than problem messages.
|
|||
|
|
|||
|
- Bug fixed (0001538) whereby adjective names containing brackets or quotes were
|
|||
|
rejected with internal errors rather than problem messages.
|
|||
|
|
|||
|
- Bug fixed (0001524) whereby properties with very long names might crash Inform
|
|||
|
on declaration.
|
|||
|
|
|||
|
- Bug fixed (0001540) whereby absurdly long property names caused internal
|
|||
|
errors not problems.
|
|||
|
|
|||
|
- Bug fixed (0001772) whereby attempts to assign by something like "now V is P",
|
|||
|
where V is a variable of kind K and P is a property holding K, now produce
|
|||
|
problem messages rather than failing to compile through I6.
|
|||
|
|
|||
|
- Bug fixed (0001564) whereby a verb which means a property would cause
|
|||
|
run-time problems when tested or asserted with "now", if the owner of the
|
|||
|
property was something other than an object.
|
|||
|
|
|||
|
- Bug fixed (0001530) whereby a nonsensical property value could be given in
|
|||
|
a property list and it would be ignored rather than reported.
|
|||
|
|
|||
|
- Bugs fixed (0001530, 0001657) whereby a property list giving a value which
|
|||
|
involved "with" might lead to an internal error.
|
|||
|
|
|||
|
- Bug fixed (0001620) whereby giving a nameless property to a single instance of
|
|||
|
a non-object kind such as "scene" or "narrative viewpoint" would lead to an
|
|||
|
internal error. (It's legal to do this, and now works.)
|
|||
|
|
|||
|
- Bug fixed (0001673) whereby giving a condition to something whose name
|
|||
|
contained the word "from" could lead to an internal error.
|
|||
|
|
|||
|
- Bug fixed (0001652) whereby a property list attached to something which can't
|
|||
|
have properties could in some cases lead to an internal error not a problem
|
|||
|
message.
|
|||
|
|
|||
|
#### Relations
|
|||
|
|
|||
|
- Bug fixed (0001540) whereby absurdly long relation names caused internal
|
|||
|
errors not problems.
|
|||
|
|
|||
|
- Bug fixed (0001552) whereby some forms of implicit reference to
|
|||
|
relationships such as "equality" could cause an internal error.
|
|||
|
|
|||
|
- Bug fixed (0001676) whereby trying to use a relation's bare name as a
|
|||
|
description of things in a list would lead to an internal error rather
|
|||
|
than a problem message.
|
|||
|
|
|||
|
- Bug fixed (0001583) whereby typechecking of the universal relation would
|
|||
|
sometimes give unexpected results when applied to other unusual relations
|
|||
|
(such as provision).
|
|||
|
|
|||
|
- Bug fixed (0001583) whereby the provision relation can now be tested a little
|
|||
|
more freely with properties identified by variable.
|
|||
|
|
|||
|
- Bug fixed (0001550) whereby some indirect uses of some built-in relations
|
|||
|
could produce meaningless results; they now produce a run-time problem.
|
|||
|
|
|||
|
- Bug fixed (0001553) whereby various-to-one relations cannot always relate 0
|
|||
|
to something, or other values internally stored as 0 at run-time.
|
|||
|
|
|||
|
#### Actions
|
|||
|
|
|||
|
- Bug fixed (0001525) whereby deficiencies in action descriptions assigned to
|
|||
|
named behaviours would sometimes be reported at the wrong line of the source.
|
|||
|
|
|||
|
- Bug fixed (0001651) whereby a description of actions consisting only of an
|
|||
|
article would throw an internal error not a problem message.
|
|||
|
|
|||
|
- Bug fixed (0001660) whereby certain very malformed descriptions of actions
|
|||
|
would throw an internal error not a problem message.
|
|||
|
|
|||
|
- Bug fixed (0001496) whereby actions written as constants, for example in
|
|||
|
entries in a table, and which contained arbitrary text topics, would
|
|||
|
sometimes have those text topics lost when tried at run-time.
|
|||
|
|
|||
|
- Bug fixed (0001469) whereby Inform would sometimes wrongly decide which form
|
|||
|
of asking was intended (asking for, or about?) in a phrase like "asking or
|
|||
|
telling Bob about...".
|
|||
|
|
|||
|
- Bug fixed (0001789) whereby Inform would guess past participles of action
|
|||
|
names wrongly in the case of present participles like "playing", "slaying",
|
|||
|
"preying" or "toying", where the vowel A, E or I occurs before YING. These
|
|||
|
now correctly produce "played", "slayed", "preyed" and "toyed".
|
|||
|
|
|||
|
#### Rules and rulebooks
|
|||
|
|
|||
|
- Bug fixed (0001527) whereby rulebook variables declared with nonsensical kinds
|
|||
|
would produce an internal error not a problem message.
|
|||
|
|
|||
|
- Bug fixed (0001629) whereby a rule with "in... while..." clauses might lead
|
|||
|
to an internal error not a problem message if not understood.
|
|||
|
|
|||
|
- Bug fixed (0001666) whereby a timed event rule whose name consisted only of
|
|||
|
an article such as "the" or "a" would cause an internal error.
|
|||
|
|
|||
|
- Bug fixed (0001591) whereby a rule with a "during..." clause describing the
|
|||
|
scenes to which it applied would not have this scene description properly
|
|||
|
checked, so that nonsensical clauses like "during three scenes" or "during
|
|||
|
a scene which is in the paper bag" would be accepted but then either throw
|
|||
|
I6 errors or fail at run-time.
|
|||
|
|
|||
|
- Bug fixed (0001541) whereby rulebooks could be declared with indefinite
|
|||
|
kinds such as "value based rulebook". There's now a problem message.
|
|||
|
|
|||
|
- Bug fixed (0001642) whereby rules would sometimes be allowed to "substitute
|
|||
|
for" other rules with incompatible kinds.
|
|||
|
|
|||
|
- Bug fixed (0001470) whereby rules based on actions whose actor's name
|
|||
|
included a participle (say, "tough-looking coach") would sometimes be misread.
|
|||
|
|
|||
|
- Bug fixed (0001508) whereby the syntax for declaring first/last rules for
|
|||
|
rulebooks with names beginning with "for" could be slightly erratic.
|
|||
|
|
|||
|
- Bug fixed (0001748) whereby rulebooks couldn't produce something referred
|
|||
|
to using an indefinite article, e.g., "an object-based rulebook producing
|
|||
|
a list of texts" was being refused because of the "a".
|
|||
|
|
|||
|
#### Lists
|
|||
|
|
|||
|
- Bug fixed (0001618, 0001619) whereby a long list of constant action names
|
|||
|
could slow Inform's parser down to a crawl, or in extreme cases cause Inform
|
|||
|
to halt as having allocated too much memory.
|
|||
|
|
|||
|
- Bug fixed (0001723) whereby an attempt at run-time to resize a list to a
|
|||
|
negative size would print a brief error into the transcript, but not throw
|
|||
|
a formal run-time problem message.
|
|||
|
|
|||
|
- Bug fixed (0001503) whereby, under unusual circumstances, it's possible for
|
|||
|
removal of an item from a list to lead, some time later, to memory
|
|||
|
allocation or other heap-related errors.
|
|||
|
|
|||
|
- Bug fixed (0001741) whereby lists of constant stored actions would sometimes
|
|||
|
not be allowed, with the actions being rejected as non-constant.
|
|||
|
|
|||
|
#### Tables
|
|||
|
|
|||
|
- Bug fixed (0001595) whereby including a large number of tables, with some
|
|||
|
of them nameless, would sometimes cause I6 errors due to I7 accidentally
|
|||
|
using the same I6 identifier twice.
|
|||
|
|
|||
|
- Bug fixed (0001464) whereby a table entry holding an action which used a
|
|||
|
variable parameter somewhere would be accepted by I7 but then lead to I6
|
|||
|
errors; it now produces a problem message.
|
|||
|
|
|||
|
- Bug fixed (0001519) whereby trying to create a value defined by a table
|
|||
|
outside of that table would throw a problem message if it happened before
|
|||
|
the table in the source, but not if it happened after.
|
|||
|
|
|||
|
- Bug fixed (0001542) whereby amending a table used to define things would
|
|||
|
sometimes produce the amended property values, sometimes the old ones.
|
|||
|
This is now ruled illegal, and there's a problem message accordingly.
|
|||
|
|
|||
|
- Bug fixed (0001664) whereby a failed table amendment might produce an
|
|||
|
internal error not a problem.
|
|||
|
|
|||
|
- Bug fixed (0001653, 0001654) whereby a duplicated column name in a multiple
|
|||
|
table continuation might produce an apparent hang not a problem.
|
|||
|
|
|||
|
- Bug fixed (0001555) whereby sorting a table in order of a column holding
|
|||
|
real numbers would sort in order of increasing positive reals, then of
|
|||
|
decreasing negative ones, rather than in the obvious numerical order.
|
|||
|
|
|||
|
- Bug fixed (0001706) whereby names of phrases used as constants in table
|
|||
|
cells would sometimes result in the kind of the table column being inferred
|
|||
|
too vaguely (as "phrase value -> value"), rather than using their actual
|
|||
|
kinds, so that it would then be difficult to use the column for anything
|
|||
|
without throwing kind-checking problems.
|
|||
|
|
|||
|
#### Scenes
|
|||
|
|
|||
|
- Bug fixed (0001711) whereby a sentence like "Scene A ends when Scene B ends
|
|||
|
interestingly" occurring before the declaration of Scene B's interesting end
|
|||
|
would throw a problem message saying the ending in question was unknown.
|
|||
|
|
|||
|
#### Kinds and typechecking
|
|||
|
|
|||
|
- Bug fixed (0001601) whereby a kind with a very long name would cause a
|
|||
|
crash once either a notation or some instances were created for it.
|
|||
|
|
|||
|
- Problem messages improved (0001575) in being clearer about names not
|
|||
|
yet defined.
|
|||
|
|
|||
|
- Bug fixed (0001509, 0001778) to do with matching a list of K against a list
|
|||
|
of L when L is a kind of K.
|
|||
|
|
|||
|
- Bug fixed (0001495, 0001425, 0001448) whereby Inform would allow a text value
|
|||
|
to be assigned to a topic variable, but the result would be an I6 error about
|
|||
|
a nonexistent routine called TEXT_TY_to_UNDERSTANDING_TY, or in some cases
|
|||
|
a Glulx virtual machine error. Such assignments aren't legal, and there's now
|
|||
|
a problem message for it.
|
|||
|
|
|||
|
- Bug fixed (0001648) whereby long expressions of what look arithmetic but
|
|||
|
don't in fact contain meaningful terms would cause Inform to run very slowly,
|
|||
|
or eventually run out of memory, rather than produce a problem message
|
|||
|
quickly.
|
|||
|
|
|||
|
- Bug fixed (0001570) whereby adjective Definitions could define over kinds
|
|||
|
of kinds such as "sayable value", leading to problems later since this
|
|||
|
isn't type-safe. There's now a problem message.
|
|||
|
|
|||
|
#### Phrases and functional programming
|
|||
|
|
|||
|
- A local variable can't have the same name as a non-object kind. This was
|
|||
|
previously only sometimes enforced, due to a bug: it's now always enforced.
|
|||
|
|
|||
|
- Bug fixed (0001526) whereby a phrase token containing a quantifier, such
|
|||
|
as "N - three numbers", would produce an internal error not a problem message.
|
|||
|
|
|||
|
- Bug fixed (0001576) whereby a phrase with more than 10 tokens in its
|
|||
|
definition could crash the compiler.
|
|||
|
|
|||
|
- Bug fixed (0001567) whereby the functions with mathematical names (such as
|
|||
|
"abs function") could not be used as constants, because a mysterious problem
|
|||
|
message would appear claiming that their definitions in the Standard Rules
|
|||
|
were unrecognised.
|
|||
|
|
|||
|
- Bug fixed (0001613) to do with generic programming and the interpretation
|
|||
|
of kind variables when a phrase is used as a value which itself involves
|
|||
|
those variables: see the bug report for more.
|
|||
|
|
|||
|
- Bug fixed (0001533) whereby Inform would fail to recover after a problem
|
|||
|
message involving a function kind declared with codomain equal to an
|
|||
|
undeclared kind variable, and would issue an internal error as well.
|
|||
|
|
|||
|
- Bug fixed (0001674) whereby an implicitly circular adjective definition
|
|||
|
such as "Definition: a big number is big if it is 123." would crash
|
|||
|
Inform rather than produce a problem message.
|
|||
|
|
|||
|
- Bug fixed (0001645) whereby duplicated cases in an "if ... is: --" switch
|
|||
|
would be allowed without warning. (They now cause a problem message,
|
|||
|
since they can never be useful.)
|
|||
|
|
|||
|
- Bug fixed (0001646) whereby named constants couldn't be used as cases
|
|||
|
in an "if ... is: --" switch.
|
|||
|
|
|||
|
- Bug fixed (0001583) whereby conditions using the present perfect or past
|
|||
|
perfect forms of some verbs would not be understood - for example, "X had
|
|||
|
provided Y".
|
|||
|
|
|||
|
- Bug fixed (0001514) whereby "value", or other kinds of kinds, could be
|
|||
|
accepted where definite kinds were expected, resulting in undefined
|
|||
|
behaviour at run-time.
|
|||
|
|
|||
|
#### Equations, units and arithmetic
|
|||
|
|
|||
|
- Bug fixed (0001417) whereby arithmetic producing a dimensionless result
|
|||
|
after calculating with dimensioned operands would sometimes wrongly use
|
|||
|
integer rather than real arithmetic, so that, for example, 1500m divided
|
|||
|
by 10m would print out as 1.12552 × 10^9 not 150.0m.
|
|||
|
|
|||
|
- Bug fixed (0001569) whereby Inform would sometimes crash after issuing a
|
|||
|
problem message in the event of dimensionally impossible arithmetic in the
|
|||
|
optional parts of an action description.
|
|||
|
|
|||
|
- Bug fixed (0001625) whereby more part names could be given than there were
|
|||
|
parts to name.
|
|||
|
|
|||
|
- Bug fixed (0001625) whereby multiple part names might be slow to parse.
|
|||
|
|
|||
|
- Bug fixed (0001625) whereby cumulatively over-long part names would be
|
|||
|
rejected with a misleadingly worded problem message.
|
|||
|
|
|||
|
- Bug fixed (0001625) whereby multiple part names could be identical. These
|
|||
|
now produce problem messages.
|
|||
|
|
|||
|
- Bug fixed (0001561) whereby attempting to scale units by non-positive
|
|||
|
amounts produced an internal error not a problem message.
|
|||
|
|
|||
|
- Bug fixed (0001589) whereby an equation defining three or more variables
|
|||
|
as having the same kind (e.g. "where a, b, and c are numbers") might lead
|
|||
|
to internal errors.
|
|||
|
|
|||
|
- Bug fixed (0001562) whereby giving a notation to specify an arithmetic kind
|
|||
|
of value, with example value as an integer but scale factor a real number,
|
|||
|
would silently ignore the scale factor. There's now a problem message
|
|||
|
saying how to fix this to get the intended effect.
|
|||
|
|
|||
|
- Bug fixed (0001649) whereby an equation with no name and no number would
|
|||
|
throw an internal error, not a problem message.
|
|||
|
|
|||
|
- Bug fixed (0001644) whereby incrementing a variable containing an
|
|||
|
unusual arithmetic kind of value could in some cases cause an internal
|
|||
|
error.
|
|||
|
|
|||
|
- Bug fixed (0001573, 0001574) whereby equations whose solution would require
|
|||
|
fourth or higher-degree roots would produce a spurious problem message about
|
|||
|
that power not being a constant number, or which would calculate out with
|
|||
|
the wrong answer by mixing real and integer arithmetic.
|
|||
|
|
|||
|
- Bug fixed (0001582) whereby equations working out I^R, where I is a number
|
|||
|
and R a real number, would sometimes assign this to a number variable
|
|||
|
without converting it back from real arithmetic.
|
|||
|
|
|||
|
#### Understanding
|
|||
|
|
|||
|
- Bug fixed (0001414) whereby "[something related by R]" would, for a few
|
|||
|
exotic relations R such as "provision", throw an internal error. There's
|
|||
|
now a problem message.
|
|||
|
|
|||
|
- Bug fixed (0001451) whereby AGAIN on the first turn would not produce a
|
|||
|
sensible reply on Glulx, though it would on Z.
|
|||
|
|
|||
|
- Bug fixed (0001500) whereby the low-level I6 routine UnknownVerb would be
|
|||
|
called only if the actor in a command was the player. (This didn't affect
|
|||
|
regular English-language stories, where I7 doesn't use UnknownVerb.)
|
|||
|
|
|||
|
- Bug fixed (0001604) whereby malformed instructions for people other than
|
|||
|
the player would sometimes result in no response at all.
|
|||
|
|
|||
|
- Bug fixed (0001661) whereby an "[any any thing]" token, with unexpected
|
|||
|
extra quantification, would give an internal error not a problem message.
|
|||
|
|
|||
|
- Bug fixed (0001694) whereby the "after reading a command" rulebook was run
|
|||
|
after some disambiguation questions are asked and answered, but not others.
|
|||
|
It should now consistently be run.
|
|||
|
|
|||
|
- Bug fixed (0001475) whereby the use of a command involving "[text]", followed
|
|||
|
by THEN and another command in the same piece of typing, would cause that
|
|||
|
text to become a row of spaces.
|
|||
|
|
|||
|
- Bug fixed (0001568) whereby the use of the "if the player consents" phrase,
|
|||
|
which asks for a yes/no answer, would invalidate the contents of the
|
|||
|
"player's command" variable.
|
|||
|
|
|||
|
#### Glulx issues, file I/O, figures, sounds
|
|||
|
|
|||
|
- The implementation of the Memcpy utility has been made faster on Glulx.
|
|||
|
|
|||
|
- Bug fixed (0001429) to do with file input/output disrupting the Glulx output
|
|||
|
channel, since writing to a file would fail properly to reset the channel
|
|||
|
when finished. (Thanks to Dannii Willis for the patch to fix this.)
|
|||
|
|
|||
|
- Bug fixed (0001506 but see also 0001502) to do with sound channels not being
|
|||
|
properly identified after a restore or restart.
|
|||
|
|
|||
|
#### I6 template layer and inclusions
|
|||
|
|
|||
|
- Bug fixed (0001578) whereby seemingly inconsistent combinations of use
|
|||
|
options ("Use scoring and no scoring") could lead to I6 errors.
|
|||
|
|
|||
|
- Bug fixed (0001631) whereby I6 inclusions of more than about 600000
|
|||
|
characters at a time would produce internal errors rather than problems.
|
|||
|
|
|||
|
- Bug fixed (0001759) whereby use in an I6 inclusion of "ÿ", the largely
|
|||
|
mythical letter needed only by the band Queensrÿche and its devotees,
|
|||
|
would result in a spurious I6 error ("MAX_QTEXT_SIZE exceeded").
|
|||
|
|
|||
|
- Problem message added (0001535) to do with using I6 inline definitions for
|
|||
|
named functions without I6 functions backing them up.
|
|||
|
|
|||
|
- Problem message added (0001594) for overlong I6 definitions of adjectives
|
|||
|
and the like.
|
|||
|
|
|||
|
- Problem message added (0001596) for broken attempts at template hacking.
|
|||
|
|
|||
|
#### Text, spacing and printing
|
|||
|
|
|||
|
- Bug fixed (0001397) whereby text substitutions for adapting modal verbs
|
|||
|
required the modified verb to take the third person, not the infinitive:
|
|||
|
which for regular English verbs made no difference, but meant that you
|
|||
|
had to write "[might are]" instead of "[might be]", for example.
|
|||
|
|
|||
|
- Bug fixed (0001577) whereby ridiculously nested multi-part text substitutions
|
|||
|
could crash Inform rather than produce a problem message.
|
|||
|
|
|||
|
- Bug fixed (0001599) whereby "say" statements including comma-separated lists
|
|||
|
of more than 4097 terms to be printed would lead to an internal error. There's
|
|||
|
now no limit on this: enjoy.
|
|||
|
|
|||
|
- Bug fixed (0001637) whereby assigning a text to itself could corrupt its
|
|||
|
value, e.g., writing "now T is T" where T holds text which Inform has had to
|
|||
|
store in written-out form. (This could also happen with stored actions and
|
|||
|
some other kinds of value, but was most likely seen with text.)
|
|||
|
|
|||
|
- Bug fixed (0001663) whereby attempting to display the empty text as a boxed
|
|||
|
quotation could crash Inform. (There's now a problem message instead.)
|
|||
|
|
|||
|
- Bug fixed (0001606) whereby the you-can-also-see rule would, if running
|
|||
|
in the second person perfect tense, produce "You has been able to see..."
|
|||
|
instead of "You have been able to see..."
|
|||
|
|
|||
|
#### Indexing
|
|||
|
|
|||
|
- Bug fixed (0001428) whereby the coloured folder links in the Extensions
|
|||
|
panel wouldn't work - i.e., they could be clicked on, but wouldn't show the
|
|||
|
relevant location in the file system.
|
|||
|
|
|||
|
#### Testing commands
|
|||
|
|
|||
|
- Bug fixed (0001430) whereby "Test <case> with ..." would cause I6 errors if
|
|||
|
the case name were given in quotes. There's now an explanatory problem.
|
|||
|
|
|||
|
- Bug fixed (0001491) whereby the ACTIONS command's output would produce
|
|||
|
gibberish when printing out some actions involving "[text]".
|
|||
|
|
|||
|
#### Releasing, bibliographic data, and cBlorb
|
|||
|
|
|||
|
- Bug fixed (0001413, 0001499) whereby releasing along with a named file would
|
|||
|
in some cases cause an internal error.
|
|||
|
|
|||
|
- Bug fixed (0001713) whereby releasing with an image or audio file whose
|
|||
|
filename ends in a space or full stop might, on Windows, cause its file
|
|||
|
format (e.g. JPEG versus PNG, or AIFF versus OGG) to be wrongly guessed.
|
|||
|
|
|||
|
- Bug fixed (0001494) whereby releasing with an existing story file wasn't
|
|||
|
working.
|
|||
|
|
|||
|
### Extension maintenance
|
|||
|
|
|||
|
- "Glulx Image Centering" updated to version 4, to maintain compatibility
|
|||
|
with other extensions.
|
|||
|
|
|||
|
### Examples maintenance
|
|||
|
|
|||
|
- Two new examples, "Western Art History 305" and "The Best Till Last",
|
|||
|
demonstrate the use of the multiple action processing rulebook.
|
|||
|
|
|||
|
### Interpreter maintenance
|
|||
|
|
|||
|
Parchment has been updated to 2015-09-25, fixing a bug (0001426).
|
|||
|
|
|||
|
Quixe has been updated to 2.1.2, as compared with 1.3.1 in the last two
|
|||
|
releases of Inform. This is quite a large improvement, since it takes in
|
|||
|
four successive releases of Quixe:
|
|||
|
|
|||
|
- 2.1.2 (November 22, 2015)
|
|||
|
- Added basic WAI-ARIA support to buffer windows.
|
|||
|
- Fixed a bug where setting a graphics window's color and then clearing
|
|||
|
it (in the same turn) would fail.
|
|||
|
|
|||
|
- 2.1.1 (June 13, 2015)
|
|||
|
- Restructured generated JS code for better optimization in modern
|
|||
|
browsers. (No more eval() calls!) Thanks to Alex Munroe for pointing
|
|||
|
out the problem and offering solutions. Also everyone else who
|
|||
|
joined in the JS-wonkery discussion.
|
|||
|
- Use Math.imul instead of native multiplication, so that large integer
|
|||
|
multiplies (which overflow 32 bits) are computed correctly.
|
|||
|
|
|||
|
- 2.1.0 (April 24, 2015)
|
|||
|
- Include GlkOte 2.1.0 (graphics windows; image display; mouse input).
|
|||
|
Thanks to Alex Munroe for original implementation.
|
|||
|
- Remove the #layouttestpane from all the HTML templates.
|
|||
|
- Added the ability to send transcript data to an external server.
|
|||
|
- Fixed a bug where non-ASCII characters in metadata were not properly
|
|||
|
decoded. (This could affect the <title> of the browser window.)
|
|||
|
|
|||
|
- 2.0.0 (February 12, 2015)
|
|||
|
- Switched from Prototype over to jQuery.
|
|||
|
- Switched from my old ad-hoc license to the MIT license.
|
|||
|
- Added the ability to download a saved-game file.
|
|||
|
- Increased the font size in the included CSS stylesheets.
|
|||
|
- Fixed save bug where the IFhd chunk could appear late in the file
|
|||
|
(violating the Quetzal spec). Also, a bug where odd-length chunks
|
|||
|
were not padded (violating the IFF spec).
|