mirror of
https://github.com/ganelson/inform.git
synced 2024-05-13 14:38:39 +03:00
Migrated archive of past release notes
This commit is contained in:
parent
c2916ea620
commit
fa6d9f95a5
15
README.md
15
README.md
|
@ -1,6 +1,6 @@
|
|||
# Inform 7
|
||||
|
||||
[Version](notes/versioning.md): 10.1.0-beta+6V37 'Krypton' (5 August 2022)
|
||||
[Version](notes/versioning.md): 10.1.0-beta+6V38 'Krypton' (8 August 2022)
|
||||
|
||||
## About Inform
|
||||
|
||||
|
@ -20,12 +20,13 @@ code is continuously maintained alongside it: see ★ [Inform: The Program](
|
|||
Software in this repository is [copyright Graham Nelson 2006-2022](notes/copyright.md)
|
||||
except where otherwise stated, and available under the [Artistic License 2.0](https://opensource.org/licenses/Artistic-2.0).
|
||||
|
||||
To consult... | Turn to...
|
||||
------------------------------- | -----------------------------------------
|
||||
Brief news about ongoing work | [notes/working_notes.md](notes/working_notes.md)
|
||||
Licencing and copyright policy | [notes/copyright.md](notes/copyright.md)
|
||||
Branching and versioning policy | [notes/versioning.md](notes/versioning.md)
|
||||
Language evolution policy | [https://github.com/ganelson/inform-evolution](https://github.com/ganelson/inform-evolution)
|
||||
To consult... | Turn to...
|
||||
--------------------------------- | -----------------------------------------
|
||||
Brief news about ongoing work | [notes/working_notes.md](notes/working_notes.md)
|
||||
Licencing and copyright policy | [notes/copyright.md](notes/copyright.md)
|
||||
Branching and versioning policy | [notes/versioning.md](notes/versioning.md)
|
||||
Language evolution policy | [https://github.com/ganelson/inform-evolution](https://github.com/ganelson/inform-evolution)
|
||||
Version history and release notes | [notes/version_history.md](notes/version_history.md)
|
||||
|
||||
## Repositories
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Prerelease: beta
|
||||
Build Date: 5 August 2022
|
||||
Build Number: 6V37
|
||||
Build Date: 8 August 2022
|
||||
Build Number: 6V38
|
||||
|
|
11
notes/release/1-1.md
Normal file
11
notes/release/1-1.md
Normal file
|
@ -0,0 +1,11 @@
|
|||
# Release notes for Inform v1.1 (build 3K27)
|
||||
|
||||
This release was made on 30 April 2006, before Inform was open-sourced.
|
||||
At that time 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).
|
||||
|
||||
## No release note
|
||||
|
||||
Inform uses release notes to note changes from previous releases. As v1.1
|
||||
was the first Public Beta release of Inform, it had no release note as such.
|
43
notes/release/1-2.md
Normal file
43
notes/release/1-2.md
Normal file
|
@ -0,0 +1,43 @@
|
|||
# Release notes for Inform v1.2 (build 3K56)
|
||||
|
||||
This release was made on 4 May 2006, before Inform was open-sourced.
|
||||
At that time 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).
|
||||
|
||||
## Language
|
||||
|
||||
- Changed the "tieing" action to "tying". (Inform's British author thought
|
||||
this was an American spelling, and vice versa. Sorry.) This entailed
|
||||
changes to examples Otranto, Brown, Snip, Snip Snip, and Under Contract.
|
||||
|
||||
## Documentation, examples and extensions
|
||||
|
||||
- Bug in U-Stor-It example fixed, and Disappointment Bay 12 slightly improved.
|
||||
- Tidied up documentation of Basic Screen Effects and Plurality extensions.
|
||||
|
||||
## Bug fixes
|
||||
|
||||
- Fixed the "South is a dead end with printed name "Collapsed Dead End"."
|
||||
bug causing the Undertomb example in the main text to fail to compile.
|
||||
- Fixed problem with the "Early Childhood 4" example.
|
||||
- Fixed compiler hang to do with misunderstood sentences setting the kind
|
||||
of a kind to itself.
|
||||
- Fixed internal error on "now X is P", where X is a thing and P an
|
||||
property which isn't an either/or property.
|
||||
- Fixed problems with defining a kind which includes the word "object".
|
||||
- Fixed internal error on sentences using "to have" incorrectly.
|
||||
- Fixed internal error on assertions giving inexplicit information about
|
||||
the kinds of things (asserting kind(f(x)) = y where f(x) is unknown).
|
||||
- Fixed failure to object to malformed sentences caused by misunderstanding
|
||||
of the punctuation convention about quoted text ending sentences.
|
||||
- Fixed failure to object to names of things or rooms containing literal
|
||||
double-quoted text (which then failed to compile through I6).
|
||||
- Fixed failure to object to negative assertions in the form "The P is not
|
||||
X.", where P is a property taking a value.
|
||||
|
||||
## Mac OS X app
|
||||
|
||||
- (Mac OS X only) Support for OS 10.3.9 restored.
|
||||
- (Mac OS X only) Build number now correct in Finder's Information window
|
||||
for the application file.
|
151
notes/release/1-3.md
Normal file
151
notes/release/1-3.md
Normal file
|
@ -0,0 +1,151 @@
|
|||
# Release notes for Inform v1.3 (build 3L95)
|
||||
|
||||
This release was made on 14 May 2006, before Inform was open-sourced.
|
||||
At that time 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).
|
||||
|
||||
## Language
|
||||
|
||||
- Added the implication that something locked is usually lockable. This in
|
||||
practice means that doors and containers described as being locked at
|
||||
the start of play are considered to be something which the player
|
||||
could in principle lock or unlock, given the correct key. (In the
|
||||
absence of information about that key, the player will still not be
|
||||
able to lock or unlock them, but will get a more realistic reply
|
||||
from the game in response to attempts to unlock.)
|
||||
- Added "persons" as an alternative plural of "person" (the usual one being
|
||||
"people").
|
||||
- Fixed nested comments: thus "[This [even so] is all one comment.]"
|
||||
|
||||
## Documentation, examples and extensions
|
||||
|
||||
- Various minor clarifications added to documentation, and new section 3.24
|
||||
("Directions") added.
|
||||
- As the beginnings of a process of adding reviews at the end of each chapter,
|
||||
brief notes are added to the ends of chapters 9 and 10.
|
||||
- Added two new Examples: "Feline Behavior" and "Panache".
|
||||
- Minor changes to Examples:
|
||||
- Being Prepared, Model Shop, Ballpark: added comments.
|
||||
- Crane's Leg I and Eddystone: modified because of type-checking bug.
|
||||
- U-Stor-It: fixed bug to do with cards appearing on all of the chests.
|
||||
- Fussy Table: added understanding of "chair" as a chair.
|
||||
- Yolk of Gold: rearranged rule order.
|
||||
- Fixed bug in extension Plurality by Emily Short which involved noticing the
|
||||
plurality of items mentioned by the player but not printed in the text.
|
||||
|
||||
## Problem messages
|
||||
|
||||
- Improved the "hawk is a handsaw" problem message.
|
||||
- Improved the problem messages for incorrectly specified rules.
|
||||
- Improved problem messages for "now ..." used with a condition which cannot
|
||||
be directly arranged during play, such as "now Scene IV is happening",
|
||||
and for "now ... and ...".
|
||||
- Improved problem messages for assertions where it seems possible that the
|
||||
wrong primary verb has been construed.
|
||||
- Problem message for understand followed by an incorrect action corrected
|
||||
(it was previously recommended as correct usage something which wasn't).
|
||||
- More explicit problem message for an attempt to create a "part" of a room.
|
||||
- Added run-time problem message for using the bare condition "in R" where
|
||||
R is neither a room nor a region.
|
||||
|
||||
## Bug fixes
|
||||
|
||||
- Fixed bug whereby an assertion containing three or more consecutive
|
||||
property adjectives ("a red rough square block is on the table")
|
||||
would have only the first two acted upon.
|
||||
- Fixed bug in which rules whose premiss contained an unrecognised action
|
||||
plus the explicit word "rule" would activate every turn, rather than
|
||||
produce a problem message.
|
||||
- Fixed bug to do with rules beginning "Check/report/carry out", then an
|
||||
action name including "it", then a conditional clause with "when" or
|
||||
"while".
|
||||
- Fixed bug in which using a "To say ..." phrase in the middle of a complex
|
||||
say would cause it to lose track of conditional saying, sometimes
|
||||
resulting in both "[if ...]" and "[otherwise]" parts being printed.
|
||||
- Fixed bug in previous fix for failure to object to names of things or
|
||||
rooms containing literal double-quoted text (which then failed to
|
||||
compile through I6).
|
||||
- Fixed bug to do with assigning properties to a null object when "it" is
|
||||
currently undefined.
|
||||
- Fixed bug to do with incorrect sorting of rules as between a rule
|
||||
specifying "going ... in..." and one specifying "going ... from...",
|
||||
where there are at least three such defined in a particular order.
|
||||
- Fixed bug in which run-time type-checking did not resolve which phrase
|
||||
definition to use where they differed only in properties of objects
|
||||
(for instance, distinguishing "To recite (something - closed container)"
|
||||
and "To recite (something - open container)").
|
||||
- Fixed bug which very occasionally caused a "bad check-against in run-time
|
||||
type check" internal error.
|
||||
- Fixed crash if a Table is improperly named (or not named at all), and
|
||||
added checking to enforce the rules on Table names.
|
||||
- Fixed bug confusing ordinal and cardinal numbers in assertions (so that
|
||||
"The third man is here." would be misread as if "Three men are here.").
|
||||
- Fixed bug if a region is created whose name begins with a direction or
|
||||
other indication of location ("East of Eden is a region.", say, or
|
||||
"On the Prairie is a region.").
|
||||
- Fixed crash if a room is created only by implication and with no name.
|
||||
- Fixed failure of sentences like "East of the Garden is the Gazebo." to
|
||||
establish which room is currently under discussion (the Garden): this
|
||||
meant that some source text in the documentation and website failed.
|
||||
- Fixed bug in which if pronouns would sometimes be assigned to implicitly
|
||||
created things: for instance, in "A nose is part of every person. ...
|
||||
George is a man. He wears a shirt and a pair of pants.", "he" was
|
||||
incorrectly thought to refer to George's nose rather than George.
|
||||
- Fixed bug (or arguably added feature) so that named rules can be property
|
||||
values, that is, so that a property can have "rule" as its kind of value.
|
||||
- Fixed bug in which values that vary, such as "location", were allowed
|
||||
by I7 as table entries, only to fail to compile through I6; and added
|
||||
problem message for the special case of "player".
|
||||
- Fixed bug in which initialising a value that varies to itself, or to another
|
||||
value that varies, was not reported as a problem, and fell through to
|
||||
fail in I6.
|
||||
- Fixed bug in which attempts to manipulate the properties of kinds would
|
||||
sometimes not be reported as problems, and fall through to fail in I6.
|
||||
- Fixed bug in which properties of indefinitely described objects, used as
|
||||
the subjects of verbs, failed to compile in I6.
|
||||
- Fixed bug in which, in some circumstances, the character "@" used in text
|
||||
failed to compile in I6 (making it hard to write email addresses).
|
||||
- Fixed bug in which "(called ...)" used improperly in adjective definitions
|
||||
was not reported as a problem, and fell through to I6.
|
||||
- Fixed bug in which doors described both as one- and two-sided would not be
|
||||
picked up as a problem.
|
||||
- Fixed bug in which explicitly starting the player in a container which is not
|
||||
contained in any room would fall through to an error in I6.
|
||||
- Added a very limited ability to cope with "if X has P greater than N", where
|
||||
P is a property, and fixed bug whereby uses of "to have P" resulted
|
||||
in internal errors: those which cannot be compiled now result in better
|
||||
problem messages.
|
||||
|
||||
## Mac OS X app
|
||||
|
||||
- (Mac OS X only) Added a "Prune" button to the skein, with a slider control
|
||||
for the severity of pruning required.
|
||||
- (Mac OS X only) Added a font size option in the Preferences, affecting all
|
||||
the panels simultaneously.
|
||||
- (Mac OS X only) Removed the spurious error on the extensions contents page
|
||||
about incorrect extension "Standard Rules.zip".
|
||||
|
||||
## Windows app
|
||||
|
||||
- (Windows only) If compilation fails, index pages from the previous compilation
|
||||
are kept.
|
||||
- (Windows only) Invalid characters cannot now be entered into the new project
|
||||
name field.
|
||||
- (Windows only) The File/Revert menu item has been removed, as it was
|
||||
misleading quite a few people.
|
||||
- (Windows only) Characters input with the AltGr key held down (such as ']' on
|
||||
a Spanish keyboard) can now be entered in the Source and Game panels.
|
||||
- (Windows only) Inform 6 code is coloured grey in the Source tab.
|
||||
- (Windows only) The application now works with IE7 installed.
|
||||
- (Windows only) The installer would sometimes fail to reinstall a new version
|
||||
if the old version was not uninstalled, leading to an incorrect install
|
||||
and two entries in "Add and Remove Programs". This should now be fixed.
|
||||
- (Windows only) The application should now cope if the "My Documents" path is
|
||||
something like "G:\".
|
||||
- (Windows only) Replace now works if the string being searched for is only a
|
||||
case insensitive match.
|
||||
- (Windows only) The Source tab now has the standard edit context menu available
|
||||
if you right click on it with the mouse.
|
||||
- (Windows only) Fixed mis-addressing of the blue "go to documentation"
|
||||
links, which always linked two pages after the one intended.
|
95
notes/release/1-4.md
Normal file
95
notes/release/1-4.md
Normal file
|
@ -0,0 +1,95 @@
|
|||
# Release notes for Inform v1.4 (build 3M43)
|
||||
|
||||
This release was made on 21 May 2006, before Inform was open-sourced.
|
||||
At that time 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).
|
||||
|
||||
## Language
|
||||
|
||||
- By popular demand (two people asked for this) "now X is not P" is now legal,
|
||||
where P is an either/or property: thus "now the four-poster bed is not
|
||||
scenery", for instance.
|
||||
- Extended "let" to allow "rule" as one of the kinds of value allowed.
|
||||
- Changed rules on the ' character so that it is not translated into " when it
|
||||
begins text and is immediately followed by s and a space. (This so that
|
||||
the apostrophe in "[The Kitchen]'s decor is awful." is not converted to
|
||||
a double-quote.)
|
||||
- Improved behaviour of "called", so that sentences involving relationships
|
||||
with objects which are "called" now work: for instance, "The white door
|
||||
is north of a room called the Hot and Cold Room."
|
||||
- Unexpectedly capitalised articles following "called" are now no longer read
|
||||
as articles. Thus, "South of the Passageway is a room called The Great
|
||||
Hall of Infinity." will preserve the capitalised "The" in the room's name.
|
||||
- Adjusted priorities in parsing so that table column names are considered less
|
||||
likely to be intended than kind names. (This affects works where a kind
|
||||
has its instances created by a table, since column 1 of that table will
|
||||
quite likely have the same name as the kind.)
|
||||
- When things are created by table (as in the example to do with Tour de France
|
||||
jerseys), any articles in front of their names are now recognised, just
|
||||
as if they had been created by regular sentences.
|
||||
|
||||
## Documentation, examples and extensions
|
||||
|
||||
- Fixed example "Pink or Blue" to deal correctly with one-letter inputs.
|
||||
- Added a few words of explanation to example "Crusoe" to help people find the
|
||||
bit of the action that needs replacing.
|
||||
- Twelve new Examples added, as straightforward demonstrations:
|
||||
- "Escape" - the most basic imaginable window.
|
||||
- "Down Below" - the most basic light switch.
|
||||
- "Replanting" - changing the results of trying to take an immovable object.
|
||||
- "Up and Up" - a travel description printed before moving between rooms.
|
||||
- "Neighborhood Watch" - a door lockable without a key but only on one side.
|
||||
- "Slightly Wrong" - a room whose description is unusual on the first visit.
|
||||
- "Laura" - use of a printed name and understand to get around particularly
|
||||
awkward-named objects.
|
||||
- "Tamed" - enterable containers and supporters and to explain a few details
|
||||
of when we might say something was transparent.
|
||||
- "Grace" - preventing the player from traveling to a distant location
|
||||
without a vehicle.
|
||||
- "Verbosity" - using full-length room descriptions.
|
||||
- "Infiltration" - how to change a room description on each of several visits.
|
||||
- "MRE" - various timing things, heavily commented.
|
||||
- Minor changes to examples "Finishing School" and "Lean and Hungry" to address
|
||||
the complaint that general rules were being written but only really made
|
||||
sense for specific individual NPCs.
|
||||
- Minor changes to "Garibaldi" examples to correct a terrible error (the Medlab
|
||||
being called Sickbay, in violation of the game's nominal setting).
|
||||
- Typo removed from example "Get Me to the Church on Time".
|
||||
- Correction of "Hagia Sophia" example to try exiting the chair silently.
|
||||
- Review sections added to chapters 3 and 17 of the documentation.
|
||||
|
||||
## Bug fixes
|
||||
|
||||
- Fixed crash on "Yourself is nowhere" (sic).
|
||||
- Fixed crash sometimes occurring in indexing of rulebooks attached to scenes.
|
||||
- Fixed crash (or sometimes other misbehaviour) on an over-complicated say.
|
||||
- Fixed compiler hang when complicated assemblies never end.
|
||||
- Fixed failure to check incorrect usage of 'called' in defining one-to-one
|
||||
relations which are not reciprocated.
|
||||
- Fixed failure to report improper usages of the (supposedly internal use only!)
|
||||
syntax "...an action corresponding to...".
|
||||
- Fixed failure to reject matches of vague descriptions against specific
|
||||
ones in type checking, so that (e.g.) "an open door" would be accepted
|
||||
against "(D - a door)" in a phrase definition.
|
||||
- Fixed a bug in which complicated creations of kinds sometimes ignored their
|
||||
adjectives: e.g., 'A radiant panel is a kind of backdrop which is lit.'
|
||||
would sometimes silently ignore the "lit" part.
|
||||
- Fixed a bug - well, arguably clarified an ambiguous specification - so that a
|
||||
printed name for a kind is now inherited by things (or rooms) of that kind.
|
||||
- Restored the (nowhere documented and theoretically unofficial) debugging
|
||||
command RULES to working again.
|
||||
|
||||
## Windows app
|
||||
|
||||
- (Windows only) Search highlighting in the documentation tab doesn't keep
|
||||
applying to further pages as you nagivate around.
|
||||
- (Windows only) If nothing is found when searching, a dialog appears as feedback.
|
||||
- (Windows only) Replacing text in the source tab no longer goes into an
|
||||
infinite loop if the new text contains the old text as a substring.
|
||||
- (Windows only) If the registry string value
|
||||
"HKCU\Software\David Kinder\Inform\Window\Font Name"
|
||||
is set, its value is used as the application font.
|
||||
- (Windows only) If the registry DWORD value
|
||||
"HKCU\Software\David Kinder\Inform\Window\Font Size"
|
||||
is set, its value is used as the application font point size.
|
150
notes/release/1-5.md
Normal file
150
notes/release/1-5.md
Normal file
|
@ -0,0 +1,150 @@
|
|||
# Release notes for Inform v1.5 (build 3P53)
|
||||
|
||||
This release was made on 9 June 2006, before Inform was open-sourced.
|
||||
At that time 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).
|
||||
|
||||
## Language
|
||||
|
||||
- Made a general rewrite of the type-checking machinery: the new version is
|
||||
more extensively tested than the old (and produces slightly better
|
||||
Problem messages), but otherwise there should be no perceptible change.
|
||||
- Made it possible to unset a wider range of relations with "now". For
|
||||
instance, if "loving" is a one-to-one relation, then "now Elizabeth
|
||||
does not love Darcy" is now allowed, if sad.
|
||||
- Added a new text substitution "[conditional paragraph break]".
|
||||
- New phrase option for "list the contents of...": "with extra indentation",
|
||||
which increases the left margin by 1 level of indentation - which
|
||||
simulates the way that the standard inventory listing looks.
|
||||
- References to tables can now refer to the table in question using a local
|
||||
or global variable, or a phrase to decide which table to look at.
|
||||
|
||||
## Documentation, examples and extensions
|
||||
|
||||
### Examples
|
||||
|
||||
- "The Abolition of Love" added, as a thorough exploration of all the kinds
|
||||
of relations which can be set and unset.
|
||||
- "Beachfront" added to demonstrate finding an object in a room which was
|
||||
not there before;
|
||||
- "Van Helsing" added to demonstrate a character who follows the player
|
||||
from room to room.
|
||||
- "Exit Strategy" added to demonstrate the beginning of scenes once in more
|
||||
detail, and to describe what it means when the scene change machinery
|
||||
is stuck (and how to diagnose and fix the problem).
|
||||
- "Otranto": dealt with a bug such that a rope tied to a door did not
|
||||
restrict the player's movement appropriately.
|
||||
- "Tamed": typo fixed.
|
||||
- "Up and Up": minor fix for a description assigned to the wrong object.
|
||||
- "Day One": waiting added to the selection of acceptable activities for
|
||||
which Freitag will not glare at the player.
|
||||
- "Stately Gardens": typo fixed.
|
||||
- "Sybil 1": additional comments and code to demonstrate some expanded
|
||||
forms of keyword matching.
|
||||
- "Port Royal 3": fixed a typo that was causing part of the source not to
|
||||
copy properly into the code window.
|
||||
- "Odyssey": minor syntax improvement to get rid of ugly legacy form.
|
||||
|
||||
### Extensions
|
||||
|
||||
- Basic Screen Effects (now version 2):
|
||||
modified so that local variable names are less likely ever to conflict
|
||||
with globals or other names in the author's work;
|
||||
"clear only the status line" added;
|
||||
"left alignment depth" variable added, allowing the author to print
|
||||
status elements at a different spacing than 14 spaces from the
|
||||
left edge of the screen;
|
||||
- Menus:
|
||||
added arrow and escape keys as viable means of input;
|
||||
rule names added to several rules to make modification easier;
|
||||
local variable names made less likely to conflict.
|
||||
- Plurality:
|
||||
changed "acts plural" phrase to apply to all objects, not just "things".
|
||||
- Complex Listing (now version 2):
|
||||
corrected erroneous documentation;
|
||||
added "enumerated listing" option.
|
||||
|
||||
## Problem messages
|
||||
|
||||
- Problem message added for tables defined with names which already have a
|
||||
meaning, leading to ambiguity (e.g., "Table of Three", since "three"
|
||||
is a number), with specific checking for clashes between table and kind
|
||||
named (e.g. "Table of Rooms").
|
||||
- Problem message added for use of 'either' on a list of 3 or more possibilities.
|
||||
- Problem message added where "number of ..." or "total ...", etc., are used
|
||||
with a determiner which makes this nonsensical ("number of at least three
|
||||
rooms", etc.).
|
||||
- Problem message added for contradictory redefinition of global variables.
|
||||
(Non-contradictory redefinitions are superfluous but legal.)
|
||||
- Problem message added for incorrect uses of "with", and an explanation
|
||||
supplied (where previously an internal error would sometimes occur).
|
||||
- Fixed bug whereby '(called ...)' used incorrectly in a scene beginning
|
||||
or ending condition could cause an internal error, and added a
|
||||
suitable Problem message.
|
||||
|
||||
## Bug fixes
|
||||
|
||||
- Fixed bug whereby certain names consisting only of an article would lead
|
||||
to an internal error (thus producing the record-holder for shortest
|
||||
source text breaking I7: "A is a room."); and similarly for a name
|
||||
which includes parentheses "(" or ")", also not allowed.
|
||||
- Fixed bug: it's now possible to release a game with a website and cover
|
||||
art in PNG format, where previously the website assumed JPGs were
|
||||
used (although the compiled game itself was fine all along).
|
||||
- Fixed bug to do with return values from activities being lost (with thanks
|
||||
to Jesse McGrew, who provided the solution).
|
||||
- Fixed bug whereby a complex listing early in a "say" would cause a
|
||||
conditional [if] to go wrong later in the "say".
|
||||
- Fixed bug in the debugging command RELATIONS causing it to print some
|
||||
relations the wrong way round, and to omit some relationships with
|
||||
reciprocal various-to-various relations.
|
||||
- Fixed bug whereby released story files still contained some debugging verbs.
|
||||
- Also accidentally left in was the I6 verb FULLSCORE: this no longer works,
|
||||
and is deprecated now that there are better ways to achieve the same
|
||||
effect. In this build, the action and corresponding grammar are removed,
|
||||
leaving it open for designers to provide their own versions if they
|
||||
choose to do so.
|
||||
- Fixed bug in which "X are not Y" would sometimes complain of unproductive
|
||||
negative even if Y is such that not-Y is unambiguous, whereas "X is not
|
||||
Y" would work in similar circumstances.
|
||||
- Fixed bug where attempts to unlock something with the wrong key produced
|
||||
the wrong pronouns in the failure message.
|
||||
- Fixed bug where "each turn" and "check" rules were confused in the Rules
|
||||
index, and straightened out the spacing of this index.
|
||||
|
||||
## Mac OS X app
|
||||
|
||||
- (Mac OS X only) Mechanism for installing extensions now added: simply click
|
||||
the [+] button in the Extensions panel of the application Preferences.
|
||||
Installed extensions may also be edited using "Open Extension >" in
|
||||
the File menu.
|
||||
- (Mac OS X only) The 'Standard' library is now standard for Inform 6 projects.
|
||||
- (Mac OS X only) Projects with a setting for a version of the Inform 6 compiler
|
||||
that is not installed no longer crash the application (and choose a
|
||||
sensible alternative version).
|
||||
- (Mac OS X only) I6 compiler used internally is now bi-platform 6.31, not 6.30.
|
||||
- Improved "Help" menu offers short-cuts to the Recipe Book and the Installed
|
||||
Extensions documentation.
|
||||
|
||||
## Windows app
|
||||
|
||||
- (Windows only) The Transcript tab is now added - a major feature, and the
|
||||
only one omitted from the Windows application in the first public
|
||||
beta release. (There is one caveat: the transcript does not yet underline
|
||||
differences when the game text does not match the blessed text.)
|
||||
- (Windows only) Switched to using the NullSoft Installer System to create the
|
||||
installer. If you have a previous version installed, you should uninstall
|
||||
it from "Add or Remove Programs" in the Control Panel before installing
|
||||
this version.
|
||||
- (Windows only) The "Install Extension" menu item no longer rejects extensions
|
||||
with Unix-style line endings.
|
||||
- (Windows only) The "Install Extension" menu item shows the installed extensions
|
||||
documentation page after a successful install of an extension.
|
||||
- (Windows only) Clicking on an item in the search results window now always
|
||||
brings the appropriate tab to the front.
|
||||
- (Windows only) Compiling a game no longer steals the input focus from the
|
||||
Source tab.
|
||||
- (Windows only) It is no longer possible to put the edit windows into "smart
|
||||
quotes" mode.
|
||||
- (Windows only) The Game and Build menus have been merged.
|
163
notes/release/1-6.md
Normal file
163
notes/release/1-6.md
Normal file
|
@ -0,0 +1,163 @@
|
|||
# Release notes for Inform v1.6 (build 3R85)
|
||||
|
||||
This release was made on 26 June 2006, a rapid replacement for a mis-uploaded 3R84,
|
||||
before Inform was open-sourced.
|
||||
At that time 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).
|
||||
|
||||
## Language
|
||||
|
||||
- Two new adjectives, "on-stage" and "off-stage", have been added to the stock
|
||||
of those built in to Inform. See 7.9 in the documentation, "Removing
|
||||
things from play", for more on this; in particular, note that the
|
||||
previous reference in 7.9 to testing whether a thing is "somewhere"
|
||||
has been withdrawn. (This led to numerous difficulties with ambiguity,
|
||||
and in any case was not very explanatory.) We now test whether a thing
|
||||
is "on-stage" or "off-stage".
|
||||
- Type-checking for conditions has been substantially rewritten. This mainly
|
||||
affects "if", "when" and "now", but other phrases too, and generally
|
||||
makes Inform stricter: for instance, "if the time since Escalating Danger
|
||||
began is greater than 1" used to work - but now I7 points out that a
|
||||
time cannot be compared with a number, and insists on "1 minute"
|
||||
rather than "1". This picked up minor errors in "Glass", "Reliques of
|
||||
Tolti-Aph" and the examples "Underlying" and "The Prague Job".
|
||||
- The check removing rules have been rewritten. Previously, these duplicated
|
||||
the check taking rules, almost right down the line: in effect the two
|
||||
actions did the same thing, though being reported slightly differently.
|
||||
In the new version, a new rule called the "convert remove to take rule"
|
||||
actually converts the action from removing into taking at an early
|
||||
stage: the practical effect of this is that any before or instead
|
||||
rules written to cover taking now also cover removing. This is good
|
||||
because it means one no longer needs to remember to cover both these
|
||||
actions to be sure of handling the case of an actor picking something up.
|
||||
- The scope of the "removing" action is changed so that if something is part
|
||||
of X, then it is in scope for "remove -- from X": previously, only
|
||||
the things inside X qualified. Being in scope for the action does not
|
||||
mean that the attempt to remove the part will succeed, of course, and
|
||||
it will normally fail the "can't take component parts rule": but being
|
||||
in scope does mean that the designer can write rules to allow removal
|
||||
after all.
|
||||
|
||||
## Documentation, examples and extensions
|
||||
|
||||
### Examples
|
||||
|
||||
- "Abolition of love": removed comment that shouldn't have been there
|
||||
- "Bruneseau's Journey" slightly modified for tidiness
|
||||
- Minor errors exposed by the improved type-checker fixed in "Prague",
|
||||
"Glass", "Crusoe", and "Underlying"
|
||||
- Extra commentary and new material added to "Laura" to explain parsing of
|
||||
complex phrases better
|
||||
- "Would you...?" added to demonstrate checking for the existence of a
|
||||
property
|
||||
- "First Name Basis" added to demonstrate how to assign synonyms to objects
|
||||
- "Tiny Garden" added to demonstrate a very simple implementation of
|
||||
continuous space
|
||||
- "Equipment List" added to demonstrate and explain variant inventory styles
|
||||
- "Tense Boxing" added to demonstrate past and present tense rules more
|
||||
completely
|
||||
- "Grilling" added to demonstrate a supporter from which the player cannot
|
||||
take things
|
||||
- "Removal" added to demonstrate a revised taking report
|
||||
- "Nameless" added to demonstrate an ASK verb that works on objects, like
|
||||
SHOW
|
||||
- "Stone" added to demonstrate rules used as properties of things
|
||||
|
||||
### Extensions
|
||||
|
||||
- Documentation on newly installed extensions, not yet used, is now much
|
||||
fuller. This breaks the impasse of "can't use this until I read the
|
||||
documentation, can't read the documentation until I use this".
|
||||
- "Basic Screen Effects": minor errors exposed by the new type-checker fixed
|
||||
- "Locksmith": added yet more rule names; substantially updated to provide
|
||||
better defaulting and add a "keychain" kind; advanced to Version 2.
|
||||
- "Rideable Vehicles": added rules to prevent mounting when already mounted,
|
||||
and to convert the exiting action to dismounting; added example.
|
||||
|
||||
## Problem messages
|
||||
|
||||
- Problem messages improved for mysterious problems arising from trying to
|
||||
use local "let" variables in substituted text which turns up elsewhere
|
||||
in the source, i.e., in places where those variables do not exist.
|
||||
- Problem message added if two rules are being added with the same name.
|
||||
|
||||
## Bug fixes
|
||||
|
||||
- Fixed bug which caused negated conditions in the past and perfect tenses to
|
||||
fail: I7 would read, e.g., "if the box had not been open" as "if the box
|
||||
had been not open", which would generally be true much more easily.
|
||||
- Fixed bug whereby actions declared without any mention of what they applied
|
||||
to (e.g., "Requesting help is an action out of world." rather than
|
||||
"Requesting help is an action out of world applying to nothing.")
|
||||
would sometimes lead to spurious incompatibility Problem messages when
|
||||
grammar is defined for the action. To clarify: from now on, an action
|
||||
which does not say what it applies to, applies to nothing. (This is
|
||||
tacitly assumed by some of the extensions source text already.)
|
||||
- Fixed bug in which I7 allowed names with double-quoted text in, only to
|
||||
crash at the I6 stage; when the cause was actually a misunderstanding of
|
||||
the punctuation rules by the user.
|
||||
- Fixed bug to do with names beginning with the word "kind", such as "kind
|
||||
gentleman".
|
||||
- Fixed bug which caused properties declared by the "(called ...)" text in a
|
||||
new relation to have not quite the right type, causing odd type-checking
|
||||
problems elsewhere.
|
||||
- Fixed bug in which negatively phrased implications would sometimes be read
|
||||
as if positive (e.g., "Scenery is never cold" is an implication not an
|
||||
inference because it concerns all things which have a given property
|
||||
at the start of play, not all things of a known kind; and it was being
|
||||
misread as if "Scenery is always cold").
|
||||
- Fixed bug to do with initialising variables whose kind of value is
|
||||
"miscellaneous-value" or "string-of-text" (though the author of Inform
|
||||
wishes people wouldn't use hacky internal kinds of value with hyphens
|
||||
in the name, really).
|
||||
- Fixed bug in which spurious problem messages occasionally occur when
|
||||
giving grammar which specifies only one of two required things to
|
||||
which an action will apply; and generally improved the previously
|
||||
uninformative "not compatible" grammar Problem message.
|
||||
- Fixed bug in which "now" does not always set properties correctly.
|
||||
- Fixed bug whereby Problems in the final chunk of a text with substitutions
|
||||
used explicitly as a value were not always reported.
|
||||
- Fixed bug to do with relative clauses in property values (which are not
|
||||
allowed, but used to cause an internal error rather than a proper problem.)
|
||||
- Fixed bug in which errors on grammar verbs were sometimes reported quoting
|
||||
the previous Understand... sentence in the source, not the one in which
|
||||
the error occurred.
|
||||
- Fixed bug in sentence-breaking, whereby text ending with sentence-closing
|
||||
punctuation, immediately followed by a single word sentence in which the
|
||||
word was capitalised, would cause that single word to be ignored.
|
||||
- Fixed bug whereby "else" was not always equivalent to "otherwise".
|
||||
- Fixed bug to do with permissions for the "initially carried" property.
|
||||
|
||||
## Mac OS X app
|
||||
|
||||
- (Mac OS X only) Direct "Install Extension..." option added to the File menu.
|
||||
- (Mac OS X only) Extension documentation auto-updated when any file added to
|
||||
the extensions area, even if dragged by hand in the Finder.
|
||||
- (Mac OS X only) Bug fixed that was causing Inform projects sometimes to appear
|
||||
as directories, and to fail to open on double-clicking.
|
||||
|
||||
## Windows app
|
||||
|
||||
- (Windows only) Differences between the game's current text and the blessed
|
||||
text in the transcript tab are now underlined.
|
||||
- (Windows only) The transcript is now saved in the same format as the OS X
|
||||
application. (This means that any blessed transcript text saved from an
|
||||
earlier version will have to be recreated.)
|
||||
- (Windows only) The source tab now correctly colours nested comments.
|
||||
- (Windows only) Entering a carriage return with the shift key held down no
|
||||
longer results in text that the compiler rejects.
|
||||
- (Windows only) Setting the focus on the game tab by clicking in it with the
|
||||
mouse now keeps the input cursor on the input line being edited.
|
||||
- (Windows only) Added a warning dialog to the "Bless All" button on the
|
||||
transcript tab.
|
||||
- (Windows only) The bless buttons on the transcript tab are now disabled if
|
||||
there is nothing to do.
|
||||
- (Windows only) If the registry DWORD value
|
||||
"HKCU\Software\David Kinder\Inform\Start\Open Last Project"
|
||||
exists and is not set to zero, then when starting the application just
|
||||
opens the last project, rather than displaying the splash screen. If the
|
||||
registry DWORD value
|
||||
"HKCU\Software\David Kinder\Inform\Window\Clean Up Indexes"
|
||||
exists and is set to zero, then when closing a project the index files are
|
||||
not deleted. (Based on patches by Dan Shiovitz.)
|
124
notes/release/1-7.md
Normal file
124
notes/release/1-7.md
Normal file
|
@ -0,0 +1,124 @@
|
|||
# Release notes for Inform v1.7 (build 3T38)
|
||||
|
||||
This release was made on 10 July 2006, before Inform was open-sourced.
|
||||
At that time 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).
|
||||
|
||||
## Language
|
||||
|
||||
- The "means" and "means that" syntaxes are being withdrawn. These were always
|
||||
rather crude word-substitution devices: to quote the documentation,
|
||||
"now deprecated... may be withdrawn". In this release, the Standard Rules
|
||||
no longer use the syntaxes even internally, and this prevents a number
|
||||
of slightly odd side-effects related to the words "above" and "below".
|
||||
In the next release, the ability to use the "means" and "means that"
|
||||
syntaxes will be removed altogether.
|
||||
- Two new relations are built in to Inform to handle doors and locks; the
|
||||
verbal forms "to be through D" and "to unlock D" express these. This
|
||||
mimics syntax previously achieved using "means that", but works in a
|
||||
much tidier way, and is more flexible: for instance, "things which
|
||||
unlock the Great Gate" is now a legal description.
|
||||
- Type-checking extended further into the descriptions D used in constructions
|
||||
such as "total P of D" or "a random D", and into complicated descriptions
|
||||
given as part of the conditions for rules to apply. (For instance,
|
||||
"Instead of taking a container in 100" - clearly absurd, as how can
|
||||
a container be inside a number? - now produces a problem message.)
|
||||
- Unnecessary Inform 6 general parsing routines are no longer compiled for
|
||||
kinds of value which are not ever parsed: under some circumstances
|
||||
this can save a significant amount of space at run-time.
|
||||
- Extended the range of what can be negated using "now", so that, e.g.,
|
||||
"now Elizabeth does not love anyone" is now allowed. (An obvious feature
|
||||
whose absence was reported as a bug, but technically it's new.)
|
||||
|
||||
## Documentation, examples and extensions
|
||||
|
||||
### Examples
|
||||
|
||||
- "Uptempo" given a better "fast time rule".
|
||||
- In some 21 of the examples, the syntax "-- has a property called --" has
|
||||
been rewritten to be more specific about what kind of value is involved.
|
||||
(For instance, to say "-- has some text called --" if the property
|
||||
will hold text.) This is better style, and allows Inform to check
|
||||
usage more carefully.
|
||||
|
||||
## Problem messages
|
||||
|
||||
- Problem message added for grammar token trying to understand a kind of
|
||||
value which cannot be parsed, such as 'rule' or 'scene'.
|
||||
- Improved problem messages for property declarations, and allowed property
|
||||
declarations to create properties whose values have to objects of a given
|
||||
kind.
|
||||
- Improved problem message for when "Understand the command..." goes bad.
|
||||
- Improved problem message for incorrect usage of "... condition" names.
|
||||
- Added problem message if a verb is defined with two present plurals (as
|
||||
this can't be right, and usually means that someone has tried to define
|
||||
the past tense using "they" rather than "he", "she" or "it").
|
||||
- Added problem message for an attempt to "change O to A", where O is an object
|
||||
and A is an adjective the truth of which can be tested, but not changed
|
||||
(e.g. "change O to visible").
|
||||
- Added problem message for creating a kind of value containing "of". (This
|
||||
never worked, due to all kinds of grammatical ambiguities, but used to
|
||||
fail with an inexplicable problem message: now it fails with an apology.)
|
||||
|
||||
## Bug fixes
|
||||
|
||||
- Removed spurious problem message claiming that certain "after" rules would
|
||||
have no effect.
|
||||
- Fixed bug whereby arbitrary text could, under some circumstances, match the
|
||||
"[number]" token of grammar.
|
||||
- Fixed bug under which rules applying to actions done for the Nth time
|
||||
might fail to apply if these actions had been interrupted by other
|
||||
actions earlier in the same turn (e.g., to implicitly take something
|
||||
before moving on to do something with it).
|
||||
- Fixed bug whereby specifying that one of the named built-in rules belongs
|
||||
to another rulebook (i.e., as well as its usual one) would result in
|
||||
one of the two rulebooks being a partial duplicate of the other.
|
||||
- Fixed bug causing "item described" (and the thing implicitly meant by a
|
||||
bare property name) in a text with substitutions to refer to the
|
||||
wrong thing, when this text is being printed from within another text
|
||||
with substitutions.
|
||||
- Fixed bug in which tests such as "if not visited" sometimes lost the
|
||||
sense of the "not" and instead tested "if visited".
|
||||
- Fixed bug whereby route-finding and counting steps through reciprocal
|
||||
various-to-various relations would sometimes give incorrect results if
|
||||
the relation had been changed from its initial state at run-time.
|
||||
- Fixed bug by which "everything" was not always equivalent to "every thing",
|
||||
and similarly for "everyone", "everybody" and "everywhere".
|
||||
- Fixed bug to do with parsing times of day around midnight and midday.
|
||||
- Fixed obscure bug to do with editing the player's command. (Well, in fact
|
||||
Jesse McGrew fixed it.)
|
||||
- Fixed bug in which a property is being declared as possible but whose name
|
||||
coincides with a participle of one of the containment verbs. (E.g.,
|
||||
"A weapon can be worn.")
|
||||
- Fixed bug whereby a rule about "doing something" (unspecified) to some
|
||||
specific kind of noun would result in run-time errors if the current
|
||||
action did not take a noun, e.g., when looking.
|
||||
- Fixed bug whereby setting the printed plural name of a kind might lead
|
||||
to a failure to compile through Inform 6 (due to a duplicated "plural"
|
||||
property).
|
||||
- Fixed two unrelated bugs to do with apostrophes inside commands leading
|
||||
to grammar declarations which failed to compile through Inform 6.
|
||||
- Fixed bug causing spurious problem messages with garbled text: this
|
||||
affected the examples "Table Foosball" and "Air Conditioning is Standard".
|
||||
(We believe the bug only manifested itself under Mac OS X running on an
|
||||
Intel processor.)
|
||||
- Fixed bug causing scene begin/end conditions to go wrong if they tried to
|
||||
use the "location of X" phrase.
|
||||
- Fixed bug causing problems with scene begin/end conditions to be reported
|
||||
at the wrong sentence of the source text.
|
||||
- Spurious newline after "That noun did not make sense in this context." removed.
|
||||
|
||||
## Windows app
|
||||
|
||||
- (Windows only) Boxed quotations are now correctly displayed in the game tab.
|
||||
- (Windows only) Extensions can be created, opened and edited within the
|
||||
application.
|
||||
- (Windows only) If an error occurs in an extension, clicking on the link in the
|
||||
problem report opens that extension.
|
||||
- (Windows only) The file dialog for installing extensions now allows multiple
|
||||
files to be selected at once.
|
||||
- (Windows only) Undo and redo in the source tab now works correctly with Unicode
|
||||
characters.
|
||||
- (Windows only) Added a "Trim skein" button to the skein tab, which removes all
|
||||
unlocked skein knots.
|
24
notes/release/10-1-0.md
Normal file
24
notes/release/10-1-0.md
Normal file
|
@ -0,0 +1,24 @@
|
|||
# Release notes for Inform v10.1.0
|
||||
|
||||
**These are incomplete and draft notes for a release not yet made**
|
||||
|
||||
This release was made in August 2022. Bug reports were at this time tracked
|
||||
at Jira, with issue numbers written I7-NNNN, but Mantis issue numbers
|
||||
continued to be used for bugs fixed before the move to Jira, so that this
|
||||
log contains some of each.
|
||||
|
||||
## Overview
|
||||
|
||||
Not yet written.
|
||||
|
||||
## Language
|
||||
|
||||
## Documentation, examples and extensions
|
||||
|
||||
## Problem messages
|
||||
|
||||
## Bug fixes
|
||||
|
||||
## Mac OS X app
|
||||
|
||||
## Windows app
|
114
notes/release/2-1.md
Normal file
114
notes/release/2-1.md
Normal file
|
@ -0,0 +1,114 @@
|
|||
# Release notes for Inform v2.1 (build 3V01)
|
||||
|
||||
This release was made on 2 August 2006, before Inform was open-sourced.
|
||||
At that time 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).
|
||||
|
||||
## Language
|
||||
|
||||
- Rather than being a bug-fixing build, this build carries out a number of
|
||||
significant internal reforms, some outwardly visible and some not.
|
||||
- For the first time, compilation to the Glulx virtual machine rather than
|
||||
the Z-machine is possible. As the option on the Settings panel for a
|
||||
project suggests, we had always intended this to be a possibility,
|
||||
but too much was involved to get Glulx working in time for the public
|
||||
beta. In the future, we hope that Glulx will provide a solidly
|
||||
reliable platform for larger and for multimedia works: at present,
|
||||
though, our aim is simply to allow larger works to be compiled:
|
||||
and there are a few restrictions on screen effects, with some code
|
||||
(particularly to do with coloured text) not yet working.
|
||||
Glulx support in this build is experimental at best: we ask users
|
||||
not to send bug report forms yet, and would advise that people avoid
|
||||
publishing works compiled to Glulx rather than Z. With that said, we
|
||||
do believe that worthwhile progress is being made.
|
||||
- The most important change in adapting to Glulx was the switch to an
|
||||
Inform 6 library derived from library 6/11, the current biplatform
|
||||
I6 library: up until now, Inform 7 has used a heavily adapted I6
|
||||
library referred to as "6/10N", derived from both 6/9 and 6/10.
|
||||
The new library, "6/11N", is the work of Jesse McGrew: our intention,
|
||||
once Glulx support is stabilised a little, is that this will
|
||||
eventually become library 6/12 - that is, the standard I6 library
|
||||
for use by both I6 and I7 authors alike. This should finally bring
|
||||
together branches of work on the I6 library which have been divergent
|
||||
for three years now.
|
||||
For the most part, the change of library will be invisible to I7
|
||||
users, but the adoption of various I6 bug-fixes and improvements
|
||||
between 6/9 and 6/11 should subtly improve the behaviour of Inform
|
||||
story files at run-time.
|
||||
- Inform now reacts more helpfully to various overflows in Inform 6: thus, if
|
||||
Inform generates code which overflows the size of the Z-machine or
|
||||
breaks one of Inform 6's memory settings, rather more useful pages of
|
||||
advice are displayed.
|
||||
- As promised, the deprecated "means" and "means that" features have been
|
||||
withdrawn, and removed from Chapter 19 of the documentation.
|
||||
- The meanings of "in" and "on" have been made stricter: in past builds, the
|
||||
test "if A is in B" would pass if, e.g., A was being carried by a person
|
||||
B: this now fails. "A is in B" requires B to be a room or container;
|
||||
or else requires A to be a room or region, and B a region. Similarly,
|
||||
"A is on B" now requires B to be a supporter. The point of these reforms
|
||||
is that the built-in relations (well, all relations, really) ought to
|
||||
test as the same relation that they assert: asserting "The spanner is
|
||||
in the box." implies that "the box" is definitely not a person, so it
|
||||
is wrong for "if the spanner is in Fred" to succeed where Fred clearly
|
||||
is a person.
|
||||
- Because it is, nevertheless, useful to be able to test "by whatever means
|
||||
A is immediately carried by B", the meaning of "to hold" has been
|
||||
changed to this relation. This accords with the meaning of the existing
|
||||
construction "the holder of A": thus "B holds A" if and only if B is
|
||||
"the holder of" A, and one can talk about "things held by B", and so on.
|
||||
In previous builds, "to hold" was synonymous with "to carry", and
|
||||
implied that the holder was a person: clearly, this is no longer true.
|
||||
A bucket can "hold" sand, a table can "hold" place settings, and so on.
|
||||
Note that, as with "holder of", the parts of something are also deemed
|
||||
to be "held" by it.
|
||||
- Bug fixed so that "now" is able to change variables and properties, e.g. by
|
||||
writing "now the score is 132" or "now the carrying capacity of the
|
||||
player is 10". (In general, the "now" mechanism for asserting things
|
||||
has been rewritten, and should be more capable all round.)
|
||||
- When Inform deals with descriptions such as "the people who are in lighted
|
||||
rooms", it compiles code using Inform 6's "objectloop" construct. The
|
||||
running speed of the result depends in part on the form of objectloop
|
||||
used, and in general it is fastest to try to minimise the size of the
|
||||
set of the objects looped through. Inform 7 now does a better job of
|
||||
minimising this set, and tries to avoid circumstances in which it is
|
||||
forced to loop through every object in searching for a match to a
|
||||
pattern. (It is possible that, in a limited number of cases, a
|
||||
description such as "if a woman (called the shopper) is in a shop, ..."
|
||||
will now result in a different woman being written into the "shopper"
|
||||
value than would have happened under previous builds - still a
|
||||
woman who is in a shop, but maybe not the same one. This might possibly
|
||||
affect Transcripts being used for testing.)
|
||||
Because this optimisation trades memory space for time, it is switched
|
||||
off if "use memory economy" has been requested.
|
||||
- Values of kind "rule" can now be said - the result being to print their
|
||||
names: e.g., "can't turn scenery rule". This will probably only be
|
||||
useful for debugging, or the writing of surrealist competition pieces.
|
||||
|
||||
## Documentation, examples and extensions
|
||||
|
||||
### Examples
|
||||
|
||||
- Minor changes have been made to a small number of examples to reflect
|
||||
this stricter sense of "in";
|
||||
- Two new examples, "Bees" and "Zqlran", demonstrate a random maze and
|
||||
and an exotic time notation respectively.
|
||||
|
||||
### Extensions
|
||||
|
||||
## Problem messages
|
||||
|
||||
- Problem messages in the EPS map-maker generally tidied up.
|
||||
|
||||
## Bug fixes
|
||||
|
||||
- Bug in listing installed extension documentation fixed.
|
||||
|
||||
## Mac OS X app
|
||||
|
||||
- The scene icons missing in build 3T38 for OS X have been restored.
|
||||
|
||||
## Windows app
|
||||
|
||||
- The crash occurring in build 3T38 for Windows to do with "a, b, and c" has
|
||||
been fixed.
|
279
notes/release/2-2.md
Normal file
279
notes/release/2-2.md
Normal file
|
@ -0,0 +1,279 @@
|
|||
# Release notes for Inform v2.2 (build 3Z95)
|
||||
|
||||
This release was made on 14 September 2006, before Inform was open-sourced.
|
||||
At that time 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).
|
||||
|
||||
## Language
|
||||
|
||||
- A new toolbar button, Index, (re-)makes the current project, but shows the
|
||||
revised index rather than the ensuing game. It's useful when, for
|
||||
instance, laying out rooms and map connections, as it allows for an
|
||||
easier comparison of the source text with the World map.
|
||||
- The unsupported types "object-specification" and "object-specification-unsub"
|
||||
have been withdrawn. In all cases where a phrase takes a description of
|
||||
a set of objects - for instance as what to list in a "[list of S]",
|
||||
or as what to repeat through in a "repeat with X running through S" -
|
||||
this is now called simply "description". Moreover, the operations
|
||||
"random S", "number of S", "total P of S" and "(superlative) S" -
|
||||
such as "number of men", "a random man", "total carrying capacity of
|
||||
men", "the heaviest man" - are all now defined as phrases like any other,
|
||||
rather than being special constructions inside Inform. (This should ease
|
||||
slightly odd problems experienced by a few people where Inform's parser
|
||||
could not cope with phrases whose names were too similar to these four
|
||||
constructions.) Finally, although "description" is not a kind of value,
|
||||
it is legal to use "description" in new phrases:
|
||||
To enumerate (collection - a description):
|
||||
repeat with the item running through the collection
|
||||
begin;
|
||||
say "-- [The item].";
|
||||
end repeat.
|
||||
We could then "enumerate lighted rooms", say. Note that "collection"
|
||||
here stands for whatever description is used when the phrase is invoked:
|
||||
it can in turn be used wherever a description is needed. We could,
|
||||
for instance, evaluate "the total carrying capacity of the collection".
|
||||
- Actions can now require three levels of access to something in order to
|
||||
work, rather than two:
|
||||
- "Visible" and "touchable" (the default) are as before, and "carried"
|
||||
has been added. (E.g., "Assaying is an action applying to one carried
|
||||
thing.") Carried implies touchable which implies visible, in this sense.
|
||||
- A new accessibility rule, the "carrying requirements rule", checks that
|
||||
this requirement is met.
|
||||
- Should it fail, a new activity, "implicitly taking something", will
|
||||
attempt to have the actor silently take the item(s) required.
|
||||
- Should this in turn fail, the action as a whole will fail the "carrying
|
||||
requirements rule".
|
||||
- In Understand sentences, the tokens "[something held]" and "[things
|
||||
held]" have been withdrawn. If used, they now produce an explanatory
|
||||
Problem message which lays out what must change. In most cases, what
|
||||
will be needed is for the action's declaration to include the carrying
|
||||
requirement, and then these tokens to revert to plain "[something]"
|
||||
or "[things]"; but new tokens "[something preferably held]" and
|
||||
"[things preferably held]" have been created which, though they can
|
||||
match anything visible, will prefer items held when ambiguous names
|
||||
are used.
|
||||
These changes make little difference to the player's perception of what
|
||||
is happening. They have two advantages: first, it is conceptually clearer
|
||||
for the action to be where realism constraints are declared, rather than
|
||||
in grammar for parsing, and it ensures that all grammar using the same
|
||||
action follows the same rules; second, it moves implicit taking from the
|
||||
I6 library into more modern I7 terms, thus making it much easier to adapt
|
||||
and modify the behaviour of implicit taking: this has been a frequent
|
||||
request.
|
||||
- The actions "throwing X at Y" and "showing X to Y" now require Y only to
|
||||
be visible, not to be touchable. (We envisage daggers thrown across
|
||||
chasms, security passes shown through windows, and so forth.)
|
||||
- The "blowing" action, intended for woodwind instruments and perhaps the
|
||||
occasional siphon, has been withdrawn from the built-in set: it no
|
||||
longer seems to us part of the essential core of actions. We have
|
||||
similarly removed praying, digging, jumping over, filling and
|
||||
swimming. (Our main concern with these was that, besides being of
|
||||
marginal use, they tended to result in inappropriate text being
|
||||
produced in the few cases where they were relevant.)
|
||||
- Finally, "remove X" (as distinct from "remove X from Y") is no longer
|
||||
understood as referring to the taking action. (It caused confusions
|
||||
with removing in the sense of removing an item of clothing, and
|
||||
hardly anybody ever used it.)
|
||||
- Further work has been carried out on providing Glulx support. We now
|
||||
believe that any work written without the explicit use of Z-code
|
||||
assembly language (or extensions themselves containing such) should
|
||||
compile, run and release correctly in with "Glulx" selected on the
|
||||
Settings panel.
|
||||
- Moreover, there is (as yet limited) support for displaying images, which
|
||||
Inform calls "Figures", following an analogy with book conventions. To
|
||||
use these:
|
||||
- Place an image file, which must be a JPEG or PNG, in a subfolder
|
||||
called Figures of the Materials folder for the project. Suppose
|
||||
this is "Woodlands.png".
|
||||
- Add the sentence:
|
||||
Figure of Woodlands is the file "Woodlands.png".
|
||||
to the source text. (Figure names can consist of any text so
|
||||
long as they start with the word "Figure": "Figure 3 - Woodlands",
|
||||
for instance, or "Figure W" would have been just as good.)
|
||||
- The phrase
|
||||
display the Figure of Woodlands;
|
||||
will now show the image, when the work is compiled to Glulx. When
|
||||
compiled to the Z-machine (which is the default setting on the
|
||||
Settings panel, of course), nothing will happen: the phrase will
|
||||
do nothing. The phrase option
|
||||
display the Figure of Woodlands, one time only;
|
||||
causes the image to be shown only the first time this phrase is
|
||||
reached.
|
||||
- A list of figures, with thumbnails and dimensions, appears in the
|
||||
Contents index; a warning triangle is shown for any images in the
|
||||
wrong format, or which are missing from the Figures folder.
|
||||
- When a Glulx work is released as a blorb (the default setting for the
|
||||
way releases occur), any such images are automatically included.
|
||||
- The new kind of value "figure-name" can be used to define phrases
|
||||
which work with Glulx pictures:
|
||||
To do something funny with (F - a figure-name): ...
|
||||
Figure names compile to resource ID numbers as used in the final
|
||||
released blorb; these will usually be integers 2, 3, 4, ...,
|
||||
since picture resource number 1 is reserved for the cover art.
|
||||
- We would like to thank John Cater for contributing his infglk.h
|
||||
definitions to the project: these definitions are included in the
|
||||
I6 source code compiled by I7 on any project set to Glulx.
|
||||
- In line with the existing text substitutions "[the Thing]", "[The Thing]",
|
||||
"[a Thing]", "[an Entity]", for the name of something together with the
|
||||
given article and casing, "[A Thing]" and "[An Entity]" have been added,
|
||||
providing for a capitalised indefinite article.
|
||||
- Technically a new feature rather than a bug fix: if an object is established
|
||||
as a proper noun, in that its name as specified by "called" does not
|
||||
begin with a standard English article - for instance "A man called your
|
||||
local vicar is in the Belfry", where "your local vicar" is treated as
|
||||
a proper noun - then this name will be capitalised if the object's
|
||||
name is printed with "[The whatever]", "A whatever" or "An whatever".
|
||||
(Thus "Your local vicar" would be printed instead of "your local vicar".)
|
||||
- Kinds can now have plural names. This will relatively seldom be useful, but
|
||||
the result is that the text "A house is a kind of thing. Some windows
|
||||
are a kind of thing. Some windows are part of every house." - will now
|
||||
result in a house's windows being deemed to have plural names (which for
|
||||
instance means they will produce better messages with the Plurality
|
||||
extension).
|
||||
- Conversely, fewer plural names are now understood by the run-time parser:
|
||||
an over-eagerness to recognise plurals of the names of unique, one-off
|
||||
items was sometimes leading to name clashes and consequently misinterpreted
|
||||
input.
|
||||
- The SCENES testing command now summarises the current situation when scene
|
||||
tracing is switched on - the story so far, as it were.
|
||||
- Changes in the type-checker should cause Inform to compile slightly more
|
||||
efficient code: it also checks a few more cases, and notably that the
|
||||
parameters of an action in a "try" phrase are genuinely of the right
|
||||
kind of value for the action in question.
|
||||
|
||||
## Documentation, examples and extensions
|
||||
|
||||
- A new chapter (Chapter 5: Text) has been created in the documentation: this
|
||||
is made up of material previously in the middle of Chapter 4, with a
|
||||
variety of sections (on Unicode, quotations, "say" and text substitutions)
|
||||
pulled in from surrounding chapters.
|
||||
- More detailed material has been added to the chapter on Rulebooks to cover
|
||||
the distinction between object- and action-based rulebooks.
|
||||
- Review sections added to chapters 2, 5, 6, 7, 8 and 9.
|
||||
|
||||
### Examples
|
||||
|
||||
- "Alpaca Farm" -- modified for new held rules
|
||||
- "Ballpark" -- added commentary to better explain the function of
|
||||
the table
|
||||
- "Beachfront" -- added commentary to explain the order of
|
||||
operations of the rules
|
||||
- "Beneath the Surface" -- modified to account for changes to the
|
||||
held token
|
||||
- "Big Sky Country" -- modified to account for the removal of the
|
||||
DIG action
|
||||
- "Bruneseau's Journey" -- modified for the fact that BLOW has been
|
||||
removed
|
||||
- "Bumping into Walls" -- substantially simplified entire example to
|
||||
demonstrate simpler handling of the problem
|
||||
- "Cloak of Darkness" -- modified for new held rules
|
||||
- "Crane's Leg 1" and "Crane's Leg 2" -- removed "a thing has a
|
||||
thing called the ideal" and replaced this with a relation and some
|
||||
discussion of why it is better to use relations than object
|
||||
properties
|
||||
- "Curare" -- added to demonstrate a possible use of descriptions
|
||||
- "Dig" -- removed, since it showed how to get around a problem that
|
||||
is no longer a problem
|
||||
- "Down Below" -- added a demonstration of >FLIP grammar for the
|
||||
light switch, and corrected a bug that would have allowed the
|
||||
switch to be interacted-with from rooms other than the basement
|
||||
- "Lakeside Living" -- modified to account for the removal of the
|
||||
swimming action
|
||||
- "Model Shop" -- added a few extra lines showing how to make
|
||||
alternative names for the created buttons
|
||||
- "Morning After" -- comment added to explain the meaning of "carry
|
||||
out"
|
||||
- "Pine" -- modified to account for the removal of the swimming action
|
||||
- "Polarity" -- comment added to explain "first carry out going
|
||||
rule"
|
||||
- "Reflections" -- modified to account for the removal of the blowing
|
||||
action
|
||||
- "Revenge of the Fussy Table" -- redundancy removed from one
|
||||
definition
|
||||
- "Space Patrol - Stranded on Jupiter!" -- modified to account for
|
||||
the removal of the DIG action
|
||||
- "Tamed" -- modified also to model the case of a room whose
|
||||
exterior is visible in another room (ie, nested locations)
|
||||
- "3 AM" -- modified to reflect the changes to the held token
|
||||
- "Trachypachidae Maturin 1803" -- modified to reflect changes in
|
||||
the held token
|
||||
- "Transmutation" -- added example on group relations, thanks to
|
||||
Jesse McGrew
|
||||
- "Under Contract" -- modified for the fact that various actions
|
||||
have been removed
|
||||
- "The Unexamined Life" -- modified to reflect changes in the held
|
||||
token
|
||||
- "A View of Green Hills" -- comment added explaining what noun
|
||||
means in this context
|
||||
- "Waterskin" -- modified to reflect removal of blowing action
|
||||
- "Would you...?" -- more comment added explaining the behavior of
|
||||
edible things
|
||||
- "Zodiac" -- added missing line to the first version of the
|
||||
scenario
|
||||
- "Zorn of Zorna" -- modified to reflect removal of blowing action
|
||||
- A new information-only example has been added to the chapter on Rulebooks,
|
||||
giving a Backus-Naur form grammar for Inform's rule preambles
|
||||
|
||||
### Worked Examples
|
||||
|
||||
- "Bronze" -- modified to reflect myriad changes to action definitions
|
||||
and held tokens
|
||||
- "Glass", "When in Rome 1", "When in Rome 2" -- modified to remove a few
|
||||
responses to now-undefined actions
|
||||
- "Damnatio Memoriae" -- modified to reflect changes to held tokens; fixed
|
||||
minor bug about thinking on the first turn
|
||||
- "Reliques of Tolti-Aph" -- modified to reflect action changes
|
||||
|
||||
### Extensions
|
||||
|
||||
- "Complex Listing" modified to deal with the new specification type, and
|
||||
advanced to version 3. Please note that "register things marked for
|
||||
listing" is now not necessary in most cases: see the documentation.
|
||||
|
||||
## Problem messages
|
||||
|
||||
- Problem messages added for duplicate definitions of verbs or prepositional
|
||||
usages.
|
||||
- Problem messages to do with misphrased property declarations improved.
|
||||
|
||||
## Bug fixes
|
||||
|
||||
- Bug fixed in which phrases to decide if something-or-other would sometimes
|
||||
not properly be parsed where they naturally begin with "the": so that,
|
||||
for instance, the condition "if the action requires a touchable noun..."
|
||||
would sometimes fail because of the "the".
|
||||
- Bug fixed to do with spurious paragraphs such as "On the mantelpiece is a
|
||||
brass clock." being produced in room descriptions when the mantelpiece
|
||||
is scenery, and the brass clock has already been mentioned.
|
||||
- Bug fixed whereby the creation of three things X, Y and Z with text in the
|
||||
pattern "an X of Y and a Z" would sometimes cause Z to be created with
|
||||
no article, i.e., as if its name were a proper noun - ignoring the "a".
|
||||
- Bug fixed whereby testing if "X is in R", where X is a thing and R is a
|
||||
region, would always come up negative even if X was in a room inside
|
||||
that region. It now makes the obviously intended test.
|
||||
- Bug fixed to do with incorrect casing when printing a literal value in a
|
||||
pattern which includes words already occurring earlier in the source
|
||||
with different casing from that in the pattern.
|
||||
- Bug fixed causing programming errors to appear at run-time when attempting
|
||||
to push an enterable container between rooms while within it (by
|
||||
punting down a river, perhaps).
|
||||
- Bug fixed causing occasional hangs, under Glulx only, when the player
|
||||
character in inside or on something and also has component parts.
|
||||
- Bug fixed causing snippet replacement to leave the wrong number of words
|
||||
behind, under Glulx only.
|
||||
|
||||
## Mac OS X app
|
||||
|
||||
- (Mac OS X only) A new toolbar gadget, Headings, provides a breadcrumb-style
|
||||
drop-down menu to navigate the headings and subheadings in the source.
|
||||
|
||||
## Windows app
|
||||
|
||||
- (Windows only) Clicking on a link in a problem report that points to an
|
||||
extension does not open a new window if the extension is already open in
|
||||
another window.
|
||||
|
||||
|
||||
|
||||
|
190
notes/release/2-3.md
Normal file
190
notes/release/2-3.md
Normal file
|
@ -0,0 +1,190 @@
|
|||
# Release notes for Inform v2.3 (build 4B91)
|
||||
|
||||
This release was made on 10 November 2006, before Inform was open-sourced.
|
||||
At that time 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).
|
||||
|
||||
## Language
|
||||
|
||||
- The Glulx story file format is fully supported by Inform for textual works,
|
||||
and we have therefore documented it as a choice available for designers:
|
||||
see section 2.13, now retitled "Limits and the Settings panel".
|
||||
- The commonest source of problems with Glulx to date has been to do with
|
||||
screen effects such as coloured text and menus, and in particular to
|
||||
do with the extension "Basic Screen Effects", which works only for the
|
||||
Z-machine formats. Because of this, and because we expect that people
|
||||
will want to write other extensions providing unusual effects, two
|
||||
new features have been added:
|
||||
- An extension can describe itself, in its top line declaration, to
|
||||
be for a limited range of story file formats. This is displayed in
|
||||
the "Installed Extensions" documentation chapter, and an attempt to
|
||||
use an extension with a story file format which does not match will
|
||||
produce an explanatory problem message.
|
||||
- Individual headings can specify that they contain material to be
|
||||
used only with certain story file formats. This allows extensions, in
|
||||
particular, to provide different implementations of the same idea -
|
||||
for instance, a Glulx version and a Z-machine version - so that the
|
||||
user will get the same behaviour whatever the current project Settings.
|
||||
See the new section 21.6: "Extensions and story file formats".
|
||||
- The "Release along with an existing story file" option has been improved,
|
||||
and is now fully documented for the first time: see the new section
|
||||
20.15, "Republishing existing works of IF". This enables Inform 6
|
||||
users, or those with old games compiled using Informs 1 to 6, to
|
||||
repackage them with cover art and bibliographic data for modern
|
||||
interpreters such as Zoom, Spatterlight or Windows Frotz.
|
||||
- "When play ends" rules are now run when play ends "in victory"; previously,
|
||||
they were run on every other outcome but not this one. This is a change
|
||||
in the design rather than a bug fix, so it may cause existing source
|
||||
text to change its behaviour: if you are using "when play ends" rules
|
||||
in a work in progress, you may want to test to see if victory is still
|
||||
presented as you would wish it.
|
||||
- If a scene is created with a name such as "Grand Finale", one can now
|
||||
write rules for "When the Grand Finale begins: ...", etc., equivalently
|
||||
to "When Grand Finale begins: ...". (This is in effect a bug fix, since
|
||||
the same text would previously have created a spurious rule called
|
||||
'Grand Finale begins' which was never invoked, rather mysteriously.)
|
||||
- The syntax "otherwise if" (or "else if") is now allowed. This divides up
|
||||
an "if ... begin; ...; end if", for instance as follows:
|
||||
```
|
||||
if the player is in the Garden
|
||||
begin;
|
||||
say "The wind rustles the long grass.";
|
||||
otherwise if the player is in the Gazebo;
|
||||
say "The wind catches at the canvas roof of the Gazebo.";
|
||||
end if.
|
||||
```
|
||||
There can be any number of "otherwise if"s within an "if... end if".
|
||||
(Note the lack of a "begin" at the end of each "otherwise if" - the "if"
|
||||
is all one block of phrases.)
|
||||
This new syntax is somewhat experimental, so will be documented in the
|
||||
next build rather than this one.
|
||||
- The limit on the size of a single I6 code inclusion, previously 10K, has
|
||||
been substantially raised (to 200K): this for the benefit of one or
|
||||
two complex extensions needing to incorporate very long hand-coded
|
||||
I6 routines.
|
||||
|
||||
## Documentation, examples and extensions
|
||||
|
||||
- The use of illustrations is now officially supported. This was implemented
|
||||
in 3Z95 but documented only in the change log; for this build a new
|
||||
chapter on illustrations, Chapter 19, has now been added to the
|
||||
documentation.
|
||||
|
||||
### Examples
|
||||
|
||||
- "Garibaldi" altered to reflect that colored lettering can be used only
|
||||
under the Z-machine.
|
||||
- "Scooby" reworded slightly to avoid a conflict with the new "otherwise if".
|
||||
|
||||
### Extensions
|
||||
|
||||
- Basic Screen Effects revised to compile correctly under both Glulx and
|
||||
Z-machine; documentation updated; version number advanced to 3. (Thanks
|
||||
to Eric Eve for his contributions.)
|
||||
- Plurality revised to include additional management for pronoun behavior
|
||||
(providing wrappers for Inform 6's MANUAL PRONOUNS constant and the
|
||||
PronounNotice() routine), and to print "you" when the item described is
|
||||
the player, in it/them phrases; documentation updated; version number
|
||||
advanced to 2.
|
||||
- Punctuation Removal revised to indicate that it is for the Z-machine only.
|
||||
|
||||
## Problem messages
|
||||
|
||||
- Problem messages have been added for use of '[if ...]' inside an existing
|
||||
'[if ...]', and for '[otherwise]' or '[end if]' used with no matching
|
||||
'[if ...]'.
|
||||
- Problem message added for actions applying to two non-object values at once,
|
||||
and bug fixed which (sometimes) caused this to generate a spurious
|
||||
problem message on the wrong action.
|
||||
- Problem message added for "...an X with L", where L is a literal value
|
||||
such as a number, rather than the previous internal error.
|
||||
- Problem message added for "X is a value that varies", which doesn't say
|
||||
what kind of value it is, rather than the previous internal error.
|
||||
- Problem message added for relations created between kinds of value with
|
||||
an infinite range, in those cases where this is forbidden because
|
||||
the run-time storage needed would be impracticable.
|
||||
- Problem message added for compiled descriptions which contain local variables
|
||||
(which will no longer exist when these descriptions need to be used:
|
||||
this resulted in enigmatic "subtype of oversized local" internal errors).
|
||||
- Problem message added for calling a variable simply "variable", as in
|
||||
"The favourite son is a variable."
|
||||
|
||||
## Bug fixes
|
||||
|
||||
- Bug fixed in which I7 could sometimes crash on being asked to place rule A
|
||||
after or before rule B in rulebook R, when B is not in fact in R: an
|
||||
explanatory problem message has been added to respond to this.
|
||||
- Bug fixed in which a room could not be called simply "Void".
|
||||
- Bug fixed in which boxed quotations would sometimes produce array lookup
|
||||
errors. (A bug introduced only in 3V01: apologies.)
|
||||
- Bug fixed in which text containing an "[if ...]" and then an "[otherwise]"
|
||||
but no "[end if]" and finally a substitution containing an ambiguity
|
||||
not soluble at compile time would sometimes generate I6 code missing
|
||||
a label definition, causing I6 to reject the output of I7.
|
||||
- Bug fixed in which number variables initialised to negative numbers would
|
||||
be created with the wrong value.
|
||||
- Bug fixed in which attempts to match a snippet against a non-topic would
|
||||
crash the virtual machine: they now produce a new run-time problem.
|
||||
- Bug fixed in which reaching inside rules affected removing differently from
|
||||
taking.
|
||||
- Bug fixed in which RELATIONS testing command gives incorrect output for
|
||||
some object-to-value relationships.
|
||||
- Bug fixed in which actions applying to two values, and using the word "with"
|
||||
in their names, were not always possible to categorise as named actions.
|
||||
- Bug fixed whereby "(with nouns reversed)" did not work when applied to actions
|
||||
whose names consisted of a single word.
|
||||
- Bug fixed to do with "P of the X of Y", e.g., "price of the bag of sweets",
|
||||
being misread.
|
||||
- Bug fixed whereby "let Name be Value" would sometimes create Name with the
|
||||
wrong kind of value (e.g. a time instead of an object) in cases where
|
||||
the Value part was susceptible to multiple interpretations.
|
||||
- Bug fixed causing a value consisting of the lone word "entry" to cause an
|
||||
internal error.
|
||||
- Bug fixed whereby setting a description for generic player-characters would
|
||||
cause I6 to fail to compile I7's output.
|
||||
- Bug fixed whereby a test scenario specifying that the player must be "in the
|
||||
Holding Cell", etc., would crash due to misreading "holding" as the
|
||||
start of a requirement about what is being held; also, if a capital H is
|
||||
used for Holding, then this ambiguity no longer arises.
|
||||
- Bug fixed in which the problem message for an object whose name is purely
|
||||
textual would be followed by a spurious internal error.
|
||||
- Bug fixed in which a wrongly phrased condition followed by a "try ..."
|
||||
would sometimes produce an internal error as well as the intended
|
||||
problem message.
|
||||
- Bug fixed in which an "accidental clash of names" problem would similarly
|
||||
sometimes cause an internal error as well.
|
||||
- Bug fixed in which, once again, a problem reported in a "let X be Y" phrase
|
||||
might also lead to a bogus internal error later.
|
||||
- Bug fixed in which 'Definition:' at the end of the source, with no definition,
|
||||
would crash Inform.
|
||||
- Bug fixed in which a nameless new phrase, defined by just 'To:', would
|
||||
cause an internal error.
|
||||
- Bug fixed causing a close quotation mark to be omitted when quoting an
|
||||
incorrect "Understand..." sentence in certain problem messages.
|
||||
- Bug fixed in which definitions wrongly referring to properties would cause
|
||||
the right problem message to be reported, but on the wrong sentence.
|
||||
- Bug fixed in which I6 library (as included in 3Z95) failed to compile for
|
||||
purely I6 projects.
|
||||
|
||||
## Mac OS X app
|
||||
|
||||
- On both the Mac OS X and Windows applications, documentation searches now
|
||||
cover the examples as well as the main text, and search results are
|
||||
more clearly displayed.
|
||||
|
||||
## Windows app
|
||||
|
||||
- (Windows only) Images now appear in the game tab when running a Glulx game,
|
||||
rather than the place holder "[Image n]" text. (This brings the Windows
|
||||
application into line with the OS X one.)
|
||||
- (Windows only) The right-click menu for the source tab now includes a sub-menu
|
||||
to change the size of the text.
|
||||
- (Windows only) Ctrl-Delete and Ctrl-Backspace in the source tab no longer
|
||||
confuse the undo logic.
|
||||
- (Windows only) The cursor arrow keys now work in the game tab.
|
||||
- (Windows only) The toolbar should no longer appear corrupted on 24-bit displays.
|
||||
- (Windows only) When running Glulx games in the game tab, the
|
||||
stylehint_Proportional flag is now respected.
|
||||
- (Windows only) When running Glulx games in the game tab, glk_window_clear()
|
||||
now works.
|
172
notes/release/3-1.md
Normal file
172
notes/release/3-1.md
Normal file
|
@ -0,0 +1,172 @@
|
|||
# Release notes for Inform v3.1 (build 4F59)
|
||||
|
||||
This release was made on 21 December 2006, before Inform was open-sourced.
|
||||
At that time 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).
|
||||
|
||||
## Overview
|
||||
|
||||
The main purpose of this build is to publish a redesigned system for
|
||||
phrase and rule declarations, fixing a number of miscellaneous bugs,
|
||||
removing some exceptions and clarifying ambiguities in the existing design.
|
||||
Chapter 18 of the documentation is substantially rewritten as a result, and
|
||||
the Rules page of the index has been redesigned. We believe that the new
|
||||
design is much less ambiguous and, as a result, more fully explained than
|
||||
the old, but the removal of some of these ambiguities does mean that minor
|
||||
changes to some existing source text will be needed. If you have a work in
|
||||
progress nearing its completion, you may need to test that the new rules
|
||||
system does not change its behaviour.
|
||||
|
||||
## Language
|
||||
|
||||
- Phrases can be defined by "To ...:" (declaring a new phrase to be used in
|
||||
the definitions of other phrases), by "Definition:" (defining adjectives),
|
||||
by "At ...:" (declaring events to happen at given times) or as rules
|
||||
to go into rulebooks (for instance, "Instead of taking:" goes into the
|
||||
"instead" rulebook). In order to make it easier to tell immediately
|
||||
which of these four forms is intended:
|
||||
- (i) Rulebook names are now forbidden to begin with the words
|
||||
"To", "At" or "Definition". (So far as we are aware, nobody
|
||||
has ever done this, so this should not cause inconvenience.)
|
||||
- (ii) Events happening at a fixed time are written "At 3:02 AM:" or
|
||||
similar: events happening at some time not yet determined are
|
||||
now written "At the time when the clock chimes:" rather than,
|
||||
as in previous builds, just "When the clock chimes:". This
|
||||
removes the confusing ambiguity with scene start/end rules
|
||||
(e.g. "When Scene IV begins:") and with "When play begins:", etc.
|
||||
- When Inform adds rules to rulebooks, it sorts them so that more specifically
|
||||
applicable rules (say, "instead of taking the fish") come before vaguer
|
||||
ones ("instead of taking or dropping something"). The method of sorting
|
||||
used was largely unchanged from 3K27 to 4B91, but has now sharpened
|
||||
in the following ways:
|
||||
- (i) being "in" a room is considered more specific than in a region,
|
||||
- (ii) and in a subregion more specific than in a super-region,
|
||||
- (iii) "during..." clauses are now taken account of,
|
||||
- (iv) "in the presence of..." clauses are now taken account of,
|
||||
- (v) rules attached to a wider range of actions ("taking or dropping")
|
||||
are less specific than rules attached to a narrower range
|
||||
("taking"),
|
||||
- (vi) rules with longer or more complicated "when" conditions are
|
||||
considered more specific than those with shorter,
|
||||
- (vii) rules applying in a limited range of turns or for a limited
|
||||
number of times are considered more specific than other such
|
||||
rules if the number of turns in which the rule could apply
|
||||
is smaller.
|
||||
Though these changes may change the effect of some complicated source
|
||||
texts now standing, they should only really affect cases where rules
|
||||
were previously considered equally applicable.
|
||||
- When the Index shows the contents of a rulebook, it now uses a graphical
|
||||
notation to show which rules are considered more specific than which
|
||||
others. Hovering the mouse over one of the icons used in this notation
|
||||
causes a "tool tip" to be displayed which explains on what basis the
|
||||
decision was taken.
|
||||
- The special verb "to be listed", used to specify how named rules are listed
|
||||
in rulebooks, is now more flexible. The existing syntax remains:
|
||||
```
|
||||
The summer breeze rule is listed in the every turn rules.
|
||||
The summer breeze rule is listed after the chirping magpie rule
|
||||
in the every turn rules.
|
||||
The summer breeze rule is listed before the chirping magpie rule
|
||||
in the every turn rules.
|
||||
```
|
||||
And the following possibilities are added:
|
||||
```
|
||||
The summer breeze rule is listed first in the every turn rules.
|
||||
The summer breeze rule is listed last in the every turn rules.
|
||||
The can't eat unless edible rule is not listed in the check eating rules.
|
||||
The can't eat unless edible rule is not listed in any rulebook.
|
||||
The refined palate rule is listed instead of the can't eat unless
|
||||
edible rule in the check eating rules.
|
||||
```
|
||||
The last three possibilities allow rules to be abolished for the whole
|
||||
game without the need for procedural rules. (A rule abolished in this way
|
||||
still exists, it merely isn't found in rulebooks at the start of play.)
|
||||
This will make extensions which carry out large-scale library changes
|
||||
more efficient.
|
||||
- A "when/while" clause can now be attached to a rule in an object-based
|
||||
rulebook not derived from an activity. (These used to be the only
|
||||
rulebooks whose rules were not allowed a "when" clause, so the change
|
||||
removes an unnecessary exception.)
|
||||
- The synonym "final" for "last", in the context of rulebook placements, has
|
||||
been withdrawn - it was an unnecessary complication. Thus "The last
|
||||
chirping magpie rule:" still works, but "The final chirping magpie rule:"
|
||||
does not.
|
||||
- The new text substitution "[otherwise if ...]" has been added: this can be
|
||||
used in text, between "[if ...]" and "[end if]" substitutions, in just
|
||||
the same way that the phrase "otherwise if ..." can be used between
|
||||
"if ..." and "end if" phrases.
|
||||
- A new rulebook, "does the player mean", has been added to give the parser
|
||||
clues on how to disambiguate commands. (This offers facilities analogous
|
||||
to those provided by ChooseObjects in Inform 6, but applying to whole
|
||||
actions and not to nouns alone.) See the new section 16.16 in the
|
||||
documentation.
|
||||
- File extension for blorbed Glulx-format releases changed from ".zblorb"
|
||||
to ".gblorb". (Apologies: an oversight.)
|
||||
- The horizontal compass directions can no longer automatically be referred to
|
||||
by the word "wall", so that "examine the north wall" no longer generates
|
||||
the action of examining north. This was an old Infocom convention, carried
|
||||
over into Inform 6 for some years, but which causes problems more often
|
||||
than it confers benefits.
|
||||
|
||||
## Documentation, examples and extensions
|
||||
|
||||
### Examples
|
||||
|
||||
- Masochism Deli added to demonstrate "does the player mean..." rules.
|
||||
- Flotation added to demonstrate an object-based rulebook and named outcomes.
|
||||
- Being Peter added to demonstrate an action-based rulebook with named
|
||||
outcomes.
|
||||
- Bronze, 3 AM, MRE, Mr Spruce's Non-Modal Question, Chronic Hinting
|
||||
Syndrome, Fifty Times Fifty Ways, Happy Hour, Lakeside Living,
|
||||
Lemonade, Noisy Cricket, Patient Zero, Y Ask Y modified to show
|
||||
"otherwise if" better.
|
||||
- Barter Barter, Bribery, Bruneseau's Journey, The Dark Ages Revisited,
|
||||
Emma, Fragment of a Greek Tragedy, Mimicry, Minimal Movement,
|
||||
Nickel and Dimed, Stately Gardens, Under Contract, Waning Moon
|
||||
modified to get rid of now-unnecessary procedural rules and use
|
||||
"is not listed..." instead.
|
||||
- Aftershock, Crusoe, Get Axe, The Hang of Thursdays, Panache, Swigmore U,
|
||||
Uptempo, Zqlran Era 8 modified to get rid of now-unnecessary
|
||||
procedural rules and use "is listed instead of..." instead.
|
||||
- Instant Examine and Look modified to get rid of procedural rule in favor
|
||||
of a first rule in the turn sequence rules. Commentary added to
|
||||
explain how the procedural rule might be used and why the first-rule
|
||||
method might be preferable.
|
||||
- No Place Like Home reassigned to the Awarding Points section, as being
|
||||
more relevant there.
|
||||
- Strictly Ballroom corrected for a missing word.
|
||||
- Up and Up modified to use after going rather than before, as this is more
|
||||
reliable.
|
||||
- Beneath the Surface improved to make the chair a supporter.
|
||||
- Witnessed 1 expanded to include new "does the player mean..." rules,
|
||||
improving parsing behavior of the example.
|
||||
- The Night Before added to demonstrate "does the player mean..." rules to
|
||||
lower the parsing significance of body parts belonging to the player
|
||||
compared to those of other people;
|
||||
- Hudsucker Industries substantially updated to simplify logic, provide
|
||||
better parsing behavior using "does the player mean..." rules, and
|
||||
allow the player to refer to sorted letters by property.
|
||||
- Costa Rican Ornithology given slightly more explanation of the topic
|
||||
column, since this appears before the format has been fully introduced.
|
||||
- We, and the two gas diffusion examples, moved to a new location.
|
||||
- We given slightly more commentary to point users at extensions for
|
||||
changing library messages if they want to do so wholesale.
|
||||
- No Relation edited to discuss how Instead of going by... applies to
|
||||
vehicles and other objects.
|
||||
- Morning After edited for a typo in the commentary.
|
||||
- Uptown Girls edited for a typo in the source text.
|
||||
|
||||
## Bug fixes
|
||||
|
||||
- Bug fixed by which (on Windows only) accented letters sometimes caused
|
||||
confusion with digits.
|
||||
- Bug fixed by which a rule which applied e.g. "for the third to eighth time"
|
||||
(an explicit range of iterations) would generate code which failed to
|
||||
compile in I6.
|
||||
- Bug fixed in which rules "listed after" or "listed before" might give
|
||||
spurious problems if the rulebook named had a name including the
|
||||
word "with".
|
||||
- Bug fixed whereby the Glulx interpreter was not checked to see if it could
|
||||
provide pictures before being instructed so to do, which produced
|
||||
problems with some text-only Glulx interpreters.
|
141
notes/release/3-2.md
Normal file
141
notes/release/3-2.md
Normal file
|
@ -0,0 +1,141 @@
|
|||
# Release notes for Inform v3.2 (build 4K41)
|
||||
|
||||
This release was made on 23 January 2007, before Inform was open-sourced.
|
||||
At that time 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).
|
||||
|
||||
## Language
|
||||
|
||||
- New activities "clarifying the parser's choice of something" and "asking
|
||||
which do you mean" allow customisation of the familiar messages:
|
||||
```
|
||||
(the mahogany inlaid box)
|
||||
```
|
||||
and
|
||||
```
|
||||
Which do you mean, the mahogany inlaid box or the icebox?
|
||||
```
|
||||
- The rules for the sorting of grammar lines in the grammar for command verbs
|
||||
have been slightly changed. Few users should notice any difference, but
|
||||
one change means that grammar added to cover "mistakes" should now no
|
||||
longer be able to "mask" grammar for non-mistaken commands, something
|
||||
which had been reported previously as a bug.
|
||||
- A new rule called the "very unlikely to mean taking what's already carried
|
||||
rule" improves the parser's handling of TAKE SPLODGE when there are
|
||||
several splodges in different places, some of them carried.
|
||||
- Blue "help" icon added to "Does the player mean..." in the Rules index.
|
||||
|
||||
## Documentation, examples and extensions
|
||||
|
||||
### Examples
|
||||
|
||||
- Magneto's Revenge fixed to use "the person reaching" rather than "the
|
||||
person asked".
|
||||
- Changes to Waning Moon, Air Conditioning is Standard, and Fifty Times
|
||||
Fifty Ways to correct typos.
|
||||
- Veronica added to demonstrate leaving a region.
|
||||
- Numberless added to demonstrate two ways to emulate a switch statement.
|
||||
- Pine4 given a tiny fix to make its articles behave better.
|
||||
|
||||
### Extensions
|
||||
|
||||
- Punctuation Removal made bi-platform (and version number advanced to 2).
|
||||
- Version 4 of Plurality by Emily Short now responds correctly to
|
||||
male/female settings even if the items in question are not of the
|
||||
man/woman kind, and adds several further tokens.
|
||||
|
||||
## Problem messages
|
||||
|
||||
- Problem message added for attempting to use "Understand the command ... as
|
||||
... when ...", where some condition follows the "when": this has never
|
||||
been supported, but in previous builds the "when" clause was silently
|
||||
ignored.
|
||||
- Problem message added for attempting to use the "[text]" token in a
|
||||
table entry or a ... matches ... condition, where it is not allowed.
|
||||
|
||||
## Bug fixes
|
||||
|
||||
- A long-standing bug fixed whereby things introduced without an article would
|
||||
sometimes be given one, rather than being consider proper nouns (or mass
|
||||
nouns): for instance, in "The player carries a small key, a tent, and
|
||||
Variety Magazine.", the source text clearly suggests that Variety
|
||||
Magazine is a proper noun, and I7 now recognises this.
|
||||
- Two bugs fixed to do with "when..." clauses attached to rules in unusual
|
||||
situations - both bugs having appeared only in 4F59. One related to
|
||||
rules in the form "check A when B", where A is an action including
|
||||
the word "it" (such as "telling it about") and B a condition; the
|
||||
other to "when" clauses attached to object-based rulebooks known never
|
||||
to run during activities, notably the reaching inside rules. In each
|
||||
case spurious problem messages were generated.
|
||||
- Bug fixed so that things are no longer "lockable" by default. (Instead,
|
||||
locked containers and locked doors are lockable by default.)
|
||||
- Bug fixed whereby an instruction like "Understand "[any actor]" as James
|
||||
Bond." would generate I6 code failing to compile through I6.
|
||||
- Bug fixed whereby one token to match an object making use of another one
|
||||
would sometimes find the result corrupted: for instance,
|
||||
```
|
||||
Understand "leg of [person]" as a leg.
|
||||
```
|
||||
would get confused between the leg and the person whose leg it is said
|
||||
to be.
|
||||
- Bug fixed whereby some combinations of name words and tokens to match the
|
||||
names of objects did not work.
|
||||
- Bug fixed whereby meaningless text would sometimes match a "[number]" token
|
||||
when parsing. Moreover, "[number]" has been improved so that it now
|
||||
matches any literal decimal between -32768 and 32767 inclusive (i.e., the
|
||||
full 16-bit range of signed integers supported by the Z-machine) rather
|
||||
than duplicating the peculiar behaviour of the I6 number-parser, which
|
||||
worked only on non-negative numbers up to 10000.
|
||||
- Bug fixed which caused too many things (and rooms) to have plural forms of
|
||||
their names recognised: for instance, a "red chair" would be referrable
|
||||
to in the plural as "red chairs" even if it was the only one, and this
|
||||
would cause ambiguity if a second object were in the same place and
|
||||
with its main singular name coincidentally "chairs". The convention
|
||||
now is that an object can be referred to in the plural with a name
|
||||
inherited from its kind if and only if it has no name of its own. (This
|
||||
change sounds substantial, but in fact did not change the behaviour of
|
||||
any of the examples.)
|
||||
- Bug fixed whereby large numbers of identical objects could cause mysterious
|
||||
things to happen if ever 64 of them are in the same place at the same
|
||||
time. (In fact an I6 library bug: thank due to Martin Bays for his fix,
|
||||
which is patch L61125.)
|
||||
- Bug fixed in which two things without names of their own were sometimes
|
||||
considered "indistinguishable" by the I6 parser, and therefore grouped
|
||||
into a plural (e.g., "six red blocks"), when in fact they were
|
||||
distinguishable by virtue of having a visible property which differed
|
||||
between the two (e.g., some being red, some being blue).
|
||||
- Bug fixed causing documentation of examples in extensions to have any
|
||||
Inform 6 fragments in (- ... -) brackets lose the -). In particular,
|
||||
this affected the example in Menus by Emily Short.
|
||||
- A limit on the number of different "in the presence of..." clauses
|
||||
allowed in a single source text has been removed. (Previously it stood
|
||||
at 100: now there is no limit.)
|
||||
- A limit on the number of different noun- and scope-filtering tokens
|
||||
allowed in a single source text has been removed. (Previously it stood
|
||||
at 100: now there is no limit.)
|
||||
- A limit on the number of new kinds of value which could be created by a
|
||||
single source text has been removed. (Previously it stood at 400: now
|
||||
there is no limit.)
|
||||
- Two bugs fixed causing crashes in unlikely circumstances after a problem
|
||||
has been encountered.
|
||||
|
||||
## Mac OS X app
|
||||
|
||||
- 4K40 contained a bug making it unreliable under Mac OS X on G4 or G5
|
||||
processors: 4K41 is believed to fix this, with our apologies for the
|
||||
inconvenience. In all other respects it is identical to 4K40 and
|
||||
Mac OS X users with Intel processors need not download again.
|
||||
- (Mac OS X only) The Skein's appearance has been redesigned, and an illustrated
|
||||
tutorial to the new-look Skein now appears as section 1.8 of the
|
||||
documentation for the OS X application. (We hope that similar changes
|
||||
will be made shortly in the Windows application.)
|
||||
- (Mac OS X only) The Skein panel now has a Layout... button for customising
|
||||
the width and height proportions of the skein display.
|
||||
|
||||
## Windows app
|
||||
|
||||
- (Windows only) Documentation links from the Index tab now work with Internet
|
||||
Explorer 7.
|
||||
- (Windows only) The size, italic, text colour and background colour style hints
|
||||
are now supported when running a Glulx game in the game tab.
|
1004
notes/release/4-1.md
Normal file
1004
notes/release/4-1.md
Normal file
File diff suppressed because it is too large
Load diff
732
notes/release/4-2.md
Normal file
732
notes/release/4-2.md
Normal file
|
@ -0,0 +1,732 @@
|
|||
# Release notes for Inform v4.2 (builds 4U65 and 4U67)
|
||||
|
||||
This release was made on 7 May 2007, before Inform was open-sourced.
|
||||
At that time 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).
|
||||
|
||||
## Overview
|
||||
|
||||
This build once again fixes all bugs reported up to 22 April, but in fact
|
||||
few were found in 4S08; and it removes a hole in the type-checking system,
|
||||
to do with phrases to make decisions, but this will have affected few users.
|
||||
The main aim is an across-the-board reform of how actions are handled and
|
||||
implemented in Inform. Proposals (6.33), (6.35), (6.37) and (6.39) from the
|
||||
January 2007 consultation document are all carried through. It is now much
|
||||
easier to create actions which work equally for all actors, and which need
|
||||
a complicated interaction of rules to work.
|
||||
|
||||
## Language
|
||||
|
||||
## Documentation, examples and extensions
|
||||
|
||||
### Examples
|
||||
|
||||
- New example "Croft" added to demonstrate action variables.
|
||||
- The now usually unnecessary word "trying" (see above) has been removed from
|
||||
most of the examples involving actions.
|
||||
|
||||
## Mac OS X app
|
||||
|
||||
- Build 4U67, for Mac OS X only, is identical to 4U65 except for the OS X user
|
||||
interface, in which the secondary controls in the various different panels
|
||||
have been harmonised into new-style bar icons. (In addition, new forward
|
||||
and back arrows provide the long-requested "browser-style history buttons".)
|
||||
We are releasing this now rather than waiting because it also fixes the
|
||||
minor but annoying bug to do with selecting detail pages in the Actions
|
||||
index (see the 4U65 release notes).
|
||||
- A minor bug in the OS X application means that viewing the new details
|
||||
pages for actions in the index will cause the application to think we
|
||||
have switched to the Documentation panel, with the effect that the tabs
|
||||
normally present for switching between index pages will disappear:
|
||||
switching panel and going back to the Index will cure this. Apologies
|
||||
for the inconvenience: the bug will be fixed in the next release.
|
||||
- Fixed bug in 4S08 for OS X only which caused Inform to create spurious empty
|
||||
Materials folders in cases where this was not really necessary (although
|
||||
this did no harm, and could not damage any existing Materials folder).
|
||||
|
||||
## Windows app
|
||||
|
||||
- Skein and Transcript improvements:
|
||||
- A single click on a red badge in the skein is enough to go to the knot
|
||||
in the transcript, rather than a double click as before.
|
||||
- Any knot can be shown in the transcript by selecting "Show in
|
||||
transcript" from the context menu or clicking on a red badge, not just
|
||||
knots in the current thread.
|
||||
- A knot selected in the above way is now indicated in the transcript by
|
||||
having a thin blue border around it.
|
||||
- The last played knot is now indicated in the transcript by having a
|
||||
yellow border around it.
|
||||
- The thick line in the skein now always shows the thread that is visible in
|
||||
the transcript.
|
||||
- The new menu item "Play All Blessed" plays through all threads that end in a
|
||||
knot with an expected transcript.
|
||||
- If the expected text in the transcript tab is double clicked on, the window
|
||||
goes into edit mode, in which the expected text can be amended.
|
||||
- When editing the expected text in the transcript tab, holding Ctrl+Enter
|
||||
adds a carriage return to the expected text.
|
||||
|
||||
## Linux app
|
||||
|
||||
- i7 now has the -r story-directory and -c story-directory command-line options.
|
||||
These force it into non-interactive mode, where it compiles or releases
|
||||
the story file and exits. They can be combined with -s (for settings)
|
||||
and -p (for prefix of installed inform7 package); see the man page for
|
||||
details. It is hoped that these options will be useful for IDE authors.
|
||||
|
||||
### Rulebooks
|
||||
|
||||
- Variables can now be given to rulebooks. For instance:
|
||||
```
|
||||
The every turn rulebook has a number called accumulated bonus.
|
||||
```
|
||||
creates a variable called "accumulated bonus", which holds a number.
|
||||
Such variables are initialised to the default values for the relevant
|
||||
kind when the rulebook starts, and are accessible only within rules
|
||||
belonging to that rulebook (or which have historically belonged to it,
|
||||
but been displaced by a "listed in... instead" sentence). Rulebook
|
||||
variables have a namespace of their own: so their names can freely
|
||||
clash with those of things, rooms, etc.) If the rulebook should
|
||||
recursively start again within itself, each new run-through of the
|
||||
rulebook has its own set of variables. In short, they behave exactly
|
||||
like "let" values except that they last for a whole rulebook, not an
|
||||
individual rule or To phrase. (This was (6.33) in the January document.)
|
||||
- As we can now add a potentially unlimited number of new clauses to the
|
||||
descriptions of actions to say whether or not rules apply (see below),
|
||||
Inform must refine its method for sorting rules in order of how specific
|
||||
they are. The rules on "going" are unchanged and we believe that no pair
|
||||
of existing rules not using the new features will have their orderings
|
||||
changed in any rulebook. Rules which do use new clauses are now subject
|
||||
to a new sorting principle, "III.2.4 - Action/Where/Other Optional
|
||||
Clauses". This follows the standard conventions.
|
||||
|
||||
### Activities
|
||||
|
||||
- Variables can also now be given to activities. These are created just
|
||||
before the "before" rules for the activity begin, and destroyed when
|
||||
the "after" rules end (or when the activity is abandoned, though this
|
||||
is a rare occurrence). They are visible to the rules for that activity,
|
||||
and nowhere else, and again they have their own namespace; again, if
|
||||
the activity should happen a second time within its first run, that
|
||||
second occurrence gets its own copies of the variables. A simple
|
||||
example of an activity variable:
|
||||
```
|
||||
Analysing something is an activity.
|
||||
The analysing activity has a text called first impression.
|
||||
Before analysing: now the first impression is "unremarkable".
|
||||
Rule for analysing someone: now the first impression is "living tissue".
|
||||
After analysing something (called the sample):
|
||||
say "Your professional opinion of [the sample] is that it is
|
||||
[first impression]."
|
||||
Instead of examining something (called the sample):
|
||||
carry out the analysing activity with the sample.
|
||||
```
|
||||
- If an activity is called X, we can now also refer to it as "the X activity"
|
||||
for clarity's sake. (As with rulebooks called Y, which can already be
|
||||
called "the Y rulebook". This has been done in order to make the syntax
|
||||
for creating activity variables more explicit in its intentions.)
|
||||
|
||||
### Actions
|
||||
|
||||
- Variables can also now be given to actions. These are created just before
|
||||
the "before" rules for the action begin, and destroyed when the action ends
|
||||
(by whatever means that should happen). If one action is interrupted by
|
||||
another, the new action gets its own copies of these variables.
|
||||
The names of action variables are visible only within rules in action-based
|
||||
rulebooks ("before", "carry out", etc.).
|
||||
But note that every action's variables are visible to every such rule -
|
||||
as has to be true, because we can have "before" rules which take effect
|
||||
for many different actions, for instance, and such rules might need
|
||||
access to any of their variables. In consequence, there is only one
|
||||
namespace for all action variables: if two different actions name
|
||||
a variable "item", say, clashes will occur. As a result, action variables
|
||||
should be named in a way marking out to which action they belong, and we
|
||||
recommend including the past participle of the action name - so for
|
||||
instance, "vehicle gone by", "door gone through", "sticky item taken", etc.
|
||||
A simple example of an action variable:
|
||||
```
|
||||
The singing action has a text called the lyric sung.
|
||||
Before singing: now the lyric sung is "Destruction of the empty spaces
|
||||
is my one and only crime."
|
||||
The block singing rule is not listed in any rulebook.
|
||||
Carry out singing: say "You cheerfully warble: [quotation mark]
|
||||
[lyric sung][quotation mark][paragraph break]".
|
||||
```
|
||||
One more warning: since any action-based rule can see all the action
|
||||
variables, it's possible to refer to the variables for an action which
|
||||
is not actually happening. For instance:
|
||||
```
|
||||
Before doing something when the lyric sung is "Yesterday..."
|
||||
```
|
||||
would compile without problems, but fail at run-time when any action
|
||||
other than singing was tried.
|
||||
- In the above example, the variable "lyric sung" was set in a before rule.
|
||||
In practice, though, it might be needed by other before rules, and then
|
||||
the order of operation of before rules would become uncomfortably
|
||||
important. To get around this, a new rulebook has been created: the
|
||||
"setting action variables" rulebook. For instance, we could write:
|
||||
```
|
||||
Setting action variables for singing:
|
||||
now the lyric sung is "Mystifying eyes."
|
||||
```
|
||||
This rulebook is run through before even the before rules, and could be
|
||||
used to detect the context and set variables accordingly: but it does
|
||||
not have any power to stop or change the action, and its rules should
|
||||
ideally say nothing and do nothing other than set rulebook variables,
|
||||
please. (Such a rulebook must work for any actor, not just the player:
|
||||
so if the idea is to set variables based on the local situation where
|
||||
the action will take place, look to see where the "actor" is, not
|
||||
where the "player" is.)
|
||||
- There is a new kind of value built into Inform: "action-name". (As its
|
||||
hyphenated name suggests, this is primarily intended for internal use,
|
||||
but there are no restrictions on it.) An action-name identifies the
|
||||
particular action but none of the nouns attached: it corresponds to
|
||||
numerical Inform 6 values such as ##Go. When an action called X is
|
||||
created, the constant value "the X action" is also created: thus
|
||||
"the looking action", "the putting it on action", etc., are all valid
|
||||
constant values of this kind. (For those who wish to make variables
|
||||
properties, table columns, etc., of this kind, the default value is
|
||||
"the waiting action", that being a sort of zero among actions.)
|
||||
- It is now legal to declare a "specification text" for an action, analogously
|
||||
with kinds, and this is used in the Actions index.
|
||||
|
||||
### Action-Based Rules
|
||||
|
||||
- Inform source text describes actions with so-called "action patterns", and
|
||||
these specify among other things who the actor must be. Up to now, there
|
||||
have only been two ways to specify the actor, as in these examples:
|
||||
```
|
||||
taking a container
|
||||
X trying taking a container
|
||||
```
|
||||
The former means the actor must be the player: the latter allows any
|
||||
description X so long as X is not the player. Thus,
|
||||
```
|
||||
someone trying taking a container
|
||||
```
|
||||
allows the actor to be any person in play except the player. This made
|
||||
it impossible to write a single rule applying to any actor equally.
|
||||
A new third form has been added to allow for this:
|
||||
```
|
||||
an actor taking a container
|
||||
```
|
||||
For instance, we could write:
|
||||
```
|
||||
Instead of an actor jumping: ...
|
||||
```
|
||||
This implements proposal (6.35) in the January document.
|
||||
- The second form of actor description above is often found to be clumsy:
|
||||
```
|
||||
Before X trying taking a container...
|
||||
try X trying eating the cake...
|
||||
```
|
||||
Here the word "trying" is cumbersome. In a few cases it is needed to
|
||||
make the text unambiguous, and if the description of the actual action
|
||||
is the name of a kind of action, it is positively a good thing:
|
||||
```
|
||||
Before X trying risky behaviour...
|
||||
```
|
||||
but very often it is a nuisance. The word is now optional provided that:
|
||||
- (a) the actor is described using a description ("someone", say, or
|
||||
"Captain Haddock") or a variable name;
|
||||
- (b) the eventual action is something explicit (like "taking...") rather
|
||||
than a named kind of action (like "risky behaviour");
|
||||
- (c) the action is being used in a "try" (or other phrase with an action
|
||||
as its parameter) or as the premiss for a rule.
|
||||
In other cases, "trying" will remain obligatory, but in practice they will
|
||||
be very few. The Examples for 4S08 contained some 120 uses of "trying"
|
||||
between them: this reform enabled every "trying" to be removed except one,
|
||||
```
|
||||
Instead of someone trying disorderly conduct in the presence of
|
||||
the policeman:
|
||||
```
|
||||
where it would clearly not be grammatical to remove it anyway.
|
||||
- As mentioned above, every action variable is visible from every action rule.
|
||||
But so far they have all been specific in nature to particular actions:
|
||||
for instance "lyric sung" makes no sense for non-singing actions. But
|
||||
we can also make general action variables, also visible from all action
|
||||
rules, by creating variables for the "action-processing rulebook".
|
||||
This is really a concept which has always existed - "noun" and "second
|
||||
noun" are exactly such variables. Joining them henceforth is "actor":
|
||||
the person trying the action.
|
||||
- Thus if existing source text contains references to something called
|
||||
simply "actor", perhaps in a work of IF about the theatre, it may now
|
||||
fail to work. (Something like "stage actor" or indeed "thespian" would
|
||||
of course work instead. When we made this change it affected only one of
|
||||
the Inform examples: Ballroom, which was previously using "actor" as a
|
||||
let value in just such a rule - we changed it to read "dancer" instead.)
|
||||
- Although the following is a bug fix, it is worth recording as a change in
|
||||
behaviour. The room description at the end of a going action to a new
|
||||
location is not technically the result of a looking action. (It doesn't
|
||||
quite do a LOOK: for instance, it suppresses the body text for a room
|
||||
visited before, and the paragraph spacing is different, etc.) In principle,
|
||||
then, during such a room description the action ought still to be "going",
|
||||
but that means that a rule such as
|
||||
```
|
||||
After printing the name of a person while looking: ...
|
||||
```
|
||||
would not take effect, which is clearly incorrect. This bug has been
|
||||
fixed and such a rule now takes effect.
|
||||
- It has always been the case up to now that the "going" action had a special
|
||||
status in Inform: it allowed special clauses such as "... through ..."
|
||||
(for the door gone through) not allowed for any other action, and this
|
||||
behaviour was hard-wired into the syntax of the language. The ability
|
||||
to create such clauses is now available to any action. For instance,
|
||||
the following adds "...into..." and "...onto..." to Inform's syntax
|
||||
for writing rules about dropping:
|
||||
```
|
||||
The dropping action has an object called the container dropped into
|
||||
(matched as "into").
|
||||
The dropping action has an object called the supporter dropped onto
|
||||
(matched as "onto").
|
||||
Rule for setting action variables for dropping:
|
||||
if the actor is in a container (called C), now the container dropped
|
||||
into is C;
|
||||
if the actor is on a supporter (called C), now the supporter dropped
|
||||
onto is C.
|
||||
```
|
||||
What's new here is the "(matched as...)" clause attached to the action
|
||||
variable. We have declared that "... into X" should test to see if the
|
||||
action variable "container dropped into" matches X, and similarly for "onto".
|
||||
As a result, we can now write:
|
||||
```
|
||||
Instead of dropping something onto something, say "Don't drop things
|
||||
onto platforms or ledges."
|
||||
Instead of dropping something into an open container, say "Don't drop
|
||||
things into open containers."
|
||||
```
|
||||
(Note that these clauses are only descriptions of the action: it makes no
|
||||
sense to write
|
||||
```
|
||||
try dropping A onto B;
|
||||
```
|
||||
since the question of whether or not B is dropped onto depends on where the
|
||||
player is, and is not something we can choose. Note that this is exactly
|
||||
the same position as "going" was in before: for instance,
|
||||
```
|
||||
try going east from the Ballroom;
|
||||
```
|
||||
was and is not allowed, because the question of whether it's from the
|
||||
Ballroom or not depends on where the player happens to be.)
|
||||
This change implements proposal (6.37) in the January document.
|
||||
- In previous builds, Inform has used a messy compromise in its handling of
|
||||
check, carry out and report rules. These sometimes look to the user as
|
||||
if they are single rulebooks: as if "check", for instance, is on a par
|
||||
with "before" (which is indeed a single rulebook). In fact, for efficiency
|
||||
reasons, there are individual check rulebooks for each action, as shown
|
||||
by the diagram at 12.2 in the documentation.
|
||||
Up to now, it has been legal to write a rule like
|
||||
```
|
||||
Check doing something: ...
|
||||
```
|
||||
even though this clearly can't belong to any rulebook in the diagram at
|
||||
12.2. What was actually happening was that the checking stage used _both_
|
||||
a single generic "check" rulebook _and_ a family of rulebooks with names
|
||||
like "check taking". Rules defined in the Standard Rules would always go
|
||||
into the individual rulebooks, but most (not quite all) rules created by
|
||||
the user would end up in the generic "check" rulebook. While this gave a
|
||||
pretty convincing illusion that all was well, it led to violations of
|
||||
the rule-sorting principle that specific rules come before generic ones
|
||||
("check doing something" would come before "check taking an open
|
||||
container in the presence of a vehicle when the time of day is 11:13 AM",
|
||||
say), and attempts to explicitly list rules into these rulebooks could
|
||||
have odd consequences because of misunderstandings between "check" and
|
||||
"check taking", say. Moreover, for implementation reasons, the actions
|
||||
in the Standard Rules created check, carry out and report rulebooks
|
||||
with funny properties which no other rulebooks had.
|
||||
All of this has been abolished:
|
||||
- the position is now strictly as shown in the diagram at section 12.2:
|
||||
there are now no generic "check", "carry out" or "report" rules.
|
||||
- all such rules are now placed into rulebooks specific to the actions
|
||||
they belong to. Thus, e.g.,
|
||||
```
|
||||
Check an actor going: ...
|
||||
```
|
||||
is filed in the "check going" rulebook.
|
||||
- problem messages now result from creating rules such as
|
||||
```
|
||||
Carry out doing something: ...
|
||||
Report dropping or taking a container: ...
|
||||
```
|
||||
which cannot be filed into single unambiguous rulebooks;
|
||||
- the Standard Rules now use the same action-creating syntax and
|
||||
semantics as anyone else.
|
||||
The one respect in which "check A", "carry out A" and "report A" rulebooks
|
||||
are unlike other rulebooks is that rules in them do not check that the
|
||||
action is indeed A. This is partly because there is no need (if we are
|
||||
looking at the check taking rulebook, the action must be taking) but
|
||||
mostly so that a single rule can be explicitly placed in the check (etc)
|
||||
rules for more than one action at once. For instance, if we write:
|
||||
```
|
||||
Check an actor taking (this is the hypothetical rule): ...
|
||||
```
|
||||
and then say
|
||||
```
|
||||
The hypothetical rule is listed in the check removing it from rulebook.
|
||||
```
|
||||
the rule can be effective in both rulebooks: if it tested to see that the
|
||||
action was taking, it would never have any effect in the check removing
|
||||
it from rulebook, and thus it would be impractical to share rules between
|
||||
more than one of these rulebooks - which would be inconvenient to the
|
||||
Standard Rules, and also to extensions wanting to consider or abide by
|
||||
rules from one action while processing another.
|
||||
- We appreciate that this will cause a small amount of pain (we had to change
|
||||
7 not-specifically-action-worded rules in the Inform examples) but we
|
||||
think the pain is worth it for the simplification resulting, and most
|
||||
such rules are fairly easy to recast. For instance,
|
||||
```
|
||||
Carry out doing something: ...
|
||||
```
|
||||
can probably become
|
||||
```
|
||||
Instead of doing something:
|
||||
...
|
||||
continue the action.
|
||||
```
|
||||
without any practical change in the outcome.
|
||||
- Detailed index pages on individual actions now appear in the Index. We hope
|
||||
these give a truer picture of what happens to any given action, by
|
||||
showing every rule which can affect it, and making the sequence more
|
||||
explicit.
|
||||
- Problem message added to catch action descriptions which name unknown actors
|
||||
(e.g. "Xerxes the Otherwise Never Mentioned examining the bucket" was
|
||||
being read as simply "examining the bucket").
|
||||
|
||||
### The Built-In Actions
|
||||
|
||||
- Inform provides about 70 built-in actions which form part of the model world.
|
||||
(That is, not counting out-of-world actions such as saving the game.)
|
||||
In previous builds these have been implemented using a special action
|
||||
definition syntax reserved for use of the Standard Rules only, and
|
||||
consisting essentially of tables of rule names against I6 identifiers:
|
||||
all the rules involved were implemented by I6 code. This was bad because
|
||||
it meant that the built-in actions were treated as special in all sorts
|
||||
of ways (not a very clean design technique) and because it was quite
|
||||
hard to work out how the built-in actions worked, since one needed to
|
||||
be able to puzzle out the I6 code at the bottom of all this. On the
|
||||
other hand, it had the advantage of speed, since Inform did not have
|
||||
to read and compile the built-in action rules from I7 source text.
|
||||
As discussed in the January document at (6.39), there are trade-offs
|
||||
here, but we have now bitten the bullet and reimplemented all of the
|
||||
(not out of world) actions in I7 source text.
|
||||
|
||||
### The Going Actions
|
||||
|
||||
- The "going" action is the second most complex in Inform ("looking" probably
|
||||
takes the palm) and the re-implementation in I7 has turned up two bugs
|
||||
which have also been fixed. In addition, numerous rules have been
|
||||
renamed or removed:
|
||||
- the can't go through concealed doors rule has been renamed
|
||||
the can't go through undescribed doors rule ("undescribed" being
|
||||
the I7 word for what I6 called "concealed");
|
||||
- the following rules have been abolished:
|
||||
```
|
||||
set up going rule
|
||||
check to see if in a vehicle rule
|
||||
determine direction property rule
|
||||
print textual map connections rule
|
||||
consult routine map connections rule
|
||||
determine what's through door rule
|
||||
```
|
||||
These all clumsily worked out what we now regard as action variables,
|
||||
except for the textual and routine map connections rules, which were
|
||||
to provide backwards compatibility with traditional I6 use of the map
|
||||
properties, which I7 doesn't recognise or use; however, we retain the
|
||||
```
|
||||
determine map connection rule
|
||||
```
|
||||
whose purpose now is to recalculate the "room gone to" variable
|
||||
immediately before the "can't go" check. (This is done because people
|
||||
often use before rules to modify the map, in order to make dynamic
|
||||
map structures which respond to movement.)
|
||||
- in the check rules, the can't go that way rule has been moved to after
|
||||
the rules checking on undescribed and closed doors: after all how is
|
||||
one to know that a door leads nowhere if it is closed? But if you do
|
||||
succeed in opening such a door and try going through it, the
|
||||
traditional I6 response "You can't, since the X leads nowhere."
|
||||
has been restored in place of I7's recent practice of simply saying
|
||||
"You can't go that way."
|
||||
- A bug has been fixed which caused a person other than the player getting
|
||||
off something to be reported as if he were getting out of it.
|
||||
|
||||
### The Looking Actions
|
||||
|
||||
- The following rules have been abolished:
|
||||
```
|
||||
consult LookRoutine entry point rule
|
||||
standard searching rule
|
||||
```
|
||||
The former provided vestigial I6 support; the latter in all cases did
|
||||
nothing.
|
||||
|
||||
### The Object Movement Actions
|
||||
|
||||
- Under the taking action, actors other than the player can now also use a
|
||||
"player's holdall" (if carried) to overcome carrying capacity limits.
|
||||
- The following rules have been abolished:
|
||||
```
|
||||
default inventory style rule
|
||||
check let-go-before rule
|
||||
check let-go-after rule
|
||||
check receive-before for supporter rule
|
||||
check receive-after for supporter rule
|
||||
check receive-before for container rule
|
||||
check receive-after for container rule
|
||||
```
|
||||
These provided vestigial I6 library support and are irrelevant for I7.
|
||||
- The following rules for the removing it from action have been abolished:
|
||||
```
|
||||
can't remove from closed containers rule
|
||||
check after-rules for taking too rule
|
||||
standard report removing rule
|
||||
```
|
||||
They had no effect in 4S08, having been pre-empted for some time by the
|
||||
automatic conversion of removing to taking: they had been left in the
|
||||
Standard Rules by accident but could never have any effect.
|
||||
- Similarly: the
|
||||
```
|
||||
can't insert component parts rule
|
||||
```
|
||||
was redundant in 4S08 and has been removed.
|
||||
|
||||
### The Actions Which Change the State of Things
|
||||
|
||||
- When the opening action by the player is successful, Inform shows the contents
|
||||
of what was opened, provided it was opaque (so that the contents were
|
||||
previously not visible) and provided that the player is not inside it.
|
||||
The rule causing this was called the
|
||||
```
|
||||
reveal any newly visible exterior rule
|
||||
```
|
||||
which is a misleading - it has been renamed the
|
||||
```
|
||||
reveal any newly visible interior rule
|
||||
```
|
||||
|
||||
### The Actions Involving Other People
|
||||
|
||||
- The following rules have been abolished:
|
||||
```
|
||||
check life property for giving rule
|
||||
check life property for showing rule
|
||||
check life property for waking rule
|
||||
check life property for throwing at rule
|
||||
check life property for attacking rule
|
||||
check life property for kissing rule
|
||||
check life property for answering rule
|
||||
check life property for telling rule
|
||||
check life property for asking rule
|
||||
check thrown-at rule
|
||||
```
|
||||
These provided vestigial I6 library support and are irrelevant for I7.
|
||||
- As for the do-nothing actions (see below), these are now also handled
|
||||
symmetrically for all actors. (Thus, for instance, the block attacking
|
||||
rule now blocks any actor attacking any other.)
|
||||
|
||||
### The Do Nothing Actions
|
||||
|
||||
- The actions indexed as "Actions which always do nothing unless rules
|
||||
intervene", which consist only of a single checking rule to block them,
|
||||
behaved asymmetrically in previous builds since they blocked the
|
||||
action for the player, but allowed it to run through untouched and
|
||||
with no rules applying for any other actor. This could result in odd
|
||||
transcripts such as:
|
||||
```
|
||||
> SING
|
||||
Your singing is abominable.
|
||||
> PETER, SING
|
||||
>
|
||||
```
|
||||
...because no rules at all fire for Peter trying singing, so the
|
||||
action succeeds by default, and nothing is said or done.
|
||||
In this build, the blocking rules for do-nothing actions now block
|
||||
all actors. Thus:
|
||||
```
|
||||
> PETER, SING
|
||||
Peter is unable to do that.
|
||||
```
|
||||
or with ACTIONS switched on:
|
||||
```
|
||||
> PETER, SING
|
||||
[asking Peter to try singing]
|
||||
[(1) Peter trying singing]
|
||||
[(1) Peter trying singing - failed the block singing rule]
|
||||
Peter is unable to do that.
|
||||
[asking Peter to try singing - succeeded]
|
||||
```
|
||||
This affects the actions:
|
||||
```
|
||||
Saying yes, Saying no, Burning, Waking up, Thinking, Smelling,
|
||||
Listening to, Tasting, Cutting, Jumping, Tying it to, Drinking,
|
||||
Saying sorry, Swearing obscenely, Swearing mildly, Swinging,
|
||||
Rubbing, Setting it to, Waving hands, Buying, Singing,
|
||||
Climbing, Sleeping
|
||||
```
|
||||
- While this is much more logical, and means that every (non-out-of-world)
|
||||
action in the Standard Rules now works equally for all actors, it does
|
||||
mean that a rule in the form:
|
||||
```
|
||||
After Peter trying singing: ...
|
||||
```
|
||||
will no longer work, because Peter's singing action will be blocked and
|
||||
never reach the "after" stage. To get around this:
|
||||
```
|
||||
Instead of Peter trying singing:
|
||||
...
|
||||
the rule succeeds.
|
||||
```
|
||||
Note the last line, forcing the action to be considered a success: actions
|
||||
stopped by instead rules are normally deemed to fail, but making this
|
||||
succeed means that no "Peter is unable to do that." text will be printed.
|
||||
|
||||
### Phrases
|
||||
|
||||
- Inform has been made a little stricter in when it allows certain phrases
|
||||
to be used. For instance, the phrase "decide on X", which chooses a
|
||||
value X, is now only allowed in a phrase "To decide which ..." - of
|
||||
course it didn't make sense anywhere else, but this is now policed.
|
||||
Similarly, "decide yes" is now restricted to phrases which need to
|
||||
decide if something is or isn't true, and so on. (We're pretty certain
|
||||
that this new check only rejects uses which do not at all achieve what
|
||||
they look as they ought to do.)
|
||||
- Similarly, "decide on X" now checks the kind of X to see if it matches the
|
||||
required kind. This may produce problems either at compile time, or
|
||||
at run-time. Note in particular that "nothing" is forbidden as a
|
||||
value to decide on if we are required to produce a particular kind
|
||||
of object such as, say, a "room", but is allowed if we are only required
|
||||
to produce an "object". (This agrees with the conventions used for
|
||||
variables.)
|
||||
- Finally, phrases to decide a value now return the default value of the
|
||||
appropriate kind if execution runs through to the end of the definition
|
||||
without having reach any "decide on X" phrase.
|
||||
- Problem message added to explain why two bracketed phrase terms immediately
|
||||
next to each other, with no word in between, is against the rules -
|
||||
e.g. "To combine (X - a number) (Y - a number)". (Previously Inform
|
||||
would allow the definition, but then never recognise it in source text,
|
||||
which was not a very helpful way of rejecting it.)
|
||||
- Bug fixed whereby setting up a phrase "To decide what X is ..." might
|
||||
read X as a description of a thing rather than a kind of value in
|
||||
cases where X is both the name of such a kind, and also part of the
|
||||
name of a thing. (For instance, if there is an object somewhere called
|
||||
"number puzzle", then a phrase "To decide what number is ..." was
|
||||
being misread as if its type had to be always the number puzzle object,
|
||||
not a number.)
|
||||
|
||||
### Properties
|
||||
|
||||
- Two changes have been made to the way that assertions about either/or
|
||||
properties of kinds are read. To demonstrate, consider the sentence in
|
||||
the Standard Rules which reads
|
||||
```
|
||||
A thing is usually inedible.
|
||||
```
|
||||
What if we want to contradict this? In previous builds, we could write:
|
||||
```
|
||||
A thing is never inedible.
|
||||
```
|
||||
This worked, but owing to a bug,
|
||||
```
|
||||
A thing is always edible.
|
||||
```
|
||||
did not work - this bug has now been fixed. In either of these sentences,
|
||||
we undo the sentence in the Standard Rules by writing a sentence which is
|
||||
more definite - certain ("never", "always") rather than merely likely
|
||||
("usually"). But what if we don't want extra certainty? In previous builds,
|
||||
writing
|
||||
```
|
||||
A thing is usually edible.
|
||||
```
|
||||
would have no effect, because when two inferences are drawn about the
|
||||
same property which contradict but which are each uncertain, the original
|
||||
first-drawn inference is allowed to stand, and the second is ignored.
|
||||
This convention has been reversed in the case of inferences drawn about
|
||||
properties of kinds:
|
||||
```
|
||||
A later uncertain assertion about a property of a kind beats
|
||||
an earlier uncertain assertion about the same property.
|
||||
```
|
||||
- Problem message added for saying that a kind has an either/or property
|
||||
without previously having said that it can have that property. This
|
||||
would usually not work anyway, but in previous builds, saying "K is
|
||||
usually openable." would make it so: Inform now insists that we write
|
||||
"K can be openable. K is usually openable.", as the documentation implies.
|
||||
(The examples A Haughty Spirit and Disappointment Bay 12 needed to be
|
||||
corrected in just this way.)
|
||||
- Problem message added (rather than internal error) to reject implications
|
||||
where the implied outcome is a value property rather than a simple
|
||||
either/or property like open/closed.
|
||||
- Problem message added to explain why "D can be X or Y" makes no sense if
|
||||
D is something qualified by adjectives - e.g. "An open door can be
|
||||
rickety or sturdy" makes no sense because the door still has to have the
|
||||
property even at times when it is not open. (Previously Inform simply
|
||||
ignored the adjectives, and assigned the property to the underlying kind.)
|
||||
- Bug fixed whereby saying "now X is P" could be misconstrued if P refers to a
|
||||
property but does so inexplicitly: for instance, "now X is the colour of
|
||||
the button" would try to change X to be equal to this colour whereas
|
||||
"now X is green" would simply change the colour of X. Both forms now
|
||||
change the properties, not the identity, of X.
|
||||
- Bug fixed whereby large numbers of either/or properties created for things,
|
||||
followed by an either/or property being created for rooms, would sometimes
|
||||
lead to bogus programming errors at run time.
|
||||
- Bug fixed whereby creating a new either/or property but giving its antonym
|
||||
as an existing one would sometimes wrongly be allowed, leading to
|
||||
peculiar run-time problem messages. (E.g. writing "The Catwalk can be
|
||||
flaming or unlit." causes this, because "unlit" is already the antonym
|
||||
of "lit", a property of things.)
|
||||
- Bug fixed whereby certain complicated forms of property assignment in
|
||||
assertions could cause an internal error (e.g., "Blinky is an ephemeral
|
||||
ghost with reaction "Boo!".").
|
||||
|
||||
### Miscellaneous
|
||||
|
||||
- Problem messages added for creating table columns whose names are articles
|
||||
or existing values such as literal numbers.
|
||||
- Problem message added (rather than internal error) for initialising a
|
||||
K that varies (where K is a kind) to the value "nothing". This is legal
|
||||
for an object that varies (though in 4S08 a bug blocked this), but not
|
||||
where the variable always has to hold something of a given kind.
|
||||
- Problem message added (rather than internal error) for an attempt to total
|
||||
the column of a table rather than a property.
|
||||
- Problem message added (rather than eventual I6 errors) for defining plurals
|
||||
using quotation marks, e.g., writing 'The plural of "coin" is monies.'
|
||||
rather than 'The plural of coin is monies.'
|
||||
- Better problem message added for close square brackets used wrongly as
|
||||
literals in quoted text.
|
||||
- Bug fixed whereby continuations of tables would sometimes wrongly be reported
|
||||
as containing columns not found in the original tables, and would
|
||||
sometimes (even when they worked) have their columns incorrectly matched
|
||||
up to the original table, in cases where the columns had been reordered.
|
||||
- Bug fixed whereby a compound sentence asserting a relationship both with a
|
||||
new specific object and also a new object described only generically by
|
||||
naming its kind, as in:
|
||||
```
|
||||
The big box contains a container and Peter.
|
||||
```
|
||||
...would fail complaining of an overly complicated relationship.
|
||||
- Bug fixed whereby the word "visible", redundantly used in a grammar token
|
||||
as in e.g.
|
||||
```
|
||||
Understand "inspect [any visible thing]" as examining.
|
||||
```
|
||||
would cause a hang because I6 scope loops can't be nested.
|
||||
- Bug fixed whereby hanging dependent clauses which depended on local variables
|
||||
would sometimes be construed unexpectedly. (This really only affected
|
||||
descriptions which were not very useful anyway, e.g., "the number of
|
||||
things worn by X which fit Y", which is not good style since it in
|
||||
fact evaluates the number of things worn by an X-which-fits-Y - that
|
||||
is, the "which fit Y" clause appends to X and not the things.)
|
||||
- Bug fixed whereby the "after reading a command" rulebook would sometimes
|
||||
fail to be able to replace matched text in a command in cases where it had
|
||||
been rewritten as a result of a "Which do you mean...?" question.
|
||||
- Bug fixed whereby the character @ could not be parsed at run-time, and an
|
||||
attempt to write something like 'Understand "@" as the giant at-symbol'
|
||||
would produce I6 errors.
|
||||
- Bug fixed whereby expressions containing more than one bracketed subexpression
|
||||
would sometimes be misparsed: e.g. "let a be (x + y) / (x - y)" would
|
||||
produce spurious problem messages despite being legal syntax.
|
||||
- Bug fixed whereby Definitions involving looking up entries in tables would
|
||||
sometimes compile through I7 but cause I6 errors.
|
||||
- Bug fixed whereby calculations of the other side of a door, or the direction
|
||||
taken by a door, would sometimes be incorrect in darkness.
|
||||
- Bug fixed whereby problems to do with variable initialisation were
|
||||
reported at the correct sentences but under the wrong headings.
|
377
notes/release/4-3.md
Normal file
377
notes/release/4-3.md
Normal file
|
@ -0,0 +1,377 @@
|
|||
# Release notes for Inform v4.3 (build 4W37)
|
||||
|
||||
This release was made on 27 July 2007, before Inform was open-sourced.
|
||||
At that time 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).
|
||||
|
||||
## Overview
|
||||
|
||||
This build adds 21 new examples and provides miscellaneous new features.
|
||||
Chief among these are substantial improvements to the parsing of names:
|
||||
nouns can now be recognized by their number or unit properties, and also by
|
||||
their relations, so that 'Understand "bottle of [something related by
|
||||
containment]" as the bottle' will parse BOTTLE OF SAND if and only if the
|
||||
sand is contained in the bottle. We have also made a tentative beginning on
|
||||
support for sound effects to match the existing support for illustrations.
|
||||
As usual a number of bugs are fixed, and although a few issues still remain
|
||||
(the current tally of open issues stands at 13, as compared with a peak of
|
||||
about 330 earlier this year) none are severe and most users seem to find
|
||||
that Inform is fairly reliable, so recent effort has gone into advancing
|
||||
the language rather than maintaining the compiler.
|
||||
|
||||
## Language
|
||||
|
||||
- The kind "player-character" has been abolished. Previously, this was a
|
||||
kind of person able to be the player's persona in the model world: for
|
||||
most games, there was only one player-character in existence, the one
|
||||
automatically created by Inform and called "yourself". From this point
|
||||
onwards, any "person" can be the player, and indeed "player" is now
|
||||
a person variable, not a player-character variable. This means that the
|
||||
player object can now be any man, woman or animal in the source text,
|
||||
and these can be switched between freely in play. Moreover, we can
|
||||
much more simply specify who the protagonist is:
|
||||
```
|
||||
Lord Bowler is a man in the Pavilion. The player is Lord Bowler.
|
||||
```
|
||||
If we do not specify the player's identity, the "yourself" is still
|
||||
created and used as before.
|
||||
This change will affect only works which create "player-characters" in
|
||||
their source text: to adapt them to work again, it should be enough
|
||||
simply to change every usage of the kind name "player-character" to
|
||||
"person", "man", "woman" or "animal" as appropriate.
|
||||
This change implements proposal (6.56) from the January 2007 consultation
|
||||
document.
|
||||
- Up to now, all scenes have been able to take place many times: if a
|
||||
scene ends, and then later on its starting conditions once again hold,
|
||||
then it will start all over again. This is sometimes very useful, but
|
||||
also a source of confusion, and it has led to people writing "S begins
|
||||
when ... for the first time" over and over to stop S from recurring.
|
||||
As from this build, a scene can be declared either as recurring or not
|
||||
when it is first created. So for instance:
|
||||
```
|
||||
Hourly Patrol is a recurring scene.
|
||||
Apocalyptic End is a scene.
|
||||
```
|
||||
makes one of each kind of scene. (An ordinary scene can also be declared
|
||||
as a "non-recurring scene" for clarity's sake.) Note that any scene
|
||||
declared as just "scene", and in particular any scene declared in
|
||||
source text for previous builds of Inform, is now non-recurring: so if
|
||||
you need a scene to recur in a work-in-progress, you need to insert the
|
||||
word "recurring" into its definition.
|
||||
This change implements proposal (6.52) from the January 2007 consultation
|
||||
document, though in a slightly different way from that proposed.
|
||||
- Partial sound support has been added to Inform: see the new sections 19.6
|
||||
and 19.7 of the documentation. As with picture support, Inform provides
|
||||
the groundwork and leaves it for more sophisticated extensions to go into
|
||||
more elaborate facilities. The present state of completion is that Inform
|
||||
can, on all platforms, read Ogg Vorbis or AIFF sound files from the
|
||||
Materials/Sounds folder for a project, and embed them correctly into a
|
||||
Blorbed Glulx story file, compiling correct code for the Glulx machine
|
||||
to play the sounds back at the appropriate moment. However, these
|
||||
sounds will only be audible in Windows Inform, or when playing a
|
||||
released Glulx story file in Windows Glulxe or Spatterlight for OS X:
|
||||
Glulx support for sound has been implemented in the glulx interpreter
|
||||
used in both Inform and Zoom for OS X, so that placeholder text is
|
||||
printed instead.
|
||||
Sound support was proposal (6.61) from the January 2007 document.
|
||||
- Up to now, the only properties which could be used as part of an object's
|
||||
name for parsing purposes were either/or properties and enumerated named
|
||||
properties. This restriction has been almost completely lifted: we
|
||||
can now understand properties whose kind is number, time, or a unit.
|
||||
For example:
|
||||
```
|
||||
An aspect ratio is a kind of value. 16:9 specifies an aspect ratio.
|
||||
A television is a kind of thing. A television has an aspect ratio.
|
||||
The widescreen TV is a television in the Office. The fifties TV is
|
||||
a television in the Office. The widescreen TV is 16:9. The fifties
|
||||
TV is 4:3. Understand the aspect ratio property as referring to
|
||||
a television.
|
||||
```
|
||||
...allows us to type EXAMINE 16:9 TV, for instance.
|
||||
In addition, further grammar used to specify unusual values is now
|
||||
recognised in such situations: for instance if we wrote...
|
||||
```
|
||||
Understand "European standard" as 16:9.
|
||||
```
|
||||
the EXAMINE EUROPEAN STANDARD TV would also work. (Previously this did
|
||||
not work, because the implementation was incomplete.)
|
||||
Finally, a problem message has been added for the (now fairly few) cases
|
||||
where the property still does have a kind which cannot be parsed:
|
||||
previously no problem was issued in cases Inform could not handle, and
|
||||
the feature simply did not work.
|
||||
(This change did not appear in the January document, but has been much
|
||||
requested since.)
|
||||
- A new form of grammar token has been added to enable names of objects (and
|
||||
rooms) to include names of other objects (and rooms) related to them.
|
||||
For instance, if we write:
|
||||
```
|
||||
A box is a kind of container. Understand "box of [something related
|
||||
by containment]" as a box. The Toyshop is a room. The red box is a
|
||||
box in the Toyshop. Some crayons are in the red box.
|
||||
```
|
||||
then TAKE BOX OF CRAYONS will work, because CRAYONS matches against
|
||||
"[something related by containment]" for the red box - or it does for
|
||||
as long as the crayons are there. We can have similar matches against
|
||||
relations of all kinds, but have to name the relation explicitly, using
|
||||
its one-word name. We can also reverse the sense:
|
||||
```
|
||||
A box is a kind of container. Understand "box in [something related
|
||||
by reversed containment]" as a box. The Toyshop is a room. The crate
|
||||
and the hammock are in the Toyshop. In the crate is a box. In the
|
||||
hammock is a box.
|
||||
```
|
||||
makes TAKE THE BOX IN THE HAMMOCK work. (Where more than one object
|
||||
matches the criterion, for instance if the original box contained both
|
||||
crayons and chalk, any of the names can be used.)
|
||||
- Inform normally decides whether an object has a singular or plural name,
|
||||
or whether it has a proper name, by looking at how it is first
|
||||
introduced. This mainly works well, but people have also asked for
|
||||
more explicit control, especially to cope with changes in an object
|
||||
during play. Accordingly, there are now two new either/or properties
|
||||
for all things:
|
||||
```
|
||||
A thing can be plural-named or singular-named.
|
||||
A thing can be proper-named or improper-named.
|
||||
```
|
||||
This change implements proposal (6.46) from the January 2007 document.
|
||||
- The phrase for changing the exits of a room can now accept "nothing" or,
|
||||
equivalently, "nowhere" as the new exit, thus allowing map connections
|
||||
to be explicitly deleted in play. For instance:
|
||||
```
|
||||
change the east exit of Stage to nowhere;
|
||||
```
|
||||
Bugs in type-checking to do with the handling of "nothing" have been
|
||||
removed.
|
||||
- Some authors have recently asked for the facility to make extensions go
|
||||
uncredited in the VERSION command output, since this might give away
|
||||
story details, or generally produce verbosely self-laudatory output.
|
||||
A new "authorial modesty" use option has been created for this purpose.
|
||||
Inform has to tread a careful line here, because people make extensions
|
||||
available under a Creative Commons licence which requires that they be
|
||||
credited: so you can only be modest about your own work. If the sentence:
|
||||
```
|
||||
Use authorial modesty.
|
||||
```
|
||||
is found in an extension, then its credit line is omitted from the VERSION
|
||||
output of any game using it. If the same sentence is found in the main
|
||||
source text of a work, then credits are omitted for every extension with
|
||||
the same author's name as the work itself. (In other words, it credits
|
||||
everyone else's extensions, but suppresses mention of your own.)
|
||||
The "say" phrase "[list of extension credits]" uses the same convention,
|
||||
but the new "say" phrase:
|
||||
```
|
||||
"[complete list of extension credits]"
|
||||
```
|
||||
ignores all these efforts at modesty and prints the whole list. (An
|
||||
otherwise modest author might want to print this posthumously after the
|
||||
end of play, for instance, or in response to a secret debugging command.)
|
||||
- The the ambient odour rule, the ambient sound rule and the block vaguely
|
||||
going rule now apply to actions by all actors, not just the player, so
|
||||
that (for instance) the command XERXES, LISTEN will be read as a
|
||||
request to listen to the ambient location, rather than printing out a
|
||||
parseresque objection such as "What do you want Xerxes to listen to?"
|
||||
- The grammar "switch on [something]" has been added to the standard rules,
|
||||
and has the same effect as "switch [something] on". This is more consistent
|
||||
with switching off.
|
||||
- The maximum length for an extension rubric has been increased from 250 to
|
||||
500 characters. (Rubrics exceeding that length are silently truncated
|
||||
in extension documentation.)
|
||||
- It is now allowed to create a temporary value (i.e., a local variable) with
|
||||
"let" whose name coincides with that of a thing, room or property.
|
||||
Previously this triggered problem messages, and was a particular problem
|
||||
for extensions and the Standard Rules, which had to avoid "let" names
|
||||
that might hit any of the things created by the user. (For instance,
|
||||
several people reported it as a bug that creating a property called
|
||||
"target" caused problems - this was because the Standard Rules use a
|
||||
"let" variable called "target" in places.)
|
||||
- The resolution of noun phrases has been slightly changed so that a single-word
|
||||
kind of value name will take precedence over the name of a thing or room
|
||||
in an assertion sentence. For instance:
|
||||
```
|
||||
The scene script is in the wardrobe.
|
||||
Grand Finale is a scene.
|
||||
```
|
||||
would previously have read "scene" as a reference to the scene script,
|
||||
a physical thing, not the kind of value "scene". (This in practice makes
|
||||
it easier to have rooms and things whose names include the names of
|
||||
kinds such as "number", "time" and so on.)
|
||||
|
||||
## Documentation, examples and extensions
|
||||
|
||||
### Examples
|
||||
|
||||
- "Lanista" parts 1 and 2 added to demonstrate randomized combat, first in
|
||||
a simple form and then with weaponry and an ATTACKING IT WITH action
|
||||
- "Night and Day" added to demonstrate recurring sequences of scenes
|
||||
- "Candy" added to demonstrate making a randomly selected item poisonous
|
||||
- "Puff of Orange Smoke" added to demonstrate redirecting all actions from
|
||||
one object to another
|
||||
- "Disappointment Bay" examples changed to the more geographically accurate
|
||||
Disenchantment Bay; typo fixed in the final, finished example
|
||||
- "Entrapment" modified to correct a bug due to changed handling of actions
|
||||
in recent releases of Inform
|
||||
- "Terror of the Sierra Madre", which demonstrates player-switching,
|
||||
greatly simplified as a result of the abolition of player-character
|
||||
- "Exit Strategy", demonstrating how to set up non-recurring scenes, removed
|
||||
(since all scenes are now non-recurring unless otherwise stated)
|
||||
- "Pine 3", "Pine 4", "The Prague Job", and "Space Patrol" modified to
|
||||
reflect the usage of "recurring" scenes
|
||||
- "Snip" modified to remove bugs and make use of the new ability to
|
||||
understand unit properties; "Snip Snip" withdrawn, as the hack it
|
||||
demonstrates is no longer needed and the same functionality was
|
||||
achieved instead by a single line added to "Snip"
|
||||
- "Totality" (example about scheduling an eclipse) given a "test me" script,
|
||||
and a syntax bug removed
|
||||
- "Dinner is Served" revised to work better when the object reached for
|
||||
is the second noun rather than the noun, and also to have less
|
||||
cryptic syntax; the test for the example has been extended
|
||||
- "Tilt" added to demonstrate an implementation of a deck of cards using
|
||||
individual card objects, in which ranks and suits of cards are
|
||||
automatically parsed
|
||||
- "Tilt 2" added to demonstrate an implementation of poker hands, where
|
||||
the cards in a player's inventory are described according to their
|
||||
value; illustrates use of a complex rulebook
|
||||
- "Tilt 3" added to demonstrate use of text colors to make poker suit
|
||||
symbols appear in red, under both Glulx and the Z-machine
|
||||
- "Aspect" added to demonstrate the automatic parsing of unit properties
|
||||
- "Channel" added to demonstrate the automatic parsing of number properties
|
||||
- "Channel 2" added to demonstrate a combination of advanced parsing
|
||||
features, in the creation of tunable televisions
|
||||
- "Cheese-makers" added to demonstrate a TALK TO action tied to a
|
||||
scene-structured plot
|
||||
- "Alias" added to demonstrate telephone-number-sized units functioning
|
||||
under Glulx
|
||||
- "Claims Adjustment" added to demonstrate a camera that produces instant
|
||||
photographs of things; the photographs can then be referred to as
|
||||
in X PHOTOGRAPH OF APPLE
|
||||
- "Puncak Jaya" added to demonstrate characters who can be referred to in
|
||||
their absence
|
||||
- "Cinco" added to demonstrate containers referred to by their contents
|
||||
- "Originals" added to demonstrate disambiguating objects from models of
|
||||
those objects
|
||||
- "Removal" simplified to use action variables rather than the more
|
||||
complicated source
|
||||
- "Gopher-wood" added to demonstrate the use of the proper-named attribute
|
||||
to change someone's name during play
|
||||
- "Carnivale" added to demonstrate the simple scoping case of a large object
|
||||
that should be visible from other rooms
|
||||
- "Rock Garden" added to demonstrate the simple scoping case of multiple
|
||||
rooms that can see into one another (as opposed to the rather more
|
||||
complex "Stately Gardens" which autogenerates a lot of room
|
||||
description as well)
|
||||
- "Latin Lessons" added to demonstrate supplying a missing noun when the
|
||||
action is being performed by someone other than the player
|
||||
- "Uber-Complete Clavier" (the big Unicode test) slightly changed so that
|
||||
it can now be compiled for Glulx as well as the Z-machine
|
||||
- Paragraph breaking adjusted in "In Fire or in Flood", "Misadventure",
|
||||
"Goat-Cheese and Sage Chicken", "Owen's Law"
|
||||
- Minor typos removed from "Wight", "Alpaca Farm", "Apples"
|
||||
|
||||
### Extensions
|
||||
|
||||
- "Glulx Text Effects" modified to make it easier to set custom colors
|
||||
for text in Glulx; this appropriates the color-management source from
|
||||
the extension "Simple Graphical Window" by Emily Short, so those
|
||||
using Simple Graphical Window should update to version 4 of the
|
||||
extension in order to avoid overlap. Advanced to version 2.
|
||||
- "Punctuation Removal" revised to include a phrase that corrects
|
||||
instances of "mr.", "mrs.", etc., to "mr", "mrs", and the like, to get
|
||||
around parsing frustrations commonly encountered with these titles.
|
||||
Also added the means to remove apostrophes as well as the other
|
||||
punctuation marks; example added for parsing such phrases as "Jack's
|
||||
tie" if and only if Jack is currently wearing the tie object. Version
|
||||
number advanced to 3.
|
||||
- A bug fixed in "Complex Listing to deal with the marking of regions";
|
||||
version number advanced to version 5.
|
||||
- Bug fixed in the screen-width-determining routine of "Basic Screen Effects".
|
||||
|
||||
## Bug fixes
|
||||
|
||||
- Bug fixed whereby past tense conditions in the form "in ... for the first time"
|
||||
would sometimes have the temporal requirement ignored, particular in the
|
||||
preambles to rules like:
|
||||
```
|
||||
Every turn when in the Hall of Mists for the first time;
|
||||
```
|
||||
- Bug fixed whereby rules which depend on action taking place at the same time
|
||||
as a compound condition would sometimes produce spurious problem messages:
|
||||
for instance,
|
||||
```
|
||||
Check turning the dial to when the number understood < 0 or the
|
||||
number understood > 99:
|
||||
```
|
||||
...is valid but generated a problem message in 4U67.
|
||||
- Bug fixed whereby "otherwise if ... begin" (which is incorrect since otherwise
|
||||
if divides the existing code block, rather than beginning a new one) led
|
||||
to I6 errors rather than a problem message.
|
||||
- Bug fixed whereby using "(called ...)" to create temporary named values at
|
||||
a time in the past such that they could not survive to the present
|
||||
would lead to I6 errors rather than a problem message.
|
||||
- Bug fixed whereby rules taking effect if "doing something to ..." and some
|
||||
description would sometimes false take effect when the action took a
|
||||
non-object as its noun, when the value which happened to have been
|
||||
typed coincided with the internal object number of an item matching
|
||||
the description.
|
||||
- Bug fixed whereby changing player to someone else and then back again, and
|
||||
then using the short name of the player, would crash both the Z and
|
||||
Glulx virtual machines at run-time.
|
||||
- Bug fixed whereby I7 would crash if told to understand empty text as something.
|
||||
(This is not allowed, and a problem message has been added.)
|
||||
- Bug fixed whereby scenes predicated on past tense actions ("Mayhem begins when
|
||||
we have waited") would cause an internal error.
|
||||
- Bug fixed whereby the condition "we have taken inventory" gave false positives
|
||||
after the first turn.
|
||||
- Bug fixed whereby nameless variables attached to activities gave internal
|
||||
errors rather than a problem message.
|
||||
- Bug fixed whereby creating an object called "nowhere" caused a crash rather
|
||||
than a problem message.
|
||||
- Bug fixed whereby grammar introducting alternative textual names for numbers
|
||||
(e.g. 'Understand "a/b/c" as 2.') could lead to I6 errors.
|
||||
- Bug fixed whereby vaguely named properties in adjective definitions would
|
||||
result in internal errors rather than a problem message.
|
||||
- Bug fixed whereby naming actions which happen to include "with" can create
|
||||
spurious out-of-play things (doing no harm, but doing no good either):
|
||||
for instance, "Unlocking the box with the key is bizarre behaviour."
|
||||
would create an object called "Unlocking the box", in addition to doing
|
||||
what it was supposed to do.
|
||||
- Bug fixed whereby matching the player's command against text rather than a
|
||||
topic would cause an interpreter crash at run-time.
|
||||
- Bug fixed whereby verbs defined as auxiliaries required participles to be
|
||||
named unnecessarily, contrary to the documentation: thus "The verb to be
|
||||
able to approach implies the approachability relation." would fail for
|
||||
no good reason.
|
||||
- A bug introduced by the actions rewrite in 4U65 caused player's holdall
|
||||
objects not to work properly if they were being worn rather than carried
|
||||
(as in the documentation's example "Sackcloth"). This is fixed: apologies.
|
||||
- In past builds the grammar token "[a number]", in Understand sentences, has
|
||||
required the number in question to be something which can be stored in
|
||||
a signed 16-bit variable, that is, to be between -32768 and 32767. This
|
||||
is correct for story files running on all versions of the Z-machine, but
|
||||
the Glulx virtual machine has 32-bit variables, so for Glulx the
|
||||
restriction is unnecessary. It has now been lifted: thus on Glulx, we
|
||||
can parse numbers in the range -2147483648 to 2147483647 inclusive.
|
||||
- The Inform 6 debugging verb DAEMONS (aka TIMERS), which is undocumented and
|
||||
meaningless in I7 since this lacks either daemons or timers in the crude
|
||||
I6 sense, could under some circumstances crash if tried in an I7 game.
|
||||
The verb is now removed altogether.
|
||||
|
||||
## Windows app
|
||||
|
||||
- All tabs (save the settings tab) have a row of buttons at the top of the
|
||||
tab, allowing navigation and access to common functionality,
|
||||
similar to the OS X application.
|
||||
- Fixed a bug preventing the installation of an extension with brackets in
|
||||
its name.
|
||||
- Added support for multiple windows to the game tab. Any combination of
|
||||
text, grid and graphics windows can be opened by a game running
|
||||
within the application.
|
||||
- Added support for graphics windows to the game tab. As a result, games
|
||||
using Emily Short's "Simple Graphical Window" and "Location Images"
|
||||
extensions will now work when run within the application.
|
||||
- Added support for timer events to the game tab. Combined with the above,
|
||||
games using the "Graphical Window Animation" extension will now work
|
||||
when run within the application.
|
||||
- If saving a project fails, the application now shows an error message.
|
||||
If the project was being saved as part of being closed, then
|
||||
after the error you get a chance to save to a different place.
|
367
notes/release/4-4.md
Normal file
367
notes/release/4-4.md
Normal file
|
@ -0,0 +1,367 @@
|
|||
# Release notes for Inform v4.4 (build 4X60)
|
||||
|
||||
This release was made on 23 August 2007, before Inform was open-sourced.
|
||||
At that time 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).
|
||||
|
||||
## Overview
|
||||
|
||||
This build adds 19 new examples and modernises a dozen others, and presents
|
||||
a new volume of built-in documentation: the Inform Recipe Book. It also
|
||||
provides new features for variable text, improves and extends table-handling,
|
||||
allows Glulx-format games to read and write files and communicate with
|
||||
external programs, and allows extensions to create more readable and
|
||||
useful documentation.
|
||||
|
||||
## Language
|
||||
|
||||
- The "[one of]" text substitution previously provided by Jon Ingold's
|
||||
extension "Text Variations", which built on code by Andrew Plotkin and
|
||||
Roger Firth, has now been adopted into Inform's core language. Examples
|
||||
of its use include:
|
||||
```
|
||||
say "You flip the coin. [one of]Heads[or]Tails[purely at random].";
|
||||
say "[one of]The phone rings[or]The phone rings a second time[or]The
|
||||
phone rings again[stopping].";
|
||||
say "You turn the light switch [one of]off[or]on[cycling]. Nothing
|
||||
happens.";
|
||||
say "The newspaper headline is: [one of]War Casualties
|
||||
[or]Terrorists[or]Banks[sticky random] [one of]Continue To Expand
|
||||
[or]Lose Out[sticky random].";
|
||||
say "The light changes randomly again; now it's [one of]green
|
||||
[or]amber[or]red[at random].";
|
||||
say "Zorro strides by, [one of]looking purposeful[or]grim-faced[or]deep
|
||||
in thought[or]suppressing a yawn[or]scratching his ribs[or]trying
|
||||
to conceal that he has cut himself shaving[as decreasingly
|
||||
likely outcomes].";
|
||||
say "You dip into the chapter on [one of]fish[or]mammals[or]birds
|
||||
[or]reptiles such as the black salamander[in random order]."
|
||||
```
|
||||
See the new section 5.6 in the documentation: note that "[as decreasingly
|
||||
likely outcomes]" and "[in random order]" are new options, the former
|
||||
using a tapering probability distribution, the latter a random permutation.
|
||||
- It should be noted that the new implementation of this substitution is
|
||||
completely different to the one provided by the extension. The previous
|
||||
method involved printing all the text to a buffer array, then hash-coding
|
||||
it and taking choices based on this hash, which meant that the same
|
||||
sequence of choices occurring twice in the same text would be effectively
|
||||
the same (because of having the same hash code); thus
|
||||
```
|
||||
"This is [one of]A[or]B[at random] versus [one of]A[or]B[at random]."
|
||||
```
|
||||
could never print "This is A versus A." or "This is B versus B." The new
|
||||
implementation treats each "[one of]..." individually. To get around this,
|
||||
define
|
||||
```
|
||||
To say A-or-B: say "[one of]A[or]B[at random]".
|
||||
```
|
||||
and then change the text to
|
||||
```
|
||||
"This is [A-or-B] versus [A-or-B]."
|
||||
```
|
||||
Furthermore, there is no buffer array, no hash code, and it is no longer
|
||||
possible to extract state information by deliberately printing the text
|
||||
with an incomplete "[one of]" construction. (To quote the Text Variations
|
||||
documentation: "a terrible way to solve that kind of problem", so we don't
|
||||
feel too bad about withdrawing it.) Thus the phrases "the index of the
|
||||
last buffer" and "the index of the buffer" no longer exist.
|
||||
In any case, the new implementation polices the use of the construction
|
||||
so that leaving it incomplete is no longer possible. "[one of]" must be
|
||||
matched by one of its possible conclusions "[purely at random]",
|
||||
"[stopping]", ..., or problem messages will be generated; similarly,
|
||||
"[or]" can only legally be used inside the construction. On the other
|
||||
hand, the new implementation does allow the construction to be nested, both
|
||||
explicitly in a single text and also implicitly (where a text substitution
|
||||
inside one of the options itself does something which also involves a
|
||||
"[one of]"), where the old implementation would silently have failed.
|
||||
As an explicit example:
|
||||
```
|
||||
"[one of]A palace on the [one of]Nile[or]Euphrates[purely at random]
|
||||
delta[or]A hovel by the [one of]Tigris[or]Rhine[purely at random]
|
||||
river[purely at random]."
|
||||
```
|
||||
In practice, if a work in progress used "Text Variations" and did not
|
||||
try to use "the index of the last buffer" then there is a good chance
|
||||
that simply deleting the line
|
||||
```
|
||||
Include Text Variations by Jon Ingold.
|
||||
```
|
||||
will be the only change required.
|
||||
We thank Jon Ingold and his collaborators for donating their design. The
|
||||
extension "Text Variations" will continue to be available from the website
|
||||
for the time being, but marked as no longer needed or compatible with
|
||||
builds from here onwards. We suggest that users uninstall it once they
|
||||
are sure that any works in progress continue to work without.
|
||||
This change implements proposal (6.20) from the January 2007 consultation
|
||||
document.
|
||||
- The run-time code for handling tables has been rewritten to improve its
|
||||
reliability and efficiency. A number of minor bugs have been fixed in
|
||||
the process, notably a failure to sort correctly on tables which contain
|
||||
mixed blank and non-blank rows, and a rarely occurring problem to do with
|
||||
storing the number 32739 in table entries under the Z-machine.
|
||||
- Table sorting is now carried out using a hybrid algorithm: insertion sort
|
||||
from 1 to 11 rows, and in-place mergesort for 12 rows and up. This is
|
||||
much faster on even medium-sized tables (e.g. about ten times faster on
|
||||
tables of 200 rows), and is also stable in all cases: that is, if
|
||||
two rows have the same value in the X column of a table, and that
|
||||
table is then sorted (forwards or backwards) on the X column, then
|
||||
they will stay the same side as each other. As a consequence, all sorts
|
||||
are idempotent, that is, performing the same sort operation twice always
|
||||
results in the second operation making no changes at all. (The previous
|
||||
algorithm was idempotent but, owing to a bug, not in all cases stable.)
|
||||
Insertion/in-place mergesort was chosen because we needed stability,
|
||||
O(n log n) average running time (together with good performance
|
||||
on nearly-sorted tables, which are the commonest usage cases in
|
||||
actual Inform source text), O(1) storage overhead (the Z-machine is
|
||||
extremely short of table space), and reasonably predictable stack usage.
|
||||
- Projects compiled for Glulx rather than the Z-machine now have the ability
|
||||
to make use of external files. Like sound effects and figures, these
|
||||
are declared and given names before use:
|
||||
```
|
||||
The File of Glaciers is called "ice".
|
||||
```
|
||||
This creates a new named constant "File of Glaciers" (whose kind of value
|
||||
is "external-file") for use in file contexts. (The prefix "binary file"
|
||||
rather than "file" can be used to make the file binary in the Glk sense,
|
||||
but the default is to use text files for all purposes.) Each file is
|
||||
considered to be owned by some project, identified by its IFID. By
|
||||
default, a newly declared file is owned by its own project, but we can
|
||||
also specify that we want to use somebody else's file, either explicitly
|
||||
or vaguely:
|
||||
```
|
||||
The file of Spectral Sequences (owned by project
|
||||
"4122DDA8-A153-46BC-8F57-42220F9D8795") is called "adams".
|
||||
The file of Boundaries (owned by another project) is called "milnor".
|
||||
```
|
||||
We can write or append to a file owned by anyone, but can only read a
|
||||
file whose ownership matches this description.
|
||||
External files are indexed in the Contents index, alongside figures and
|
||||
sound effects.
|
||||
Files sometimes exist, and sometimes do not: they are sometimes complete,
|
||||
sometimes only partly written. (For a file shared between two games
|
||||
running simultaneously, one might try to read a file the other is still
|
||||
in the middle of writing.) We can test this with:
|
||||
```
|
||||
if the file of Invariants exists...
|
||||
if ready to read the file of Invariants...
|
||||
```
|
||||
A file cannot be ready if it does not exist, so the latter is a stronger
|
||||
condition.
|
||||
- Tables can be saved to external files, and loaded them back in again, during
|
||||
play: all file-handling is done automatically. The user only needs to use
|
||||
the phrases:
|
||||
```
|
||||
read the File of Glaciers into the Table of Antarctic Features;
|
||||
write the File of Glaciers from the Table of Antarctic Features;
|
||||
```
|
||||
Blank entries are preserved; it is legal to write a small file into a
|
||||
large table, and if so, all unwritten entries are blanked; a run-time
|
||||
problem is shown if the file contains more rows or columns than will
|
||||
fit into the table which it is being loaded into; similarly, a run-time
|
||||
problem is shown on trying to write a table which contains data not
|
||||
safely exchangeable with other story files (or other compilations of
|
||||
itself).
|
||||
- Text can also be saved to a file, and again all file-handling is automatic:
|
||||
```
|
||||
write "Jackdaws love my big sphinx of quartz." to the file of
|
||||
Abecedary Wisdom;
|
||||
append "Jinxed wizards pluck ivy from the big quilt." to the file of
|
||||
Abecedary Wisdom;
|
||||
```
|
||||
The quoted text can, of course, contain substitutions, so can be
|
||||
long and complex if need be. On an append, the file is created if it does
|
||||
not already exist.
|
||||
- Text from a file is printed back with the text substitution:
|
||||
```
|
||||
"[text of the File of Abecedary Wisdom]"
|
||||
```
|
||||
To copy one file to another, for instance,
|
||||
```
|
||||
write "[text of the file of Abecedary Wisdom]" to the file of
|
||||
Secondary Wisdom;
|
||||
```
|
||||
- The implications to do with lockability have been improved:
|
||||
```
|
||||
A locked thing is usually lockable.
|
||||
A locked container is usually closed.
|
||||
A locked door is usually closed.
|
||||
A lockable container is usually openable.
|
||||
A lockable door is usually openable.
|
||||
```
|
||||
Thus writing "The ballot box is a locked container." will now deduce that
|
||||
the box is probably lockable, closed but openable. These are only guesses
|
||||
by Inform, and can be overridden by giving explicit instructions to the
|
||||
contrary: "The ballot box is a locked unopenable container."
|
||||
- Definitions of adjectives, which previously had to refer to their subjects
|
||||
only by the pronoun "it" (or in some cases "his", "her", etc.), can now
|
||||
make callings. For instance:
|
||||
```
|
||||
Definition: a direction (called thataway) is viable if the
|
||||
room thataway from the location is a room.
|
||||
```
|
||||
is a good deal easier to read than
|
||||
```
|
||||
Definition: a direction is viable if the room it from the location
|
||||
is a room.
|
||||
```
|
||||
which was previously the only way to write this. Only a single calling
|
||||
can be made, and it must refer to the specific object to which the
|
||||
definition applies.
|
||||
- A new rule in the Standard Rules, the "can only take things rule", prevents
|
||||
the taking of objects which are not things - for instance, rooms or
|
||||
directions. (Such an action can never normally be generated by the
|
||||
grammar for typed commands, but if Understand sentences are written
|
||||
to open the possibility then the player will see ugly "programming error"
|
||||
messages: the new rule prints a more suitable reply.)
|
||||
-Extension documentation can now request "paste into the source text" icons
|
||||
like those found in the main documentation and its examples. If an
|
||||
indented paragraph of quoted source text begins with an asterisk and
|
||||
then a colon, like so...
|
||||
```
|
||||
*: A dog is a kind of animal.
|
||||
```
|
||||
...then the asterisk-and-colon are replaced in the final documentation
|
||||
by a paste icon: clicking this will insert the copy which follows into
|
||||
the source text. The text to be pasted is considered to begin after the
|
||||
colon, and to continue until the next unindented text, i.e., it can
|
||||
run for many quoted paragraphs, but as soon as the quotation is broken
|
||||
the paste extent will end. Any tables within the quoted range should
|
||||
be safely rendered with tabs in between the columns.
|
||||
- Large extensions which need to include a large amount of documentation
|
||||
can now subdivide it using headings and/or subheadings, like so:
|
||||
```
|
||||
Chapter: Pesky Meddling Kids
|
||||
Section: Dog Food
|
||||
```
|
||||
A suitable table of contents with navigation links will be automatically
|
||||
added to the extension documentation, if so.
|
||||
- The Extensions chapter of the documentation has, appropriately enough, been
|
||||
extended: it now opens up a limited number of previously restricted
|
||||
syntaxes to public use. These will only be useful to experienced Inform 6
|
||||
programmers.
|
||||
- Fixed a further namespace clash: a "let" name can now coincide with the
|
||||
column name of a table. (This was preventing John Clemens's extension
|
||||
"Scheduled Activities" from working in recent builds.)
|
||||
|
||||
## Documentation, examples and extensions
|
||||
|
||||
- A new manual, The Inform Recipe Book, has been added to the application. It
|
||||
sits alongside the previous manual (Writing with Inform) and presents
|
||||
the examples thematically, with connecting advice and comparisons of
|
||||
techniques to achieve a wide range of IF effects. This should make the
|
||||
(now 357) examples much easier to browse and to borrow from.
|
||||
|
||||
### Examples
|
||||
|
||||
- "Radio Daze" example from Jon Ingold's Text Variations extension brought
|
||||
into the main documentation.
|
||||
- "Camp Bethel" added to demonstrate several other common applications of
|
||||
text alternatives.
|
||||
- "Chanel version 1" added to demonstrate paired "[i]...[/i]" and
|
||||
"[b]...[/b]" italic and boldface tags, similar to HTML's.
|
||||
- "Blink" added to demonstrate creating one's own text variations keyed
|
||||
to values, using the special terminology explained in the Extensions
|
||||
chapter.
|
||||
- "Uncommon Ground" added to demonstrate creating one's own text variations
|
||||
keyed to the identity of the player character.
|
||||
- "Labyrinth of Ghosts" added to demonstrate recording the deaths of all
|
||||
previous players of the story file by storing them in a file.
|
||||
- "Alien Invasion Part 23" added to demonstrate saving preference files
|
||||
from one game in a series for use in the next episode.
|
||||
- "Flathead News Network" added to demonstrate communicating with a simple
|
||||
Unix script running in the background, in order to provide live news
|
||||
headlines (drawn from RSS feeds) inside a story file.
|
||||
- "Ferragamo Again", "Straw Boater" slightly cleaned up to be better filed
|
||||
in the Recipe Book.
|
||||
- "Cinco" edited to fix a particularly bone-headed bug that vitiated the
|
||||
whole point of the example.
|
||||
- "When?" adjusted to slightly improve the way the example is described.
|
||||
- "Modern Conveniences" added to demonstrate standard kitchen and bathroom
|
||||
appliances.
|
||||
- "Do Pass Go" added to demonstrate a pair of dice.
|
||||
- "Mirror, Mirror" added to demonstrate remembering the current room
|
||||
description by preserving it in an external file.
|
||||
- "The Unbuttoned Elevator Affair" added as an example of a simpler lift
|
||||
than the elaborate one in "Dubai".
|
||||
- "Further Reasons Why All Poets Are Liars" added as an example of using
|
||||
action variables for an action which moves a box around internal
|
||||
positions inside a location; a much thinner version of this example,
|
||||
"A pushable box", has been removed.
|
||||
- "M. Melmoth's Duel" added, similarly to replace "Tinted wallpaper".
|
||||
- "The Second Oldest Problem" added to demonstrate using action variables
|
||||
to make the going action react to moving between dark rooms.
|
||||
- "Saint Eligius" added to demonstrate an additional comment added to a
|
||||
room description when the player first enters.
|
||||
- "Baritone, Bass" added to demonstrate defining the character at the
|
||||
start of play.
|
||||
- "Bic" added to demonstrate testing whether any defined objects are missing
|
||||
description properties.
|
||||
- "Meet Market" added to demonstrate relations involving multiple values.
|
||||
- "Depth" rewritten to improve the simulated geometry used to test whether
|
||||
an item could fit inside a container.
|
||||
- "Patient Zero," "Today Tomorrow," "Reporting rules for other characters'
|
||||
behavior," "Uptown Girls", "Full Moon" edited to take advantage of
|
||||
new text variation features.
|
||||
- "Belfry", "Bikini Atoll", "Dearth and the Maiden", "Hayes Code",
|
||||
"Lies", "Safety", "Undertomb" and "Weathering" all made into formal
|
||||
numbered examples rather than, as in previous builds, appearing in
|
||||
the running text of the manual.
|
||||
|
||||
### Extensions
|
||||
|
||||
- "Basic Screen Effects" very slightly updated so that the documentation
|
||||
is clearer about the lack of colored letters in Glulx, and suggests
|
||||
that the author turn to Glulx Text Effects for these capabilities
|
||||
instead; also given a new example to demonstrate forcing the player
|
||||
to type what we want him to type (since this is becoming something
|
||||
of a frequently-asked question); chapter and section headings and
|
||||
paste-able examples added.
|
||||
- "Basic Help Menu", "Glulx Text Effects", "Locksmith", "Menus",
|
||||
"Punctuation Removal" tagged so that the example can be pasted.
|
||||
- "Complex Listing", "Plurality" tagged and given chapter and section
|
||||
headings.
|
||||
|
||||
## Problem messages
|
||||
|
||||
- Problem message added for trying to use "[something related by...]" to
|
||||
understand something which can have no relations.
|
||||
|
||||
## Bug fixes
|
||||
|
||||
- Bug fixed (or, if you prefer, feature added) whereby sentences providing
|
||||
alternative names for times of day, like:
|
||||
```
|
||||
Understand "lunch time" as 11:30 am.
|
||||
```
|
||||
...now work as might be expected.
|
||||
- Bug fixed whereby Understand ... as a person would fail with I6 errors.
|
||||
(Apologies for this: an oversight in 4W37's abolition of the
|
||||
player-character kind, which had the same flaw, but nobody noticed
|
||||
because it was so little used.)
|
||||
- Bug fixed whereby "if S is not happening", for S a scene, would incorrectly
|
||||
think that a completed once-only scene was still happening.
|
||||
- Bug fixed whereby implications would in some cases be ignored in circumstances
|
||||
which it would be tiresome to write out, but to do with multiple things
|
||||
being simultaneously present, some qualifying and some not.
|
||||
- Bug fixed whereby using I7 to rerelease an existing I6 story file in
|
||||
blorbed format with bibliographic data would fail because of the lack
|
||||
of a room (needed to initialise certain room variables).
|
||||
- Bug fixed whereby a few either/or properties could not be changed in play
|
||||
without spurious run-time problems being produced. (In particular,
|
||||
"now X is transparent" or "now X is opaque" caused problems.)
|
||||
- Bug fixed whereby declaring that the player is a person who happens to be
|
||||
initially somewhere other than in the earliest-created room, or outside
|
||||
the map altogether, would cause programming errors or other strange
|
||||
phenomena at run-time.
|
||||
- Bug fixed where a player attempting to UNLOCK a door which is "locked" but
|
||||
which, unbeknownst to the player, has no matching key, would cause a
|
||||
run-time problem complaining about the lack of a "matching key" property.
|
||||
|
||||
## Windows app
|
||||
|
||||
- (Windows only) Added support for Glulx mouse events and hyperlinks to the
|
||||
game tab.
|
||||
- (Windows only) The justification style hint is now supported when running
|
||||
a Glulx game in the game tab. As a result, games using Emily Short's
|
||||
"Glulx Image Centering" will now work when run within the application.
|
856
notes/release/5-1.md
Normal file
856
notes/release/5-1.md
Normal file
|
@ -0,0 +1,856 @@
|
|||
# Release notes for Inform v5.1 (build 5G67)
|
||||
|
||||
This release was made on 10 November 2007, before Inform was open-sourced.
|
||||
At that time 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).
|
||||
|
||||
## Overview
|
||||
|
||||
This build presents substantially richer support for handling text: for the
|
||||
first time, arbitrary and manipulable strings of text are first-class values
|
||||
in Inform. Substantial internal reforms, notably a new implementation of
|
||||
the type-checker (now the third such), lead also to other improvements:
|
||||
notably the ability to store and play back entire actions, and a form of
|
||||
boolean type for the first time - "truth state". Finally, Inform is now
|
||||
available for three new operating systems: Mac OS X Leopard (10.5), and
|
||||
Fedora and Ubuntu Linux. We welcome Philip Chimento to the Inform team as
|
||||
the author of the Gnome user interface for Linux.
|
||||
|
||||
## Language
|
||||
|
||||
### Indexed Text
|
||||
|
||||
- A new kind of value, "indexed text", exists to hold text which can be internally
|
||||
examined or changed. Ordinary text values are automatically converted to
|
||||
indexed text format when necessary. For instance,
|
||||
```
|
||||
if character number 1 in "[score]" is "7", ...
|
||||
```
|
||||
implicitly converts the text of the current score to indexed form, allowing
|
||||
it to be looked at character-by-character, and then examines the first
|
||||
character: so the test passes if the first digit of the score is a 7.
|
||||
Memory is dynamically allocated to allow for such manipulations in a way
|
||||
transparent to the user (and on the Glulx virtual machine 3.1.0 or better,
|
||||
Inform story files can allocate arbitrarily large memory heaps).
|
||||
See the new Chapter 19, "Advanced Text", in the documentation.
|
||||
- Indexed text can be accessed by character, word, line or paragraph, with
|
||||
further options to allow for punctuation; and we can search text to see
|
||||
if it contains any other text, and if so, how many times.
|
||||
- Moreover, indexed texts can be matched against regular expressions, with
|
||||
replacement also possible. For instance: if V is indexed text, then
|
||||
```
|
||||
replace the regular expression "\d+" in V with "roughly \0"
|
||||
```
|
||||
inserts the word "roughly" in front of any number in V. The regular
|
||||
expression language supported by Inform is essentially that of Perl
|
||||
(once multiline mode, a Perl eccentricity, and hooks to embedded Perl
|
||||
code have been removed) and Inform's algorithm has been verified against
|
||||
Perl's own compliance tests: see the notes in section 19.6 for details.
|
||||
- A particularly interesting text to manipulate is the command most recently
|
||||
typed by the player. Inform stores such text in a kind of value called a
|
||||
"snippet", and - like "text" - this automatically converts to indexed text
|
||||
when necessary. Moreover, rules in the "reading a command" activity are
|
||||
allowed to rewrite the text and reparse the command - for instance,
|
||||
```
|
||||
After reading a command:
|
||||
let T be indexed text;
|
||||
let T be the player's command;
|
||||
replace the text "\p" in T with "";
|
||||
change the text of the player's command to T.
|
||||
```
|
||||
removes any punctuation characters from what the player has typed.
|
||||
- Indexed text table columns can be written to, and read in from, external files.
|
||||
|
||||
### Stored Action
|
||||
|
||||
- A new kind of value, "stored action", holds actions - not action names,
|
||||
but fully-specified actions, including the information about who does what
|
||||
and with what. (The default value is the player waiting.) If V is any
|
||||
value of this kind, then
|
||||
```
|
||||
try V
|
||||
try silently V
|
||||
silently try V
|
||||
```
|
||||
all work in the obvious way. The phrase
|
||||
```
|
||||
current action
|
||||
```
|
||||
returns the action currently under way. Stored actions can do anything
|
||||
that actions can do: in particular, they remember, if necessary, the exact
|
||||
wording of the player's command at the time they were stored - so that
|
||||
actions like "looking up 'x100' in the code book" can be stored and tried
|
||||
later on. Stored actions can be used in "let" variables, in table columns,
|
||||
in global variables, and also in properties. See the new section 12.20
|
||||
in "Writing with Inform".
|
||||
- To make an explicit stored action, we use the form of words "action of ...":
|
||||
for example,
|
||||
```
|
||||
The best idea yet is a stored action that varies.
|
||||
The best idea yet is the action of pushing the button.
|
||||
```
|
||||
- When making comparisons, we can of course compare any two stored action values:
|
||||
```
|
||||
let C be the current action;
|
||||
if C is the action of pushing the button, ...
|
||||
```
|
||||
Although "action of ..." specifies an exact action, we can omit this if
|
||||
we want to write a vague description of an action instead - but only when
|
||||
writing it in a condition:
|
||||
```
|
||||
if C is taking something, ...
|
||||
if C is doing something to the lever, ...
|
||||
```
|
||||
(If we had written
|
||||
```
|
||||
if C is the action of taking something, ...
|
||||
```
|
||||
Inform would have thrown up a Problem, because "taking something" is not
|
||||
a single, definite action, so cannot be a stored action.)
|
||||
- The constituent parts of a stored action can be accessed with the phrases:
|
||||
```
|
||||
action-name part of S
|
||||
noun part of S
|
||||
second noun part of S
|
||||
actor part of S
|
||||
```
|
||||
- As a convenient abbreviation for testing these, the condition
|
||||
```
|
||||
S involves X
|
||||
```
|
||||
is true if the object X appears as any of the noun, second noun or actor
|
||||
in S, and false otherwise.
|
||||
- The "try" and "action of" constructions are now allowed to specify explicit
|
||||
text in place of a topic in actions such as asking. (Beginners to Inform
|
||||
often think this must be possible, but up to now it hasn't been, because
|
||||
of the difference between a snippet and a text, etc.) For instance,
|
||||
```
|
||||
Instead of asking Biggles about "German flying machines":
|
||||
try asking Biggles about "aircraft".
|
||||
```
|
||||
- The kind of value "action-name", used to denote not a complete action but
|
||||
simply what form of action it is ("taking", "throwing it at", etc.) can
|
||||
now be said for the first time.
|
||||
- The premiss for a rule about actions can now make use of variables which
|
||||
exist only inside action rules: for instance,
|
||||
```
|
||||
Check an actor waving when the noun is not held by the actor: ...
|
||||
```
|
||||
which was previously not allowed because the second mention of "the actor"
|
||||
referred to an action variable which, in a strict reading of the Inform
|
||||
syntax, existed only inside the rule (i.e., after the colon). This seemed
|
||||
an unnatural restriction.
|
||||
- The change log for build 4U65 claimed that:
|
||||
```
|
||||
the can't go through concealed doors rule has been renamed the
|
||||
can't go through undescribed doors rule.
|
||||
```
|
||||
This turns out to have been completely untrue. We meant to, but forgot.
|
||||
The name change has now been effected. (For the reason why, see 4U65.)
|
||||
- Lastly, either a bug fix or a redefinition, according to taste: an action
|
||||
description using "... in ..." refers to the room where the action is to
|
||||
happen; up to now this has always meant the room where the player is, but
|
||||
that went contrary to the principle that actions ought to treat people
|
||||
equally. "... in ..." clauses now refer to the room which is the actor's
|
||||
location. Thus
|
||||
```
|
||||
Instead of an actor going east in the Vast Nothingness, ...
|
||||
```
|
||||
now has effect if the actor tries this in the V. N., not if the player
|
||||
happens to be there at a time when the actor (who might be anywhere)
|
||||
tries going east. This sounds a complicated change, but it's clearly much
|
||||
more logical, and we doubt if anyone relied on the old behaviour.
|
||||
|
||||
### Other Changes to Do With Kinds of Value
|
||||
|
||||
- A new kind of value, "truth state", represents one of two possible values:
|
||||
the constants "true" and "false". (By default, truth state variables and
|
||||
properties are false.) We can convert any condition to a truth state thus:
|
||||
```
|
||||
let victory be whether or not all the treasures are in the cabinet;
|
||||
```
|
||||
We can then examine a truth state by comparing it against true or false:
|
||||
```
|
||||
if victory is true, ...
|
||||
```
|
||||
In fact, this kind of value is not new, but is merely coming out into the
|
||||
open. If we try to write (say)
|
||||
```
|
||||
To decide what truth state is time is short: ...
|
||||
```
|
||||
then Inform will tell us to rewrite it in the more traditional form:
|
||||
```
|
||||
To decide if time is short: ...
|
||||
```
|
||||
A phrase to decide if something-or-other is exactly the same thing as a
|
||||
phrase to decide a truth state, and indeed, if we want to then we can use
|
||||
"decide on T", where T is a truth state, in its definition. For instance:
|
||||
```
|
||||
To decide if time is short:
|
||||
if the time of day is after 10 PM, decide on true;
|
||||
...
|
||||
decide on whether or not Jennifer is hurried.
|
||||
```
|
||||
"Decide on true" is exactly equivalent to the more normally used "decide
|
||||
yes", and of course it is optional. The last line is more interesting
|
||||
since it effectively delegates the answer to another condition.
|
||||
- The kind of value "object-based-rulebook" has been withdrawn: instead, such
|
||||
a value is now called an "object-based rulebook" and is a special case
|
||||
of a "rulebook". (The double hyphen was generally found to be clumsy, and
|
||||
often led to mistakes.)
|
||||
- The deprecated kind of value "string-of-text", which behaved identically to
|
||||
"text" in recent builds, has been withdrawn. It was mentioned in one
|
||||
example ("Panache") through a historical accident, but was otherwise
|
||||
undocumented.
|
||||
- A "let" variable can now optionally be created by giving its kind of value
|
||||
rather than its initial value - the initial value is then the default
|
||||
value for that kind. For instance,
|
||||
```
|
||||
let T be an indexed text;
|
||||
```
|
||||
creates a "let" variable called "T" to hold indexed text, and which is
|
||||
initially holding the blank text "".
|
||||
- A table column name can now optionally give its kind of value in brackets.
|
||||
Thus "darts tally (a number)" would create a column called "darts tally"
|
||||
whose contents were required to be numbers.
|
||||
- A phrase to decide a value is now checked to make sure that doesn't try to
|
||||
return a type which is not a value (something which typically produced
|
||||
problem messages in earlier builds, too, but less helpful ones).
|
||||
- Where a value property is declared for one kind of object as holding a value
|
||||
of kind of value X, and for another as holding kind of value Y, X and Y
|
||||
now have to agree: previously they were allowed to differ as long as they
|
||||
were each kinds of object, but this was not quite type-safe, and led to
|
||||
subtle bugs.
|
||||
- In previous builds of Inform, values of units had to be positive or zero:
|
||||
thus defining
|
||||
```
|
||||
An elevation is a kind of value. 100 cubits specifies an elevation.
|
||||
```
|
||||
creates a kind of value where -10 cubits, say, would not be a legal
|
||||
expression. Owing to a bug, however, no problem message was produced,
|
||||
and the minus sign was simply ignored - the value "-10 cubits" was read
|
||||
as if it were "10 cubits". This bug has been fixed, and a new convention
|
||||
adopted: if the initial specification of the unit is negative, then
|
||||
negative values are permitted, and otherwise not. Thus:
|
||||
```
|
||||
An elevation is a kind of value. -100 cubits specifies an elevation.
|
||||
```
|
||||
means that (say) "6 cubits" and "-3 cubits" are both legal.
|
||||
- When U is a numerical value - a number or a unit, that is - the phrase
|
||||
"random U from X to Y" now gives truer results for very large ranges
|
||||
in the Glulx virtual machine.
|
||||
- Bug fixed whereby "random U from X to Y" would sometimes seed the random
|
||||
number generator as a side-effect when X was greater than Y. This is now
|
||||
a symmetrical phrase - "a random number from 5 to 2" now has the same
|
||||
effect as "a random number from 2 to 5". (The phrase "seed the
|
||||
random-number generator with..." is the proper way to seed the RNG.)
|
||||
- If U is a unit, the phrases "random U", "U after X" and "U before X" have
|
||||
been withdrawn - these don't really make sense for unbounded ranges. (What
|
||||
is a random height? It's a question which can only be answered in context -
|
||||
a random height for buildings is quite unlike a random height for people.)
|
||||
- Problem message added to catch literal numbers (and literal units) which are
|
||||
too numerically large to fit into the Z-machine: for instance,
|
||||
```
|
||||
An RGB value is a kind of value. 255-255-255 specifies an RGB value.
|
||||
Scarlet is an RGB value which varies. Scarlet is 255-0-0.
|
||||
```
|
||||
...is fine in projects compiled for Glulx, but would overflow the
|
||||
16-bit word size on the Z-machine.
|
||||
- Bug fixed whereby nameless properties ("conditions" - not in the sense of
|
||||
"if", but in the sense of something being in good or bad condition, say)
|
||||
specified for kinds but only at the "usually" level of certainty would
|
||||
sometimes have such sentences ignored.
|
||||
- Problem message added for unit specifications which overlap or make ambiguous
|
||||
existing ways to write constant kinds of value; for instance,
|
||||
```
|
||||
"250" specifies a weight.
|
||||
```
|
||||
clearly clashes with Inform's existing notation for text.
|
||||
- Problem message added to catch the case of multiple initialisations of the
|
||||
same variable, for instance,
|
||||
```
|
||||
Foobar is a number which varies. Foobar is 1. Foobar is 2.
|
||||
```
|
||||
- Bug fixed whereby no problem was detected if a property required to hold one
|
||||
kind of object as a value (for instance, a property holding a room) was
|
||||
initialised by an assertion with another kind of object altogether (for
|
||||
instance, a container).
|
||||
- Bug fixed whereby spurious typechecking problems would be produced if the
|
||||
same kind of value was used both as a self-named property of one kind of
|
||||
thing, and also as the value of other-named properties of other kinds.
|
||||
- Bug fixed whereby conditions used for the start and end of a scene would not
|
||||
always be fully typechecked, if it appeared at least syntactically valid.
|
||||
For instance,
|
||||
```
|
||||
Fairytale Wedding begins when the player is kissing the frog.
|
||||
```
|
||||
looks superficially right, but in fact involves comparing an object
|
||||
(the player) with an action (kissing the frog) - something we may one day
|
||||
legalise in Inform, but which at present should be rejected. In builds
|
||||
before this one, it compiled but to a condition which was always false.
|
||||
- A number of subtle bugs have been fixed in handling ambiguous multiple-phrase
|
||||
text; if a phrase can be read as A or B, then A wins if
|
||||
- it has more fixed words;
|
||||
- they have the same number of fixed words, but A has more tokens;
|
||||
- taking fixed words alone, A is lexicographically earlier;
|
||||
- A is a subschema of B in the sense that each value of a token
|
||||
in B can be coerced to the corresponding kind of value in A;
|
||||
- A was created earlier than B in the source text;
|
||||
- fixed words of A occur earlier than B in the actual text parsed.
|
||||
In practice these changes cured some bugs, but did not change the
|
||||
interpretation of any text in the examples, and we expect they will
|
||||
probably not be noticed as changes by users. The final rule is notable
|
||||
for making phrases "right associative" when iterated, so for instance
|
||||
```
|
||||
two minutes before three minutes before 12:00 AM
|
||||
```
|
||||
is read as
|
||||
```
|
||||
two minutes before (three minutes before 12:00 AM)
|
||||
```
|
||||
rather than
|
||||
```
|
||||
(two minutes before three minutes) before 12:00 AM
|
||||
```
|
||||
and thus evaluates to 11:55 PM, not 11:59 PM.
|
||||
|
||||
### Miscellaneous Other Changes
|
||||
|
||||
- In order to reduce namespace clashes, a fairly significant change has
|
||||
been made to the way Inform reads noun phrases in the source text.
|
||||
Objects can, of course, be referred to using abbreviated names: for
|
||||
instance, if we write
|
||||
```
|
||||
The Great Hall of Infinity is a room.
|
||||
```
|
||||
then we can also write
|
||||
```
|
||||
The Panjandrum is a man in the Hall.
|
||||
```
|
||||
where "Hall" is a read as referring to the Great Hall of Infinity. This
|
||||
convention of course remains. However, the same is no longer allowed
|
||||
with names of kinds. Thus:
|
||||
```
|
||||
A Scrabble piece is a kind of thing. The Q is a piece.
|
||||
```
|
||||
will no longer work: the second assertion must be written out in full as
|
||||
```
|
||||
The Q is a Scrabble piece.
|
||||
```
|
||||
This led to tiny changes in six of the Examples (and detected a typo in
|
||||
a seventh), but in all cases the change was easily made and the result
|
||||
more legible or no worse than the original, so we hope that users will
|
||||
not find this change to the rules too inconvenient. The point of it is
|
||||
so that text such as:
|
||||
```
|
||||
Beautiful scenery is a kind of thing. A wall is a kind of thing.
|
||||
A wall is usually scenery.
|
||||
```
|
||||
will now work: previously the "scenery" in "A wall is usually scenery"
|
||||
was taken as referring to the "beautiful scenery" kind, not the built-in
|
||||
"scenery" property. (And so on for many other cases.)
|
||||
- An ambiguity has been removed from the syntax for actions. The convention
|
||||
when indicating an action by a character other than the player is that
|
||||
the full form reads like so:
|
||||
```
|
||||
Miss Hodges trying taking the lime
|
||||
```
|
||||
Inform, however, allows the usually redundant word "trying" to be omitted
|
||||
where this leads to no ambiguity. The change is that, for safety's sake,
|
||||
Inform now forbids this abbreviation where the object's name includes
|
||||
a participle (or indeed any word ending in "...ing"). This prevents, for
|
||||
instance,
|
||||
```
|
||||
Mr Geoffrey Taking
|
||||
```
|
||||
from being read as an action rather than a noun phrase, or (a case which
|
||||
actually arose for one of our users)
|
||||
```
|
||||
newspaper cutting
|
||||
```
|
||||
being read as the newspaper itself doing some cutting.
|
||||
- The accessibility rules have had one anomalous case removed. Previously,
|
||||
an object in another room was considered inaccessible, yet an object out
|
||||
of play was not. The only reason this rarely caused trouble was that
|
||||
actions involving such objects were seldom generated, because the parser's
|
||||
scope rules would prevent it from recognising commands referring to them.
|
||||
But it could occasionally happen, if a command such as TAKE ALL fired off
|
||||
a run of actions, and the outcome of an earlier take caused the object
|
||||
from a later take to be moved out of play; and with stored actions this
|
||||
sort of thing becomes much more likely to happen. At any rate the anomaly
|
||||
has been removed, but this had the consequence that a few examples
|
||||
which used physical things to represent abstract concepts went wrong.
|
||||
For instance,
|
||||
```
|
||||
An emotion is a kind of thing. Envy and gratitude are emotions.
|
||||
```
|
||||
is likely to produce a world in which "envy" and "gratitude" both exist
|
||||
as physical things but are permanently out of play. If we then write
|
||||
```
|
||||
Understand "experience [any emotion]" as experiencing.
|
||||
```
|
||||
then commands like EXPERIENCE ENVY will be recognised, but what happens
|
||||
next depends on how the action is defined. If like so:
|
||||
```
|
||||
Experiencing is an action applying to one thing.
|
||||
```
|
||||
then I7 will now strictly apply the rule that the thing must be touchable,
|
||||
that is, with no physical barriers between it and the player: which means
|
||||
EXPERIENCE ENVY will now fail accessibility. To get around this, define
|
||||
```
|
||||
Experiencing is an action applying to one visible thing.
|
||||
```
|
||||
instead: this weakens the requirement to the point where being allowed
|
||||
to refer to the object is enough. ("Visible" here means visible in the
|
||||
sense of parser scoping rules, not with one's own eyes: they are almost
|
||||
always the same thing, but "[any emotion]" overrode that.)
|
||||
- Another change which will probably make little difference, but which
|
||||
clears up an ambiguity: given two descriptions in the form (adjectives)
|
||||
plus (kind), which are of different kinds, and where Inform cannot prove
|
||||
that either is necessarily a special case of the other, then the one with
|
||||
more adjectives is now considered more specific - and this affects rule
|
||||
ordering. So, for instance,
|
||||
```
|
||||
Instead of examining an open door: ... (A)
|
||||
Instead of examining a vehicle: ... (B)
|
||||
```
|
||||
rule (A) is now considered more specific than (B), whereas in previous
|
||||
builds they were equally specific and so would appear in rulebooks in
|
||||
source text order. (This change made no difference to the behaviour of
|
||||
any of the examples, or any other of our test cases: it's pretty esoteric,
|
||||
but we are trying to reduce the number of ways source text ordering is
|
||||
used, where sensible.)
|
||||
- We can now give unusual or alternative names for the understanding of either/or
|
||||
properties, when these are used to describe objects. For instance, if we
|
||||
have:
|
||||
```
|
||||
The box is a container which is carried by the player.
|
||||
It is openable and closed.
|
||||
Understand the open property as referring to the box.
|
||||
```
|
||||
then EXAMINE OPEN BOX will work only if the box is open, and so forth. But
|
||||
we can now add:
|
||||
```
|
||||
Understand "opened" as open. Understand "shut/sealed" or "tightly
|
||||
sealed" as closed.
|
||||
```
|
||||
and now EXAMINE TIGHTLY SEALED BOX, etc., will work only when the box is
|
||||
closed.
|
||||
- "now T is X", to change the value of a table entry T to a value X, now works
|
||||
as might be expected. (This case seems to have been overlooked before: it
|
||||
wasn't intentionally left out of the design, and consistency clearly
|
||||
requires it.)
|
||||
- Previous restrictions on the use of "let" names, phrase parameters and
|
||||
table entries in text being written or appended to external files have
|
||||
been lifted. Thus:
|
||||
```
|
||||
The currently erased jotter is an object that varies.
|
||||
To erase (pad - a jotter):
|
||||
now the currently erased jotter is the pad;
|
||||
write "[heading of the currently erased jotter][paragraph break]"
|
||||
to the text file of the pad.
|
||||
```
|
||||
can now be done more simply thus:
|
||||
```
|
||||
To erase (pad - a jotter):
|
||||
now the currently erased jotter is the pad;
|
||||
write "[heading of the pad][paragraph break]" to the text file of the pad.
|
||||
```
|
||||
This affects both "write ... to ..." and "append ... to ...".
|
||||
- The location of external files written or read by Glulx story files now uses
|
||||
the same convention on both OS X and Windows. (In 4X60, Inform for OS X
|
||||
differed from this.) Such ".glkdata" files are now always stored in the
|
||||
same folder as the project "Whatever.inform", unless the user has created
|
||||
a "Files" subfolder of a "Whatever Materials" folder, in which case that
|
||||
will be used as the location.
|
||||
- The Kinds index now presents the initial state of either/or properties
|
||||
associated with kinds in a more legible way, avoiding double negatives.
|
||||
Thus
|
||||
```
|
||||
Not normally portable not fixed in place.
|
||||
```
|
||||
(which admittedly looks worse without the italic) is now written
|
||||
```
|
||||
Usually fixed in place not portable.
|
||||
```
|
||||
- The SHOWME testing command is now more detailed, and shows what properties
|
||||
an item or room currently possesses. For instance:
|
||||
```
|
||||
>showme guide
|
||||
Guide to Desert Fauna - book
|
||||
location: in Death Valley
|
||||
unlit; inedible; opaque; portable; singular-named; improper-named
|
||||
printed name: Guide to Desert Fauna
|
||||
printed plural name: books
|
||||
contents: Table of Critters
|
||||
```
|
||||
(This brings it roughly into line with the old I6 verb SHOWOBJ, but has
|
||||
much more legible output, since property values can be printed better.)
|
||||
- The syntax of phrases to access tables has tended to be annoyingly picky
|
||||
about prepositions: it has been liberalised a little, so that one can
|
||||
now write "from T" equivalently to "in T" in phrases like
|
||||
```
|
||||
choose a random row from the Table of Soft Fruit
|
||||
```
|
||||
Similarly, in the phrases with the form "choose ... row ...", either
|
||||
the definite or indefinite article can be used, or omitted altogether:
|
||||
there will be times when any of these may seem clearest. So any of
|
||||
these (for instance) will be allowed:
|
||||
```
|
||||
choose a random row from T
|
||||
choose the row with citrus entry of 5 from T
|
||||
choose blank row from T
|
||||
```
|
||||
- Use options can now specify numerical values, along with default values which
|
||||
the source text can choose to raise: this should help extension-writers
|
||||
who want to provide "enough" storage for the user's needs, since the
|
||||
user can now use such an option to tell the extension exactly how much
|
||||
he does need.
|
||||
- Bibliographic data text normally doesn't recognise text substitutions, for
|
||||
obvious reasons: it has to be literal text supplied to outside programs.
|
||||
(The story title, author's name, and so on.) It is now allowed to contain
|
||||
just one text substitution: ['] for a literal apostrophe. (This allows
|
||||
titles like "Summer of [']69" to be handled properly.)
|
||||
- The previous maximum of 500 I6 inclusions and use options used all at once
|
||||
in any single source text has now been removed.
|
||||
- Inform now chooses further contrasting colours for World Index maps which
|
||||
include more than 10 different regions, and now cycles through its
|
||||
colours rather than reverting to grey for subsequent regions when the
|
||||
shades run out.
|
||||
- Bug fixed whereby complicated descriptions involving the contents of a region
|
||||
would fail to work: for instance, "the number of rooms in R", where R
|
||||
is the name of a region, or "a random room in R", would return 0 and
|
||||
nothing respectively.
|
||||
- Bug fixed whereby releasing along with a custom website was not working
|
||||
(NI was issuing the wrong instructions to cBlorb, the packaging agent.
|
||||
Standard websites did work: only those with custom templates failed.)
|
||||
- Bug fixed whereby assemblies which involved properties as well as kinds
|
||||
would sometimes not always have those properties set, particularly if
|
||||
multiple assemblies took place with similar circumstances. For instance:
|
||||
```
|
||||
A box is a kind of container. An open box is in every room. A closed
|
||||
box is in every room.
|
||||
```
|
||||
- Bug fixed whereby a player's holdall which is a part of the player - rather
|
||||
than being carried or worn by the player - will now function correctly.
|
||||
(This was requested by someone wanting to implement "a robot or marsupial".)
|
||||
- Bug fixed whereby recent changes to table-handling caused properties of
|
||||
values to be wrongly read and written. (Typically a property of V would
|
||||
be confused with a property of the value whose numerical form at run-time
|
||||
was one less than V's.)
|
||||
- Bug fixed whereby route-finding (and counting shortest distances) through
|
||||
one-to-various relations would give wrong results, usually false claiming
|
||||
that no route existed.
|
||||
- Bug fixed whereby the phrase "direction of (D - door) from (R1 - room)"
|
||||
didn't work at all, really (it returned the I6 direction property, not the
|
||||
compass direction object - an elementary I6 mistake).
|
||||
- Bug fixed whereby after rules were being applied to out of world actions,
|
||||
in spite of the documentation's clear statement that they would not be.
|
||||
It is just possible that some authors might have relied on this working:
|
||||
to give after-effects to out of world actions, use the report rules.
|
||||
- Bug fixed whereby "change ... to ..." would sometimes cause I6 errors where
|
||||
the thing changed was a variable holding an object, and the value changed
|
||||
to was something other than an enumerated property-value constant.
|
||||
- Bug fixed whereby "if ...; otherwise if ... begin;" would cause I6 errors
|
||||
rather than produce a Problem message (to point out that "begin" should
|
||||
not be used with "otherwise if ..." clauses).
|
||||
- Bug fixed whereby placing items by referring to the currently discussed room
|
||||
as "here" would sometimes give strange results if (i) the current subject
|
||||
of discussion when the sentence is first read is not what will prove to
|
||||
be a room, and also (ii) the room being discussed most recently was
|
||||
created some time ago and other rooms had been created since then. The
|
||||
new interpretation of "here" should be more robust and predictable.
|
||||
- Bug fixed whereby restrictions applied to headings, such as
|
||||
```
|
||||
Volume 1 - not for release
|
||||
Volume 1 - for Glulx only
|
||||
```
|
||||
would be ignored (but only for Volume headings, not for headings of any
|
||||
other level).
|
||||
- Bug fixed whereby implications (such as "A locked thing is usually lockable.",
|
||||
an implication in the Standard Rules) are ignored if the thing to which
|
||||
they apply cannot have the property which is given as the consequence;
|
||||
previously, a somewhat mysterious problem message would be produced.
|
||||
- Bug fixed whereby implications would sometimes override definite statements
|
||||
made negatively (e.g. "A locked thing is usually openable" overriding
|
||||
"The safe is locked. The safe is not openable"); again, the symptom
|
||||
was usually a mysterious problem message.
|
||||
- Bug fixed whereby the use of a relation in an indirect clause with a value
|
||||
of a kind which is also used as a property, and has the same name as
|
||||
that property, would cause I6 errors.
|
||||
- Bug fixed whereby grammar using a newly defined token for a value belonging
|
||||
to a new kind of value, would cause I6 errors.
|
||||
- Bug fixed whereby giving alternatives in grammar for understanding specific
|
||||
times of day (e.g. 'Understand "lunch" or "lunch time" as 11:30 am.')
|
||||
would cause an internal error.
|
||||
- Bug fixed whereby a few malformed assertions involving impossible callings
|
||||
(e.g. 'X (called Y) and X has Y.') produced an internal error rather
|
||||
than a problem message.
|
||||
- Problem message added for attempts to create multiple objects with a single
|
||||
'called' clause ('Bill and Ben are men in the Garden.').
|
||||
- Bug fixed (or, in a sense, feature added) so that "X is a backdrop which is
|
||||
everywhere" will now successfully create an omnipresent backdrop;
|
||||
previously one had to write "X is a backdrop. X is everywhere."
|
||||
- Bug fixed whereby actions sometimes continued and reported even if the
|
||||
carry out rules had already killed the player.
|
||||
- Bug fixed whereby 'Understand ... as a mistake' would produce the mistake
|
||||
reply even when the text was being addressed to another person, rather
|
||||
than being intended as a command by the player.
|
||||
- Bug fixed whereby tokens for understanding names which involved various-to-one
|
||||
relationships to other objects would not work in concert with specific
|
||||
additional names made using 'Understand'. For example,
|
||||
```
|
||||
Understand "[something related by loyalty]" as a team.
|
||||
Understand "Glasgow Rangers" as a team.
|
||||
```
|
||||
would correctly match the token, but not the additional name, which would
|
||||
be ignored.
|
||||
- Bug fixed whereby "now the player is X" would be read differently from
|
||||
"change the player to X", and would not properly change perspective.
|
||||
- Bug fixed whereby an assertion sentence setting the description of the player
|
||||
caused a contradiction with the default setting for this made in the
|
||||
Standard Rules. For instance,
|
||||
```
|
||||
The description of the player is "Frankly harrassed-looking."
|
||||
```
|
||||
is now legal again. (It was legal in early builds of Inform, too.)
|
||||
- Slight anomaly resolved (it wasn't really a bug) in the determination of
|
||||
which items are concealed, using the "deciding the concealed possessions"
|
||||
activity: previously the activity would test items belonging to the player
|
||||
even though a subsequent rule would force them to be unconcealed regardless
|
||||
of the activity's decision - an actor can't conceal something from himself,
|
||||
since concealment in I7 by definition means concealment from the view
|
||||
of other people. Now, the activity is not asked about such items.
|
||||
- Bug fixed whereby "( -" was sometimes read as "(-", opening a passage of
|
||||
literal I6 code, which was unfortunate if it had actually been part of
|
||||
a calculation ("let X be ( -1 * count )", say).
|
||||
- Various bugs fixed to do with the use of the I6 string escape characters
|
||||
\, @, ~, ^ in I7 source text and quoted text (for instance, these followed
|
||||
by digits would in some cases cause I6 compilation errors).
|
||||
- Bug fixed whereby the parser would give slightly misleading replies if
|
||||
pronouns other than "her" were used in commands before they had ever
|
||||
been set.
|
||||
- Bug fixed whereby scenery items, never mentioned in room descriptions, could
|
||||
nevertheless silently become pronoun values. (Thus "it" might mean the
|
||||
sky in a room where the sky was scenery.)
|
||||
- Bug fixed whereby the parser would reply "That noun did not make sense in
|
||||
this context." in response to certain scope-filtering tokens where
|
||||
nonsense had been typed, but without a proper paragraph break.
|
||||
- Bug fixed whereby duplicate problem messages would result from a phrase
|
||||
defined with alternate wordings, but also defined incorrectly. (The
|
||||
problems would be repeated for each possible wording.)
|
||||
- Bug fixed whereby the "Use serial comma" option did not result in a serial
|
||||
comma being used in clarification questions like
|
||||
```
|
||||
Which do you mean, the fish, the fowl, the chalk, or the cheese?
|
||||
```
|
||||
- Documentation bug fixed whereby the "return to contents" links in Writing
|
||||
with Inform would sometimes return to the contents of the Recipe Book
|
||||
instead.
|
||||
- Problem message added to catch situations where the source text would require
|
||||
ridiculous lengths of time to parse, using Inform's normal algorithms:
|
||||
this is something which seems only ever to have happened to one user,
|
||||
through the accidental omission of lots of punctuation, but it had the
|
||||
effect of Inform apparently never completing compilation, which is
|
||||
inconvenient to recover from on some platforms.
|
||||
- Problem message added to clarify why some mixtures of actions like 'dropping
|
||||
the CD or inserting the CD into the jewel box' are not allowed as the
|
||||
premiss of a rule; and bug fixed whereby other illegal mixtures, such as
|
||||
'inserting the CD into the jewel box or dropping the CD' were previously
|
||||
miscompiling rather than producing a problem.
|
||||
- Problem message added to help diagnose a common mistake with 'if' phrases,
|
||||
missing out the 'begin' at the end.
|
||||
- Problem message added to explain why sentences like
|
||||
```
|
||||
Understand "take [things]" as "drop [things]".
|
||||
```
|
||||
are not allowed.
|
||||
- Problem message added to explain why sentences like
|
||||
```
|
||||
Understand "trevor, look" as looking.
|
||||
```
|
||||
are not allowed.
|
||||
- Problem message to catch attempts to use "carry out", "report" or "check"
|
||||
rules applied to named action patterns rather than specific actions;
|
||||
previously these would sometimes be allowed provided that some subset
|
||||
of their names coincided with the name of some actual action (but with
|
||||
unhappy results, since the rule would end up applying to that action,
|
||||
which would certainly not have been what the user intended).
|
||||
- The problem message produced by sentences like
|
||||
```
|
||||
The coin is in the strongbox.
|
||||
```
|
||||
(where "coin" is a kind of thing, so that this is too vague) has been
|
||||
lifted in the case of writing sentences like
|
||||
```
|
||||
One coin is in the strongbox.
|
||||
```
|
||||
since, after all, higher multiplicities like
|
||||
```
|
||||
Two coins are in the strongbox.
|
||||
```
|
||||
have always been allowed.
|
||||
- Problem message added for trying to define the same test name to mean two
|
||||
different tests.
|
||||
- Problem message added for trying to use a kind of thing to relate multiple
|
||||
objects to single values in single sentences. (Ideally this would work,
|
||||
but there are awkward implementation reasons why it doesn't, for the
|
||||
moment, and the problem message replaces a less polite internal error.)
|
||||
- Problem message clarified when trying to make a property which must hold an
|
||||
object of a given kind, when no objects of that kind exist anywhere, so
|
||||
that this property can never have a legal value.
|
||||
- Problem message added for contradictory indications of where something
|
||||
initially is, for instance,
|
||||
```
|
||||
Fred is in the Kitchen. Fred is in the Dining Room.
|
||||
```
|
||||
(How we overlooked this obvious case in four years of testing...)
|
||||
- Problem message added for an Understand attempting to give a name to
|
||||
an object qualified by a relative clause or properties. (The same effect
|
||||
can be achieved by other means - the problem message explains how.)
|
||||
- Problem message added for an attempt to test if a vaguely described past
|
||||
action succeeded. (Previously these apparently compiled, but gave
|
||||
usually wrong answers.)
|
||||
- Problem message added to give more helpful diagnosis if an action definition
|
||||
incorrectly gives a past participle longer than a single word.
|
||||
- Problem message added (rather than an internal error) for using a relation
|
||||
which relates objects to values in a "[something related by...]" token
|
||||
in an 'Understand' sentence.
|
||||
|
||||
## Documentation, examples and extensions
|
||||
|
||||
### Examples
|
||||
|
||||
- "Xot" added to demonstrate storing an erroneous command and replaying it
|
||||
later, as seen in Infocom's HHGttG.
|
||||
- "Terracottissima Maxima" added to demonstrate understanding an indexed text
|
||||
property.
|
||||
- "Fido" added to demonstrate a dog that the player is allowed to name and
|
||||
re-name.
|
||||
- "Pre-alpha" added to demonstrate a beta-testing command that allows the
|
||||
player to preface any line with a punctuation mark to show it is a comment.
|
||||
- "Blackout" added to demonstrate replacing letters in a printed name under
|
||||
certain circumstances.
|
||||
- "Identity Theft" added to demonstrate asking the player for a name at the
|
||||
start of play.
|
||||
- "Mr. Burns' Repast" added to demonstrate a fish that renames itself
|
||||
depending on how the player refers to it.
|
||||
- "Endurance" added to demonstrate a way of modeling time so that it depends
|
||||
flexibly on the actions undertaken during a turn.
|
||||
- "Uncommon Ground" tweaked to repair a couple of cosmetic flaws held over
|
||||
from earlier versions of the extension
|
||||
- "Panache" corrected to remove a reference to the elderly (and now
|
||||
withdrawn) type "string-of-text"
|
||||
- "Disenchantment Bay 12" corrected to remove a reference to the captain as
|
||||
"transparent", which was a holdover from a time (before the first public
|
||||
beta of Inform) when characters could be opaque or transparent and this
|
||||
quality would determine whether their possessions could be seen.
|
||||
- "Straw Into Gold" added to demonstrate a character whose name is concealed
|
||||
until the player guesses it.
|
||||
- "Celadon" added to demonstrate extending DROP to apply even to objects the
|
||||
player is carrying inside a container or on a supporter.
|
||||
- "Northstar" added to demonstrate modifying the player's command using a
|
||||
regular expression, so that ASK JOSH TO TAKE INVENTORY will be
|
||||
understood as JOSH, TAKE INVENTORY.
|
||||
- "Burning", "Gelato", "Originals", "Solitude", "Stately Gardens", "Tilt 2",
|
||||
and "Tilt 3" revised to make use of the new truth state kind of value.
|
||||
- "Cactus Will Outlive Us All" added to demonstrate stored actions and
|
||||
characters who respond when they occur.
|
||||
- "Anteaters" added to demonstrate stored actions that include topics.
|
||||
- "Bosch" added to demonstrate an alternative full score system using
|
||||
stored actions.
|
||||
- "Kyoto" revised to reflect the current state of the actions rules.
|
||||
- "Dinner is Served" revised to change the way closed containers are described.
|
||||
- "Chronic Hinting Syndrome" "Ferragamo Again", "Being Peter", "The Problem
|
||||
with Edith", and "Introduction to Juggling" revised to reflect new
|
||||
restrictions about acting on out-of-play objects.
|
||||
- "Broughton" revised to fix a very tiny bug in which "greeting" was not
|
||||
specified as a subject.
|
||||
- "Lucy" added to demonstrate redirecting the ASK command to a new topic
|
||||
other than the one the player typed.
|
||||
- "Fine Laid" added to demonstrate redirecting most actions from one object
|
||||
to another.
|
||||
- "Mirror, Mirror" revised to use indexed text rather than an external file,
|
||||
which means that it can be used in z-machine games as well.
|
||||
- "Actor's Studio" added to demonstrate a video camera that records actions
|
||||
occurring in its presence, then plays them back later.
|
||||
- "Capital City" added to demonstrate capitalized text in the status line.
|
||||
- "Rocket Man" added to demonstrate sentence- and title-casing for any to-say
|
||||
phrase.
|
||||
- "Rubies" added to demonstrate a scoreboard of high-scoring players.
|
||||
- "Witnessed", "Sand", "Modern Conveniences", "Hot Glass Looks Like Cold
|
||||
Glass", "Model Shop", "Nickel and Dimed" slightly changed to spell
|
||||
out kind names in full rather than use abbreviations.
|
||||
- "Situation Room" added to provide 24-hour time printing.
|
||||
- "Tamed" revised to get rid of the magician's booth being closed.
|
||||
- "Starry Void" added to demonstrate a simple case of a room whose exterior
|
||||
is visible from another room.
|
||||
- "The Cow Exonerated" added to demonstrate matches for starting fires, using
|
||||
indexed text to make the reporting more elegant.
|
||||
- "Savannah" added to demonstrate liquid used to put out fires.
|
||||
- "Slouching" added to demonstrate sitting, standing, and lying down postures
|
||||
for the player and other characters.
|
||||
- "Costa Rican Ornithology", "Crusoe", "Farewell", "Juggling", "Nickel and
|
||||
Dimed", "Money for Nothing", "Aftershock", "Channel 2" edited to make
|
||||
it easier to extract the generalizable portions for use in other games.
|
||||
- "Four Cheeses" edited for portability and to clean up a few clumsy
|
||||
phrasings due to the age of the example.
|
||||
- "Bogart" edited for portability and to remove a special-case bug.
|
||||
- "What Not To Wear" added to demonstrate a more complete clothing system
|
||||
combining layers with a concept of different regions of the body, for
|
||||
whole classes of shirts, trousers, etc.
|
||||
- "Port Royal 1" and "Port Royal 2" edited for length and clarity.
|
||||
|
||||
### Extensions
|
||||
|
||||
- "Basic Screen Effects" edited for a small bug that prevented the "show
|
||||
current quotation" phrase from being available under Glulx. Version
|
||||
advanced to 5.
|
||||
- "Glulx Entry Points" changed to treat glulx replacement command as indexed
|
||||
text, which means that it can be edited more flexibly or even
|
||||
constructed through multiple hyperlinks. Version advanced to 3.
|
||||
- "Locksmith" changed to make the "you lack a key..." message more flexible
|
||||
and keyed to individual objects. Version advanced to 4.
|
||||
- Minor one-line addition to the documentation of "Basic Help Menu" to
|
||||
clarify how to replace the enclosed menu with one of our own.
|
||||
|
||||
## Mac OS X app
|
||||
|
||||
- Mac OS 10.5 (Leopard) incompatibilities corrected; support added for
|
||||
QuickLook viewing of Inform projects, and for content-reflecting icons.
|
||||
- Bug fixed whereby replay and double-clicking in the skein sometimes failed to
|
||||
do anything.
|
||||
- Provisos such as "(for Glulx only)" are now removed from extension titles when
|
||||
making filenames for newly installed extensions.
|
||||
- The '+' button now works when adding Inform 6 extensions: in previous versions
|
||||
the only way to install a new Inform 6 extension was by dragging it to the
|
||||
window. Additionally, a bug has been fixed that was making it hard to
|
||||
add ORLib as a complete directory: in this new release it should be
|
||||
possible to just drag the ORLib directory to the Extensions pane and then
|
||||
use it by switching it on in the Settings tab of an Inform 6 project.
|
||||
- CocoaGlk 1.0.4 adopted, which includes a number of fixes:
|
||||
- Fixed an issue that could cause a crash if a text grid window ends up with
|
||||
a negative size
|
||||
- Fixed a problem that was causing games to crash under Leopard
|
||||
- Various stream calls will now produce a warning when they are passed a NULL
|
||||
stream instead of crashing with an error. (The old behaviour was
|
||||
technically correct, but gwindows was passing in NULL streams quite often)
|
||||
- Fixed an issue that was causing script files to be left empty until the
|
||||
user typed "script off"
|
||||
- Other minor changes:
|
||||
- (I6 projects) "Add breakpoint" in the main menu now works in either pane
|
||||
- Extensions are now displayed in alphabetical order
|
||||
- The "Open Extensions" menu can now view built-in extensions
|
||||
- Bug fixed whereby Glulx games were not saving transcripts correctly
|
||||
|
||||
## Windows app
|
||||
|
||||
- Fixed an intermittent crash in the I7 application, where it would stop
|
||||
with a dialog complaining about a "pure virtual function call".
|
||||
Thanks to Maryam Gousheh-Forgeot for helping track this problem
|
||||
down.
|
||||
- Added a headings menu to the source tab, following the similar menu on
|
||||
OS X. The menu initially shows the top-level headings in the
|
||||
source. Select a heading to go to it, or click on an arrow to
|
||||
see the sub-headings below that heading.
|
146
notes/release/5-2.md
Normal file
146
notes/release/5-2.md
Normal file
|
@ -0,0 +1,146 @@
|
|||
# Release notes for Inform v5.2 (build 5J39)
|
||||
|
||||
This release was made on 1 December 2007, before Inform was open-sourced.
|
||||
At that time 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).
|
||||
|
||||
## Overview
|
||||
|
||||
This build introduces lists as first-class values. For any kind of value K,
|
||||
"list of K" is now also a kind of value, and rich support is provided for
|
||||
building and iterating over lists, which are dynamically resized as
|
||||
necessary. Otherwise little is new, but once again all known bugs have
|
||||
been fixed.
|
||||
|
||||
## Language
|
||||
|
||||
- For any kind of value K, "list of K" is now also a kind of value. Lists
|
||||
resize automatically, can be iterated through, sorted, searched,
|
||||
reversed or rotated, and they have a notation enabling constant lists
|
||||
to be written down concisely: for instance,
|
||||
```
|
||||
let L be {2, 3, 5, 7, 11};
|
||||
```
|
||||
gives the temporary variable L the kind of value "list of numbers",
|
||||
and sets it initially to this sequence of five values, whereas
|
||||
```
|
||||
let M be the list of open doors;
|
||||
```
|
||||
gives M the kind of value "list of objects", and sets its initial
|
||||
contents to be all the doors which are currently open. (Lists can also
|
||||
be used in global variables, in properties, or table entries, and can
|
||||
include each other: "list of lists of numbers", say, is a kind of value.)
|
||||
Values can be added or removed at any point in a list; lists can be merged,
|
||||
or compared for differences; and examples are presented to show the
|
||||
use of lists as queues, stacks, rings, sets, arrays, and so forth.
|
||||
(All memory management is automatic and all bounds are automatically
|
||||
checked.) See the new Chapter 20 ("Lists").
|
||||
- The previous restriction whereby TEST scripts could not exceed 255 characters
|
||||
in length has been withdrawn. The new maximum is 9999 (a cap intended
|
||||
only to catch accidental runaway cases where the closing quote has been
|
||||
forgotten).
|
||||
|
||||
## Documentation, examples and extensions
|
||||
|
||||
### Examples
|
||||
|
||||
- "Eyes, Fingers, Toes" added to demonstrate a multi-number safe using
|
||||
lists to create a log of dialed numbers.
|
||||
- "Robo 1" added to demonstrate a programmable robot that will replay the
|
||||
player's behavior.
|
||||
- "Robo 2" added to demonstrate a robot that can learn multiple stored
|
||||
action scripts with command names determined by the player.
|
||||
- "Rock Garden" reformatted to give the general material at the top.
|
||||
- "The Fibonacci Sequence" added to demonstrate using lists as arrays.
|
||||
- "I Didn't Come All The Way From Great Portland Street" added to
|
||||
demonstrate using lists as sets.
|
||||
- "Lugubrious Pete's Delicatessen" added to demonstrate using lists as
|
||||
queues.
|
||||
- "Sieve of Eratosthenes" added to demonstrate using lists as sieves.
|
||||
- "Circle of Misery" added to demonstrate using lists as ring buffers.
|
||||
- "Lanista 1" corrected to fix a truncated sentence in the commentary.
|
||||
- "Leopard-skin" added to demonstrate a log of stored actions.
|
||||
- "What Makes You Tick" added to demonstrate building a fishing rod from
|
||||
component parts.
|
||||
- "Your Mother Doesn't Work Here" added to demonstrate using a list as a
|
||||
stack to plan character behavior.
|
||||
|
||||
## Problem messages
|
||||
|
||||
- Problem message added to prevent the UNDO command being used in a TEST
|
||||
script (which can't safely be done since it undoes progress in the test
|
||||
itself), and also to prevent individual commands in TEST scripts from
|
||||
exceeding 100 characters (since the I6 library would choke on those).
|
||||
- Problem message improved for namespace clashes between variable names and
|
||||
descriptions.
|
||||
- Problem message added (in place of previous I6 errors) when a
|
||||
description of an action, used as a condition, refers both to the past
|
||||
and to values in the present (by means of "called").
|
||||
- Problem message improved for an ambiguity in rule premisses as between
|
||||
a description of an actor followed by an action, and an action name
|
||||
with no actor attached. (This arose in the case of "standing using ...",
|
||||
where "standing" had also been defined so as to describe certain people:
|
||||
was the action here "standing using", done by nobody in particular, or
|
||||
"using", done by a person matching "standing"?)
|
||||
- Infelicity fixed whereby the problem message about minus signs being
|
||||
wrongly used in unit constants could be repeated (sometimes quite a
|
||||
few times) for the same mistake.
|
||||
- Problem message added (rather than I6 error or mysteriously incorrect
|
||||
behaviour) for the case of a phrase so ambiguous that at compile-time
|
||||
it is not possible to tell how many values it takes as arguments.
|
||||
The problem explains this, shows the phrases it cannot choose between,
|
||||
and invites the author to reword one of them.
|
||||
|
||||
## Bug fixes
|
||||
|
||||
- Bug fixed whereby pastes of Example text for examples including backslashes
|
||||
(such as those arising from the introduction of regular expression
|
||||
matching) and, in some cases, other unusual characters would cause
|
||||
the text to be pasted incomplete - so that it did not work as it
|
||||
was claimed to do.
|
||||
- Bug fixed whereby two or more consecutive double-quoted texts in a single
|
||||
table entry would lead to an internal error rather than a problem
|
||||
message; something which can happen easily if pasted text converts
|
||||
tabs to spaces, when two adjacent table columns are both supposed to
|
||||
contain text.
|
||||
- Bug fixed whereby a rule whose premiss involved clauses of several different
|
||||
sorts, one of them "when", could sometimes produce an internal error.
|
||||
- Bug fixed - or, really, feature added, but the lack of it was regarded as
|
||||
peculiar - whereby an action description used in a rule was not allowed
|
||||
to give the name of a kind of value to mean "any value of this kind":
|
||||
for instance, "Instead of dialing something to a code symbol", where
|
||||
"code symbol" is a kind of value and "dialing it to" is an action
|
||||
applying to one thing and one code symbol.
|
||||
- Bug fixed whereby "[']" for apostrophe wasn't being allowed in titles given
|
||||
as the opening text of a bibliographic heading.
|
||||
- Bug fixed whereby indexed text and stored action variables were not working
|
||||
properly if they belonged to rulebooks, activities or actions.
|
||||
- Bug fixed whereby "if there is a [table-reference]" was not working in the
|
||||
case of columns holding indexed text.
|
||||
- Bug fixed whereby spurious "no such entry" run-time problems would occur if
|
||||
a table with a column holding indexed text was created with blank rows.
|
||||
- Bug fixed whereby ambiguous phrases requiring run-time checking on some
|
||||
arguments would sometimes go wrong if other arguments were stored
|
||||
actions or indexed text.
|
||||
- Bug fixed whereby if several "let" variables in a single phrase needed to
|
||||
be indexed text or stored actions, they would sometimes have their kinds
|
||||
of value rearranged between them, with occasionally bizarre results.
|
||||
- Bug fixed whereby the dynamic memory allocator would print up debugging
|
||||
information such as "1+128+256+512+1024+2048+4096+8192+16384+65536"
|
||||
after successfully allocating memory via Glulx's @malloc mechanism.
|
||||
Apologies for this.
|
||||
- Bug fixed whereby a compound phrase which looks as if it might be in the
|
||||
form "total ...", counting the total of some property - but which isn't -
|
||||
would generate an internal error rather than being rejected in favour
|
||||
of some other interpretation.
|
||||
- Bug fixed whereby a rule predicated on a condition about something being
|
||||
listed (or not) in a table would cause I6 errors.
|
||||
- Bug fixed whereby an internal error rather than a problem message would
|
||||
sometimes be issued when a condition was used which had no active verb
|
||||
but could be taken as a description of things (typically arising if
|
||||
"is" had been mistyped as "in").
|
||||
- Bug fixed whereby the old I6 debugging commands CHANGES and ROUTINES, which
|
||||
are no longer implemented in I7, still had their grammar visible in
|
||||
I7-compiled games, so that it was possible (but usually quickly fatal)
|
||||
to try using these commands.
|
1426
notes/release/6-1.md
Normal file
1426
notes/release/6-1.md
Normal file
File diff suppressed because it is too large
Load diff
717
notes/release/6-2.md
Normal file
717
notes/release/6-2.md
Normal file
|
@ -0,0 +1,717 @@
|
|||
# Release notes for Inform v6.2 (build 5U92)
|
||||
|
||||
This release was made on 10 September 2008, before Inform was open-sourced.
|
||||
At that time 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).
|
||||
|
||||
## Overview
|
||||
|
||||
This build makes a set of related improvements to the way adjectives, nouns
|
||||
and verbs combine in descriptions. This lifts many restrictions which made
|
||||
talking about values less flexible than talking about objects, and shows the
|
||||
language gradually becoming more general. This brings only subtle (if nice
|
||||
to have) improvements for authors, but improves the coherence of the design
|
||||
of Inform. In addition, directions can now be created freely, fulfilling the
|
||||
last outstanding promise made in the January 2007 consultation document.
|
||||
There are miscellaneous minor improvements, and five months' worth of
|
||||
maintenance changes. All 110 issues arising from bug reports received up to
|
||||
7 September 2008 have been closed out.
|
||||
|
||||
## Language
|
||||
|
||||
## Documentation, examples and extensions
|
||||
|
||||
### Recipe Book
|
||||
|
||||
- Expanded the contents of the section on ending the game to lay out more
|
||||
of the ways in which the final text can be altered.
|
||||
|
||||
### Examples
|
||||
|
||||
- Added "Fabrication" to demonstrate the use of values which themselves have
|
||||
properties.
|
||||
- Added "Bowler Hats and Baby Geese" to demonstrate the use of scenes with
|
||||
properties.
|
||||
- Added "Elsie" to demonstrate a sliding door that closes automatically
|
||||
after being open for one turn.
|
||||
- Added "Versailles" to demonstrate a mirror the player can look into.
|
||||
- Added "Pizza Prince" to demonstrate a near-infinite supply from which
|
||||
the player can go on taking instances.
|
||||
- Added "Extra Supplies" to demonstrate a supply from which the player
|
||||
can take one instance at a time.
|
||||
- Added "North by Northwest" to demonstrate compass directions between
|
||||
the usual set, and how to deal with the nine-character limit on names.
|
||||
- Added "The World of Charles S. Roberts" to demonstrate a hexagonal
|
||||
direction system.
|
||||
- Modified "Copper River", "One Short Plank", "Mr. Burns' Repast", "Yolk
|
||||
of Gold", "Depth", and "Xylan" to use the new "there is..." syntax in
|
||||
places where the old syntax seemed a bit stilted.
|
||||
- Modified "Solitude" to correct some errors in the comments caused by an
|
||||
over-zealous search and replace when truth states were introduced.
|
||||
- Modified "Copper River" to list all objects explicitly while taking
|
||||
inventory, even if they are otherwise referred to as "assorted dull
|
||||
items".
|
||||
- Modified "Bumping into Walls" to get rid of some inelegant grammar in
|
||||
the definition of viable directions, which is no longer necessary
|
||||
because of syntax improvements.
|
||||
- Rewrote "Fore" completely to take advantage of new direction-defining
|
||||
abilities, rather than presenting the rather hackish methodology
|
||||
originally on offer.
|
||||
|
||||
### Extensions
|
||||
|
||||
- "Glulx Text Effects" updated to deal with an indentation bug. The version
|
||||
number is now 3.
|
||||
- "Glulx Entry Points" updated to handle a bug introduced by the treatment
|
||||
of templates. The version number is now 6.
|
||||
- "Locksmith" edited to bring conditional syntax in line with the new
|
||||
Pythonesque standard, and (more importantly) to give explicit names
|
||||
to a couple of rules that still lacked them. Version number is now 7.
|
||||
|
||||
## Problem messages
|
||||
|
||||
- Problem messages added for attempts to write constant values in notations
|
||||
where the second or subsequent numerical element runs out of the legal
|
||||
range, or where the total value exceeds the maximum or minimum range
|
||||
which Glulx can hold. (There was already a similar check for Z-machine
|
||||
projects - for Glulx, of course, the bounds are larger.)
|
||||
- Similarly, run-time parsing of values in such notations is also checked
|
||||
more carefully to see that it remains in range.
|
||||
- Finally, the Kinds page of the Index now quotes the maximum possible
|
||||
value for both Z-machine and Glulx use. (It previously quoted this only
|
||||
for Z, thus giving a misleading answer if Glulx was used.)
|
||||
- Problem message added to explain what's wrong when the source text tries to
|
||||
provide command grammar for a word reserved as an Inform testing command,
|
||||
such as SHOWME. (And the indexing of these reserved commands on the
|
||||
Actions index page has also been improved.)
|
||||
- Problem message improved when "try" is applied to something which ought to
|
||||
be a valid action, but which isn't for type-checking purposes - for
|
||||
instance,
|
||||
```
|
||||
try taking 22;
|
||||
```
|
||||
- Problem message added (in place of an internal error) to catch cases where
|
||||
a verb is missing from a condition so that it otherwise forms a
|
||||
description with no obvious subject:
|
||||
```
|
||||
if the player not carrying a thing, ...
|
||||
```
|
||||
(which of course is missing an "is".)
|
||||
- Problem message added to block the use of "called" when it is being used
|
||||
only to rename one specific item, e.g.,
|
||||
```
|
||||
if the Z-Boson Destructorator (called the gun) is carried, ...
|
||||
```
|
||||
Previously this sometimes worked, but sometimes didn't, and in any case
|
||||
wasn't ideal from a stylistic point of view.
|
||||
- Problem message added to block the use of implications based on information
|
||||
not available at compile-time, such as:
|
||||
```
|
||||
A room in the Garden is usually lighted.
|
||||
```
|
||||
(Previously this disregarded the relation information - the "in the Garden"
|
||||
part - and therefore wrongly read the sentence as "A room is usually
|
||||
lighted", a valid but different implication.)
|
||||
- Problem message added to catch attempts to equate two kinds of variable, as in:
|
||||
```
|
||||
The stored actions variable is a truth state that varies.
|
||||
```
|
||||
(This has happened because the user didn't realise that "stored actions
|
||||
variable" was a general category of variables, and thus not a good name
|
||||
to choose for a specific one. In 5T18 it produced an internal error.)
|
||||
- Problem message added to object to saying that things are to be defined by
|
||||
a table, but also saying how many there are (which may of course be in
|
||||
conflict with the number of rows in the table):
|
||||
```
|
||||
Three berries on the bush are defined by the Table of Tasty Berries.
|
||||
```
|
||||
The word "three" is either redundant or contradicts what the Table says,
|
||||
and the problem message says it should be removed, e.g., by writing:
|
||||
```
|
||||
Some berries on the bush are defined by the Table of Tasty Berries.
|
||||
```
|
||||
- Run-time problem message added to explain why only things can be moved during
|
||||
play (not for instance rooms, regions or directions). (Although people very
|
||||
seldom try this deliberately, they do sometimes accidentally ask for it
|
||||
because of misunderstandings about short forms of names of rooms.)
|
||||
|
||||
## Bug fixes
|
||||
|
||||
- Bug fixed whereby a small number of rules formed like this one:
|
||||
```
|
||||
Before printing the name of an object: say "Print."
|
||||
```
|
||||
would cause a spurious internal error; and similarly for rules such as
|
||||
```
|
||||
Before listening to nothing: ...
|
||||
```
|
||||
which can't in fact be useful (because "listening" always takes a noun),
|
||||
but ought not to trip over the compiler; and similarly for clauses
|
||||
such as:
|
||||
```
|
||||
Instead of going east by nothing: ...
|
||||
```
|
||||
in which optional details are added to an action (and these can indeed
|
||||
be useful: this example means going east on foot, i.e., with no vehicle).
|
||||
This was all one single bug, and was the one most experienced by users
|
||||
of 5T18 - apologies.
|
||||
- Bug fixed whereby and "[end if]" adjacent to an "[or]" in text, as here:
|
||||
```
|
||||
"[one of][if the location is Lab]Lab[end if][or]blah[at random]"
|
||||
```
|
||||
would cause an I6 compilation error. This was another very popular one.
|
||||
- Bug fixed whereby "try" with an action which applies to a topic would not
|
||||
work if applied to a snippet variable, so, for instance,
|
||||
```
|
||||
try asking Bob about the topic understood;
|
||||
```
|
||||
would fail.
|
||||
- Bug fixed whereby large rulebooks would in some cases misfile rules which
|
||||
depended on a single action _not_ being the current one, such as:
|
||||
```
|
||||
Before doing something other than examining to the mercenary: ...
|
||||
```
|
||||
(While this was a serious bug, it occurred only rarely, depending on
|
||||
complicated combinations of other rules also being in force.)
|
||||
- Bugs fixed to do with table columns holding indexed text, so that some attempts
|
||||
to look for corresponding values, or to search for values, or to copy a
|
||||
non-blank value into a blank, would fail with spurious run-time problem
|
||||
messages.
|
||||
- Bug fixed whereby sections replacing those in extensions:
|
||||
```
|
||||
Section 1 - New foo (in place of Section 1 - Foo in Bar by Tina Banana)
|
||||
```
|
||||
were not in fact always doing so in 5T18; and relatedly, when such
|
||||
heading tricks were used, were sometimes causing source text to be lost
|
||||
from the main text, resulting in spurious problem messages complaining
|
||||
that no room had been created. (It had, but in a sentence wrongly removed.)
|
||||
- Bug fixed whereby paragraph spacing would go wrong - usually with the expected
|
||||
gap between paragraphs going missing - in cases where a text substitution
|
||||
is defined which itself includes a "[paragraph break]" substitution. For
|
||||
instance, redefining:
|
||||
```
|
||||
To say p -- running on:
|
||||
say paragraph break.
|
||||
```
|
||||
ought to give "[p]" exactly the same effect as "[paragraph break]", but in
|
||||
5T18 the spacing after "[p]" would in some cases go missing.
|
||||
- Bug fixed whereby "resume the game", a phrase to be used in the "when play
|
||||
ends" rulebook to cause it not to end but to carry on after all, had
|
||||
stopped working. Particular apologies for this: we hadn't realised that
|
||||
nothing in the 5T18 test suite verified its behaviour.
|
||||
- Bug fixed whereby the "carrying capacity" for a container or supporter could
|
||||
not be read without run-time problem messages if it was not set explicitly
|
||||
in the source text. (It should have, and now does, default to 100.)
|
||||
- Bug fixed whereby a container called "sack" would sometimes wrongly be treated
|
||||
as if it were a player's holdall, if it were carried alongside a genuine
|
||||
player's holdall.
|
||||
- Bug fixed whereby a rule depending on something having happened for a small
|
||||
number of times only would not always apply if the action is silent, e.g.,
|
||||
```
|
||||
Instead of taking the top hat less than three times:
|
||||
say "The top hat resists!"
|
||||
```
|
||||
...would fail to apply if the top hat were being taken silently as a
|
||||
result of a command like WEAR HAT. (Apologies: this bug was introduced
|
||||
inadvertently as part of a bug fix made in 5T18, and did not occur in
|
||||
earlier builds.)
|
||||
- Bug fixed whereby the Standard Rules read
|
||||
```
|
||||
A door is never pushable between rooms.
|
||||
```
|
||||
instead of
|
||||
```
|
||||
A backdrop is never pushable between rooms.
|
||||
```
|
||||
(Both are true. In 5T18, the sentence was given for doors twice and for
|
||||
backdrops not at all.)
|
||||
- Bug fixed whereby the Standard Rules wrongly put the "switch the story
|
||||
transcript off rule" in the "carry out switching the story transcript
|
||||
on rulebook", not the one for "...off", so that in 5T18 the transcript
|
||||
once started couldn't be stopped.
|
||||
- Bug fixed whereby table sorting might fail if the table contained consecutive
|
||||
blank rows within the body of non-blank rows.
|
||||
- Bug fixed whereby the phrase
|
||||
```
|
||||
let maximum score be a number;
|
||||
```
|
||||
which fails because "maximum score" is already a global variable, so can't
|
||||
be a temporary one as well, would give both a problem message and also an
|
||||
internal error. It now just gives the problem message.
|
||||
- Bug fixed whereby source text such as:
|
||||
```
|
||||
The Lab is a room. The barrel is a vehicle in the Lab. Sir John is a
|
||||
man in the barrel. The player is Sir John. The player is in the barrel.
|
||||
```
|
||||
would create a bogus "yourself" object in the barrel, other than Sir John.
|
||||
- Bug fixed whereby Understand grammar using "[any ...]" would wrongly match
|
||||
all items within those specified, as well as the items themselves. For
|
||||
instance, "[any adjacent room]" would match not just the rooms, but also
|
||||
their contents. Apologies for this bug, which was introduced by accident
|
||||
in the template rewrite for 5T18.
|
||||
- Bug fixed whereby rules depending on actions which involve the text of the
|
||||
player's command would sometimes throw internal errors if they also
|
||||
required the use of named "Understand" tokens which weren't used in any
|
||||
of the ordinary command verb grammar. For instance:
|
||||
```
|
||||
Understand "i7" or "inform" or "inform 7" as "[inform]".
|
||||
After asking Edsger about "[inform]":
|
||||
say "Projects promoting programming in 'natural language' are
|
||||
intrinsically doomed to fail."
|
||||
```
|
||||
- Bug fixed whereby "does the player mean" rules would sometimes disambiguate
|
||||
the second noun of an action as if it were the first, in cases where
|
||||
the action uses "[things inside]" or "[other things]" as the first token
|
||||
(which the inserting action does, in particular). The documentation does
|
||||
warn that this might not work; it will now sometimes work, with care.
|
||||
- Bug fixed whereby a table with a number but not a name (say, "Table 5") could
|
||||
not be referred to elsewhere in the source in the same form (e.g.,
|
||||
"The utensils are defined by Table 5").
|
||||
- Bug fixed whereby "does the player mean" rules would not be applicable to
|
||||
going actions implied by commands consisting of a direction alone, such
|
||||
as SOUTH.
|
||||
- Bug fixed whereby, in complicated circumstances, two ordinarily identical
|
||||
things are wrongly considered still identical even after one has
|
||||
changed its property value for a property declared as describing them.
|
||||
(But only where this property is inherited from a mutual kind, which
|
||||
in turn has other "Understand" grammar defining it.)
|
||||
- Bug fixed whereby releasing a project with both a website and auxiliary files
|
||||
would produce links in the website which, though working for some browsers,
|
||||
failed for others, and which were local "file:" links rather than "http:",
|
||||
so that the result would not work when uploaded.
|
||||
- Bug fixed whereby an UNDO which takes us back to a position where the player
|
||||
is in darkness would print the location as "(darkness object)" rather
|
||||
than running the appropriate activity to describe darkness.
|
||||
- Bug fixed whereby "Use authorial modesty" did not always work when given
|
||||
in the main source text of a work by an author wanting to be modest
|
||||
about his own extensions, included from it.
|
||||
- Bug fixed whereby negative values of literals would sometimes be printed
|
||||
incorrectly (e.g., "-10.123" might be printed "-10.00-123").
|
||||
- Bug fixed whereby in rare cases the text of previous commands might be
|
||||
mingled with the text of a literal value being read in the current
|
||||
command.
|
||||
- Bug fixed whereby conditions for start and end of scenes would not properly
|
||||
work if they needed to manipulate indexed text, lists or stored actions,
|
||||
either throwing spurious problem messages or simply failing to match.
|
||||
- Bug fixed whereby, similarly, conditions for start and end of scenes would
|
||||
throw spurious internal errors if they contained table lookups.
|
||||
- Bug fixed whereby complex specifications of "in the presence of" people
|
||||
which involve callings or manipulate similarly complicated values would
|
||||
cause internal errors.
|
||||
- Bug fixed whereby relations applied to kinds rather than instances would in
|
||||
some cases throw an internal error rather than generate a problem message
|
||||
as being too unspecific:
|
||||
```
|
||||
A supporter usually allows sitting.
|
||||
```
|
||||
- Bug fixed whereby memory allocation would sometimes fail, in Glulx, when
|
||||
existing memory was sufficient but too fragmented to hold a large single
|
||||
block of data.
|
||||
- Bug fixed whereby Inform would refuse to create "let" variables called "nd",
|
||||
"st" or "th". (Exercise for the reader: can you guess why?)
|
||||
- Bug fixed whereby "Understand ... when ..." sentences would sometimes, if
|
||||
the condition was invalid, throw an internal error as well as a problem
|
||||
message.
|
||||
- Bug fixed whereby the sentence
|
||||
```
|
||||
Here is everywhere.
|
||||
```
|
||||
would crash Inform rather than produce an outraged problem message.
|
||||
(Yes, somebody tried this.)
|
||||
- Bug fixed whereby extension documentation would be wrongly punctuated around
|
||||
displayed example source text which contained explicit I6 inclusions,
|
||||
with a spurious "-)" to close the I6 inclusion, added at the wrong point.
|
||||
- Bug fixed whereby spurious "details" icons appeared after the names of kinds
|
||||
in the Lexicon index.
|
||||
- Bug fixed to do with the status line sometimes disappearing on the Z-machine.
|
||||
- Bug fixed to do with cursor movements in unusual font sizes in v6 of the
|
||||
Z-machine.
|
||||
- On Glulx works only, the "emphasised" type style now has the style hints
|
||||
weight 0 and oblique 1 set automatically when Glulx starts up: the point
|
||||
of this is that I7 uses this style to implement the text substitution
|
||||
"[italic type]". (Yes, yes, so the 5T18 change log made the same promise.
|
||||
But with any luck it will work this time.)
|
||||
|
||||
## Windows app
|
||||
|
||||
- Added a preferences dialog, allowing the tab size in the source panel to be set.
|
||||
- Drag and drop in the source panels now follows the usual Windows conventions:
|
||||
by default the operation is a move, and holding down the 'Ctrl' key
|
||||
during the drag makes it a copy.
|
||||
- Fixed a bug in the built-in Glulx interpreter that generated
|
||||
spurious timer events.
|
||||
- Accented characters in the user's name should no longer cause the compiler
|
||||
to crash.
|
||||
|
||||
## Linux app
|
||||
|
||||
- Internationalized all the strings in the user interface, so that translators
|
||||
can if they wish translate these. (A Spanish translation has been started,
|
||||
thanks to Ángel Eduardo.)
|
||||
- The Documentation text will now still be visible when using a light-on-dark
|
||||
desktop theme.
|
||||
- The dialog that appears when you start the program can now be closed, in case
|
||||
you started the program by accident.
|
||||
- Bugs fixed that caused some preferences to revert to their default values
|
||||
every time the application started.
|
||||
- Bug fixed that caused a crash when deleting some items from the Skein.
|
||||
- Various minor bugs and crashes fixed.
|
||||
|
||||
|
||||
|
||||
### Natural Language
|
||||
|
||||
- Descriptions and adjectives have each been expanded in scope, so that many
|
||||
kinds of value can now be handled in ways which previously only worked
|
||||
for objects. Specifically:
|
||||
- Either/or and value properties can now be given to any kind of value
|
||||
with named, enumerated outcomes. So for instance:
|
||||
```
|
||||
A scene can be thrilling or dull.
|
||||
A scene has a text called cue speech.
|
||||
```
|
||||
or:
|
||||
```
|
||||
Colour is a kind of value. The colours are red, blue and green.
|
||||
A colour has a number called frequency. The frequency of a colour
|
||||
is usually 130.
|
||||
```
|
||||
As with objects, the names of either/or properties act as adjectives
|
||||
describing a scene.
|
||||
- Descriptions can now talk about values as well as objects. So:
|
||||
```
|
||||
if N is an even number, ...
|
||||
if the score is positive, ...
|
||||
let L be the list of thrilling scenes;
|
||||
repeat with S running through non-recurring scenes: ...
|
||||
if more than three scenes are dull, ...
|
||||
```
|
||||
all now work. Repeating through and listing require that the possible
|
||||
range of the kind of value is finite - so you can't write
|
||||
```
|
||||
let L be the list of numbers;
|
||||
```
|
||||
(which would have to be infinite). See the chart at the bottom of the
|
||||
redesigned Kinds index page to see when repeating and listing are allowed.
|
||||
- The same adjective can now have multiple independent meanings, and there is
|
||||
no difficulty provided that these apply to different things. Thus a
|
||||
definition of "fancy" for a colour would not obstruct a definition of
|
||||
"fancy" for a door, for instance.
|
||||
- The Standard Rules now define the following adjectives for values as built-in:
|
||||
```
|
||||
even, odd, positive, negative - for numbers
|
||||
empty, non-empty - for texts, indexed texts, tables, rulebooks,
|
||||
activities, and lists
|
||||
recurring, non-recurring, going on - for scenes
|
||||
```
|
||||
(Note the six independent definitions of "empty" depending on context.)
|
||||
"Recurring" used to be an adjective which could be used only when creating
|
||||
a scene, as in:
|
||||
```
|
||||
Train Stopping is a recurring scene.
|
||||
```
|
||||
It is now an either/or property, which means we can change it at run-time:
|
||||
```
|
||||
now Train Stopping is non-recurring;
|
||||
```
|
||||
- Now that scenes can be described in flexible ways, we can use the "during ..."
|
||||
clause of a rule flexibly, too. For instance:
|
||||
```
|
||||
Before going north during a dull non-recurring scene, ...
|
||||
```
|
||||
(Previously "during" could only name a single explicit scene.)
|
||||
- There is now a short-hand way to define the antonym of an adjective, that is,
|
||||
the name of its opposite. For instance, the Standard Rules include:
|
||||
```
|
||||
Definition: a number is even rather than odd if the remainder after
|
||||
dividing it by 2 is 0.
|
||||
```
|
||||
The optional part here is "rather than odd", which saves us writing:
|
||||
```
|
||||
Definition: a number is odd if it is not even.
|
||||
```
|
||||
(Note that different meanings of an adjective can have different opposites.
|
||||
We could, if we wanted, write
|
||||
```
|
||||
Definition: a stored action is empty rather than purposeful if ...
|
||||
```
|
||||
and then the opposite of "empty" would be "purposeful" in the context
|
||||
of stored actions, but "non-empty" for the other cases above.)
|
||||
- Inform has always supported a convenient quick way to create a property,
|
||||
sometimes specific to a single thing, which have three or more named
|
||||
possibilities:
|
||||
```
|
||||
A fruit can be citrus, berry, melon, or pome.
|
||||
```
|
||||
This actually makes a property called "fruit condition" and creates a
|
||||
new kind of value whose possibilities are enumerated as "citrus", "berry"
|
||||
and so on. The author often never needs to use the name "fruit condition",
|
||||
because the adjectives "citrus", "berry", ..., are convenient enough by
|
||||
themselves.
|
||||
But because Inform forms the property name in this way, there's a
|
||||
collision if two different ranges are created:
|
||||
```
|
||||
A fruit can be unripened, ripe, overripe, or mushy.
|
||||
A fruit can be citrus, berry, melon, or pome.
|
||||
```
|
||||
In previous builds this prevented two such conditions from existing at once
|
||||
for the same thing or kind. Inform now allows any number of conditions to
|
||||
exist independently of each other; if the author supplies an explicit name,
|
||||
that's used, and otherwise Inform automatically makes names. Thus:
|
||||
```
|
||||
A fruit can be early, summer or late.
|
||||
A fruit can be unripened, ripe, overripe, or mushy (this is its
|
||||
squishiness property).
|
||||
A fruit can be citrus, berry, melon, or pome.
|
||||
```
|
||||
creates three properties, called "fruit condition", "squishiness" and
|
||||
"fruit condition 2" respectively.
|
||||
This means that an extension author can write, say,
|
||||
```
|
||||
A vehicle can be brand new, roadworthy, battered or wrecked (this is
|
||||
its serviceability property).
|
||||
```
|
||||
without "using up" the eventual user's ability to make his own "vehicle
|
||||
condition".
|
||||
Conditions like these can be created for anything which can have a property,
|
||||
and in particular for scenes and enumerated kinds of value as well as
|
||||
for objects (see above).
|
||||
- It is now possible to use "there", as in "there is" or "there are", to
|
||||
talk about whether or not something exists. Here are some examples in
|
||||
assertion sentences:
|
||||
```
|
||||
There is a room called the Shadow World.
|
||||
There is a box in the Shadow World.
|
||||
There is a jigsaw puzzle in the box.
|
||||
|
||||
A coin is a kind of thing. There are two coins on the crate.
|
||||
|
||||
Incrimination relates various things to various people. The verb to
|
||||
incriminate (he incriminates, they incriminate, he incriminated, it is
|
||||
incriminated, he is incriminating) implies the incrimination relation.
|
||||
|
||||
There is a man called Mr Darcy. There is a pair of boxer shorts which
|
||||
incriminates Mr Darcy. There is a fishing rod incriminating Mr Darcy.
|
||||
```
|
||||
And here are some examples in conditions:
|
||||
```
|
||||
if there is a man, ...
|
||||
if there are vehicles, ...
|
||||
if there is nothing in the box, ...
|
||||
if there are three coins in the box, ...
|
||||
if there are exactly three coins in the box, ...
|
||||
if there are at least three coins in the box, ...
|
||||
if there is something incriminating Mr Darcy, ...
|
||||
if there is nothing incriminating Mr Darcy, ...
|
||||
if there are fewer than two things which incriminate Mr Darcy, ...
|
||||
```
|
||||
Note that
|
||||
```
|
||||
if there are three coins in the box, ...
|
||||
if there are at least three coins in the box, ...
|
||||
```
|
||||
have the same meaning: if the number of coins in the box is four, then
|
||||
there do exist three coins in the box, which is what these are testing.
|
||||
"Exactly" is more precise:
|
||||
```
|
||||
if there are exactly three coins in the box, ...
|
||||
```
|
||||
- As some of these examples suggest, the handling of "nothing" has been
|
||||
improved so that it can be used in a wider range of contexts, and a few
|
||||
bugs have been fixed in the process. For instance, the following now works:
|
||||
```
|
||||
now nothing incriminates Mr Darcy;
|
||||
```
|
||||
And similarly for "nowhere", "nobody", "no-one" and even "no one" -
|
||||
```
|
||||
now nobody in the Temple is surprised;
|
||||
if nowhere is dark, ...
|
||||
if no one is in the Temple Annexe, ...
|
||||
```
|
||||
- It has always been legal to use "not all" in a condition - for instance,
|
||||
```
|
||||
if not all of the coins are in the box, ...
|
||||
```
|
||||
"Not every" has been added, so that this has the same meaning:
|
||||
```
|
||||
if not every coin is in the box, ...
|
||||
```
|
||||
And similarly, we can now if we wish write
|
||||
```
|
||||
if not more than four coins are in the box, ...
|
||||
```
|
||||
or (equivalently)
|
||||
```
|
||||
if not fewer than six coins are in the box, ...
|
||||
if not less than six coins are in the box, ...
|
||||
```
|
||||
Those are the only determiners to which "not" can be applied. So this,
|
||||
for instance, continues not to be allowed:
|
||||
```
|
||||
if not some of the coins are in the box, ...
|
||||
```
|
||||
- There was previously a hard limit of 32 on the maximum number of relations
|
||||
"in groups" which could be created in any single compilation: this has
|
||||
been removed and there is now no limit.
|
||||
- The relation which tests whether two things are equal now has a name: it is
|
||||
the "equality" relation. So for instance it's now possible to define -
|
||||
```
|
||||
The verb to be identical to implies the equality relation.
|
||||
```
|
||||
(There's no obvious reason for doing this, but it was anomalous that it
|
||||
couldn't be done before.)
|
||||
- When a verb is created in the form "to be able to...", as the Standard Rules
|
||||
does with the line:
|
||||
```
|
||||
The verb to be able to see (he is seen) implies the visibility relation.
|
||||
```
|
||||
then the following prepositional forms can be used:
|
||||
```
|
||||
"to be able to see"
|
||||
"to be unable to see"
|
||||
"to be able to be seen by"
|
||||
"to be unable to be seen by"
|
||||
```
|
||||
The last of these, "to be unable to be seen by", did not work in previous
|
||||
builds, having been overlooked. So it is now possible to write, e.g.,
|
||||
```
|
||||
if Peter is unable to be seen by Paul, ...
|
||||
if Peter had not been unable to be seen by Paul, ...
|
||||
```
|
||||
|
||||
### Directions
|
||||
|
||||
- Directions have been reformed. In earlier builds it was difficult to create new
|
||||
directions (and the documentation officially said that this could not be
|
||||
done at all); I6 hacks were needed, and the results sometimes failed.
|
||||
Directions can now be created freely, or at any rate pairs of them can:
|
||||
```
|
||||
Turnwise is a direction. The opposite of turnwise is widdershins.
|
||||
Widdershins is a direction. The opposite of widdershins is turnwise.
|
||||
```
|
||||
- To create a direction, a simple sentence in the form "X is a direction."
|
||||
must be given.
|
||||
- Each direction has to have a value for the "opposite" property, which
|
||||
has to be another direction; these must be in matched opposing pairs.
|
||||
- The maximum length of a direction name used to be 1 (i.e., they had to
|
||||
be single words); now it is 3.
|
||||
- The maximum number of directions used to be 16; now it is 100.
|
||||
- New directions are exactly as good as old ones: for instance we can
|
||||
write "to be mapped turnwise of", or use route-finding through new
|
||||
directions.
|
||||
- Each direction automatically makes a relation, the "mapping-turnwise
|
||||
relation" (or similar), which is the meaning of "to be mapped
|
||||
turnwise of". This enables us to define prepositional forms; for
|
||||
instance, the Standard Rules includes the line:
|
||||
```
|
||||
The verb to be above implies the mapping-up relation.
|
||||
```
|
||||
- The I6 implementation beneath the surface is new: there are no "n_to",
|
||||
"s_to", etc., I6 properties any longer; the "door_dir" property for
|
||||
doors now holds a direction object, not a direction property as it did
|
||||
in the I6 library; the map is stored in a flat array instead. See
|
||||
the template file "WorldModel.i6t".
|
||||
|
||||
### Minor New Features
|
||||
|
||||
- Scenes can now be said - that is, if X is a scene, then "[X]" now expands
|
||||
to the name of the scene.
|
||||
- It is now possible to have "let" and global variables of the kind of value
|
||||
"sound-name", which hold sound effects. (The default value for this is
|
||||
a special silent sound, the playing of which has no effect, but which
|
||||
is present in all compilations regardless of whether they use sounds
|
||||
or not.) And similarly for "figure-name" and "external-file". "Scene",
|
||||
which up to now could be held in a global but not a local variable
|
||||
(an oversight) can now be either.
|
||||
- Truth states (both of them) can now be understood, so actions can be made
|
||||
which are applicable to them, and "[truth state]" is a valid Understand
|
||||
token.
|
||||
- The Understand token "[a time]" matches a time of day, such as "10:15 AM"
|
||||
or "midnight". But the "time" kind of value can hold relative times as
|
||||
well as absolute ones -- for instance, 10 minutes is a time, but it is
|
||||
not recognised by "[a time]" since it isn't a specific moment in the day.
|
||||
A new Understand token called "[a time period]" has been added for this,
|
||||
so for instance
|
||||
```
|
||||
Understand "wait for [a time period]" as ...
|
||||
```
|
||||
would match WAIT FOR AN HOUR or WAIT FOR TWO HOURS 12 MINUTES.
|
||||
- The handling of mixed-case notations has been improved - for instance, given
|
||||
```
|
||||
Acidity is a kind of value. pH 7 specifies an acidity.
|
||||
```
|
||||
the "p" will always be printed in lower case, and the "H" upper case.
|
||||
Printing back always respects the case in the original specification;
|
||||
but parsing is always case-insensitive.
|
||||
- Repeating through tables used to carry the risk that if something in the body
|
||||
of the loop changed the row selection, the loop would break, since it used
|
||||
the row selection itself as an iterating variable. This has been corrected.
|
||||
A "repeat through" loop can now be nested inside other "repeat through"
|
||||
loops; the body of the loop can change the row selection without harm;
|
||||
moreover, a "repeat through" loop preserves the row selection, so that
|
||||
on exit, the same row (if any) is selected as was selected before the
|
||||
loop began.
|
||||
- When tables are sorted "in random order", blank rows are now automatically
|
||||
moved to the bottom. The non-blank rows occur in a uniformly random order
|
||||
at the top of the table.
|
||||
- When "Include ... instead of ..." is used to replace a part or segment from
|
||||
the I6 template, a subsequent "include... instead..." on the same part or
|
||||
segment now overrides an earlier one. (In 5T18 both would be applied, but
|
||||
this almost never led to valid I6 code, and it's hard to think of
|
||||
circumstances when users would want that behaviour.) It continues to
|
||||
be the case that "Include ... after ..." and "... before ..." allow
|
||||
multiple inclusions attached to the same part or segment.
|
||||
|
||||
### Interface to I6 Internals
|
||||
|
||||
- There are now two ways to specify that an adjective is defined at the I6 level:
|
||||
```
|
||||
Definition: a rulebook is empty rather than non-empty if I6 routine
|
||||
"RulebookEmpty" says so (it contains no rules, so that following
|
||||
it does nothing and makes no decision).
|
||||
```
|
||||
The part in brackets does nothing, but is the text used in the Phrasebook
|
||||
index for the user's benefit; it should be a brief definition. The I6
|
||||
routine should take one parameter, the value on which the adjective is
|
||||
being tested, and should return true or false as appropriate.
|
||||
```
|
||||
Definition: a rulebook is exciting if I6 condition
|
||||
"excitement_array-->*1==1" says so (it is really wild).
|
||||
```
|
||||
The condition is given as a "schema", in which the escape "*1" is
|
||||
expanded to the value on which the adjective is being tested. (This is
|
||||
usually faster than calling a routine, but in case of side-effects, the
|
||||
*1 should occur only once in the condition, just as with a C macro.)
|
||||
- The "translates into I6 as" verb now has another possible use: for Understand
|
||||
tokens. This is how the Standard Rules sets up the new "[a time period]"
|
||||
token, for instance:
|
||||
```
|
||||
The Understand token a time period translates into I6 as
|
||||
"RELATIVE_TIME_TOKEN".
|
||||
```
|
||||
(The I6 routine of this name can be found in the Time.i6t template file.)
|
||||
This might be of use to extensions which want to add very rich parsing
|
||||
possibilities which break existing conventions.
|
||||
|
||||
### Performance
|
||||
|
||||
- The run-time storage of relations, kind membership and the map has been
|
||||
made slightly more efficient. The gain has been used to make projects with
|
||||
"use memory economy" in force run a little faster - previously, memory
|
||||
economy blocked Inform from generating faster searches through objects
|
||||
by using precompiled linked lists. That still leaves a memory saving of
|
||||
around 2.5K in a completely full Z-machine story file. This is not as
|
||||
ridiculous as it sounds, since the Z-machine has only 64K of dynamic
|
||||
memory to play with, and this tends to be the limiting factor on the
|
||||
size of projects which Z can handle. A minimal I7 project needs 24K of
|
||||
this, so a saving of 2.5K out of the remaining 40K represents room for
|
||||
maybe a 6% larger design. (Of course for Glulx projects this is all
|
||||
irrelevant - there are really no size limits at all.)
|
||||
- Some users observed that the 5T18 build compiled more slowly, and this was
|
||||
a large enough effect to make a considerable difference to novel-sized
|
||||
projects (with 200,000-word source texts). This proved to be an accidental
|
||||
side-effect of internal consistency checks only really needed when
|
||||
debugging Inform itself. This has been fixed, and large projects should
|
||||
once again compile at roughly the same speed as in 5J39 and previous
|
||||
builds.
|
978
notes/release/7-1.md
Normal file
978
notes/release/7-1.md
Normal file
|
@ -0,0 +1,978 @@
|
|||
# Release notes for Inform v7.1 (build 5Z71)
|
||||
|
||||
This release was made on 18 April 2009, before Inform was open-sourced.
|
||||
At that time 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).
|
||||
|
||||
## Language
|
||||
|
||||
### Index
|
||||
|
||||
The most visible change in this build is that the Index for a project now
|
||||
has a new look, and has been reworked throughout. We now have much more
|
||||
experience of working with large projects, and have more feedback from users
|
||||
about what they found helpful and not in the old Index.
|
||||
|
||||
In general, we have tried to improve navigation within the Index pages - each
|
||||
of which contains several different tables or charts - to pack more information
|
||||
into the existing tables, where sensibly possible, and to improve its visual
|
||||
recognisability - to make it easier to see at a glance where you are. Being
|
||||
lost in the Index is no better than being lost in the source text, the whole
|
||||
problem it's supposed to address.
|
||||
|
||||
There are too many changes to itemise, but briefly:
|
||||
|
||||
- links to extensions from the Index pages now have a new icon (in place of
|
||||
the old footnotes like [E1]); clicking them jumps to the documentation
|
||||
for the extension;
|
||||
- a new use option, "Use numbered rules", indexes rules with identifying
|
||||
numbers alongside their names, and causes the testing command RULES ALL
|
||||
to show these numbers at run-time - which may help in debugging when
|
||||
"Use memory economy" is enforced, so that RULES ALL is unable to quote
|
||||
rule names in full.
|
||||
|
||||
### cblorb
|
||||
|
||||
This build includes version 1.1 of "cblorb", and matching improvements to
|
||||
Inform's system for releasing projects. "cblorb" is an internal tool which is
|
||||
run at the end of the translation process, but only when the Release button
|
||||
rather than the Go or Replay buttons was clicked. It has two main jobs: to
|
||||
bind up the translated project, together with any pictures, sounds, or cover
|
||||
art, into a single file called a "blorb" which can be given to players on
|
||||
other machines to play; and to produce associated websites, solution files
|
||||
and so on as demanded by "Release..." instruction(s) in the source text.
|
||||
|
||||
Previous builds of Inform included a minimal implementation of "cblorb"
|
||||
which, although it mostly worked, was really only a prototype: it was not
|
||||
really flexible or reliable enough to be used in the final system. We have
|
||||
long intended to replace it with a better implementation, and version 1.1
|
||||
is our first draft of that. It is much faster (running in order N time,
|
||||
where N is the line count of the source text, not order N-cubed), and
|
||||
produces much better HTML. This also gave us the opportunity to reform
|
||||
how "Release" works, and to make it easier to produce tidy collections of
|
||||
release material.
|
||||
|
||||
Almost all of the size or complexity limits have been taken out, and in
|
||||
particular:
|
||||
|
||||
- the number of audiovisual files embedded in the blorb, previously limited
|
||||
to about 495 (depending on circumstances), is now limited only by the
|
||||
Blorb specification limit of 32765;
|
||||
- the number of auxiliary files, previously at most 50, is now unlimited;
|
||||
- the numbers of tables and headings in a project released with source in a
|
||||
website, previously 250 each, are now unlimited;
|
||||
- the number of knots in the Skein of a project released with a solution,
|
||||
previously at most 10000, is now unlimited;
|
||||
- the story description length, previously at most 1000 characters, is now
|
||||
at most 2047 characters;
|
||||
- and all filenames can be up to 2047 characters long, which should help
|
||||
if the project is very, very deep in the file system tree.
|
||||
|
||||
Various minor bugs have been removed, of which the most important was a
|
||||
tendency to trim 8 bytes from the end of some audio files when embedding
|
||||
them, which caused some Ogg Vorbis files to be unplayable. The rendering of
|
||||
source text on an accompanying website is also improved somewhat, with
|
||||
various bugs to do with nested comments removed, and support for verbatim
|
||||
I6 code added; text substitutions are also now styled, and hanging
|
||||
indentation for code makes it much easier to read. Particular thanks to
|
||||
David Kinder, who diagnosed the Ogg Vorbis fault, and to Stephen Granade,
|
||||
whose "i7htmltidy.pl" script was a most effective critique of the original
|
||||
"cblorb".
|
||||
|
||||
Internal changes include:
|
||||
|
||||
- there are several new placeholders:
|
||||
- [PAGENUMBER] and [PAGEEXTENT], for pages in the multi-page source
|
||||
web pages, are such that "page [PAGENUMBER] of [PAGEEXTENT]" produces
|
||||
text such as "page 2 of 7";
|
||||
- [TEMPLATE] is the name of the web template in current use;
|
||||
- [SMALLCOVER] is the filename of the thumbnail-sized version of the
|
||||
cover art file. (Compare [BIGCOVER], which already exists, and is the
|
||||
filename of the real thing.)
|
||||
- [STORYFILE] becomes the "leafname" of the story file, e.g., "Bronze.gblorb"
|
||||
- [GENERATOR] becomes the name of the program generating the website, e.g.,
|
||||
"cblorb 1.2"
|
||||
- [TIMESTAMP] and [DATESTAMP] are the time and date at which cblorb runs
|
||||
- new command-line arguments "-trace", "-help";
|
||||
- the user interface is now expected to call with the first option
|
||||
being "-osx", "-windows", or "-unix" as appropriate;
|
||||
- a new "style" command in Blurb locates the relevant CSS file to
|
||||
use when releasing with a website;
|
||||
- `<img ...>` tags generated by "cblorb" are now self-closing (`<img ... />`);
|
||||
- `<br>` tags generated by "cblorb" are now self-closing (`<br/>`);
|
||||
- footnote anchors are now closed, preventing link style from spilling;
|
||||
- paragraphs generated by "cblorb" are now always in matching
|
||||
`<p>...</p>` tags;
|
||||
- links in the lists of links are now in `<li>...</li>` list item tags in
|
||||
a surrounding `<ul>...</ul>`, and similarly for the contents listing
|
||||
in a source website, where nested `<ul>`s are now used to show the
|
||||
headings hierarchy;
|
||||
- `halign` and `valign` markers are not used in tables if a CSS file is
|
||||
present to handle table styling better;
|
||||
- auxiliary file sizes displayed better, and file size displayed for the
|
||||
Blorb itself;
|
||||
- cblorb no longer generates temporary files in the project's Build
|
||||
directory, so it no longer leaves debris behind for the user interface
|
||||
to tidy up.
|
||||
|
||||
### Releasing
|
||||
|
||||
There are six corresponding changes in Inform itself.
|
||||
|
||||
(1) "Release along with..." has a new option - "library card", which is
|
||||
the iFiction record for the project, an XML file conforming to the Treaty
|
||||
of Babel for bibliographic data.
|
||||
|
||||
(2) In "Release along with..." sentences, the adjectives "private" and
|
||||
"public" can be used when we release along with any of:
|
||||
```
|
||||
source text, solution, library card
|
||||
```
|
||||
"Public" means that if we release along with a website then the item in
|
||||
question will appear in the links from the home page; "private" means it
|
||||
will be produced but not be mentioned or linked on the website. If neither
|
||||
one is specified, source text is public but everything else is private,
|
||||
which conforms to Inform's traditional practice. If we aren't releasing
|
||||
along with a website, public vs. private makes no difference.
|
||||
|
||||
(3) Suppose Release is clicked in the Inform user interface, and everything
|
||||
works without problem messages. If there are no "Release along with..."
|
||||
sentences in the source text, then the release consists only of a single
|
||||
blorb file. The user interface displays a Save As... dialogue box asking the
|
||||
user where to put this file. But if there are "Release along with..."
|
||||
sentences, then Inform needs to release multiple files, and it puts those
|
||||
in the "Materials" folder for the project. (If the project is, say,
|
||||
"Apricot.inform" then this would be a folder called "Apricot Materials" in
|
||||
the same place.)
|
||||
|
||||
All of that is how Inform has always worked. What's new is that the released
|
||||
material is now all put in a subfolder of "Apricot Materials" called "Release".
|
||||
Anything in "Release" can be thrown away at any time, as it can all be
|
||||
replaced; equally, to upload a website to a server, we only need to copy the
|
||||
contents of the "Release" folder. This is much tidier than the old
|
||||
arrangement, in which released files mingled with other working documents in
|
||||
the root of "Apricot Materials", so that it wasn't easy to see at a glance
|
||||
what was part of the released website and what wasn't.
|
||||
|
||||
Inform automatically generates the Materials folder and its Release subfolder
|
||||
as necessary if they don't already exist.
|
||||
|
||||
(4) Inform has always generated websites using what it calls "templates",
|
||||
and it has always been supplied with a single built-in template called
|
||||
"Standard". This continues to be true, but the new "Standard" is a more
|
||||
modern design, making use of CSS. (The old look is preserved as "Classic",
|
||||
also built-in, in case anyone really wants to keep using it, or needs to
|
||||
generate a website which makes no use of CSS.)
|
||||
|
||||
The form of templates has however changed. A template was previously a pair
|
||||
of HTML files - for instance, "Platinum.html" and "Platinum-Source.html" -
|
||||
containing placeholder text like "[AUTHOR]" where the author's name should
|
||||
appear, and so on. A template is now a folder - "Platinum", say - which can
|
||||
contain any of the following four files:
|
||||
```
|
||||
index.html - the template for the home page
|
||||
source.html - the template for source text pages
|
||||
(used only when "Release along with a website" is used)
|
||||
style.css - the CSS styles needed by the HTML files
|
||||
(extras).txt - a catalogue of any other files to be added
|
||||
```
|
||||
If any of these is missing, Inform uses the one in "Standard" instead.
|
||||
In practice, this means the easiest way to create a new template is to
|
||||
supply just a new CSS file, which can change the colour, font, type size,
|
||||
and position of more or less everything in the site.
|
||||
|
||||
The optional "(extras).txt" file - note brackets - is a text file which
|
||||
contains a list of named extras to throw in. For instance:
|
||||
```
|
||||
easter.html
|
||||
egg.png
|
||||
```
|
||||
These named files need to be present in the template folder. Files with the
|
||||
extension ".html" go through the placeholder expansion process just like the
|
||||
index and source pages; all other files are copied verbatim. (Extras allow
|
||||
for images, movies, etc., to be added to the template.)
|
||||
|
||||
See 22.12 and 22.13 in the documentation, which have been rewritten.
|
||||
|
||||
(5) Inform knows templates only by their titles ("Standard", say, or
|
||||
"Platinum"). When it needs to find one, it searches the following places
|
||||
in sequence:
|
||||
|
||||
- (a) the "Templates" subfolder of the project's Materials folder, if this
|
||||
subfolder should exist;
|
||||
- (b) the "Templates" folder in the user's own library - on Mac OS X, this is:
|
||||
```
|
||||
~/Library/Inform/Templates
|
||||
```
|
||||
and on Windows:
|
||||
```
|
||||
My Documents\Inform\Templates
|
||||
```
|
||||
- (c) the built-in stock of templates, currently "Standard" and "Classic".
|
||||
|
||||
(6) A file released without cover art now has a generic cover image applied.
|
||||
Most people releasing Inform 7 works do now include cover art, and we would
|
||||
like future interpreters and website designs to be able to assume that an
|
||||
image of some kind can be associated with any I7-produced blorb.
|
||||
|
||||
### Index
|
||||
|
||||
It would not be useful to itemise the changes here, but the design of the
|
||||
Index pages has been heavily revised. The aim is to present more information,
|
||||
but more clearly, and with better navigation and labelling. We'd suggest
|
||||
that anyone used to the old Index might find it worthwhile to explore the
|
||||
new one.
|
||||
|
||||
### Kinds of value
|
||||
|
||||
- Activity names can now be stored in variables.
|
||||
- In previous builds, indexed texts, stored actions and lists could not be
|
||||
properties of values - though they could be properties of objects. This
|
||||
anomaly is removed.
|
||||
- Inform now makes more apparent that it allows arithmetic on some kinds of
|
||||
value (numbers, times, etc.) but not others (text, scenes, etc.). The
|
||||
new Kinds index page should clarify which.
|
||||
- The rounding-off notation "V to the nearest D" now works for any numerical
|
||||
value V, not just for times, as in previous builds. Thus, for instance:
|
||||
```
|
||||
the pressurised volume to the nearest 100 cu m
|
||||
the score to the nearest 25
|
||||
```
|
||||
- Two new operations also act on any numerical value:
|
||||
```
|
||||
cube root of V
|
||||
square root of V
|
||||
```
|
||||
The results will necessarily be approximate. Square roots of negative
|
||||
numbers throw a run-time problem.
|
||||
- It's now legal to declare multiplication rules for any numerical kinds of
|
||||
value, provided this is done consistently. E.g.:
|
||||
```
|
||||
Bus Stop is a room.
|
||||
Frequency is a kind of value. 40/min specifies a frequency.
|
||||
Bus frequency is a frequency that varies. Bus frequency is 2/min.
|
||||
A frequency times a time specifies a number.
|
||||
When play begins:
|
||||
say "You can expect [bus frequency times 10 minutes] buses to turn
|
||||
up in the next ten minutes."
|
||||
```
|
||||
This would previously have been rejected as involving the built-in KOVs
|
||||
"time" and "number", which Inform was rather over-protective towards.
|
||||
|
||||
### Scientific Units and Scaled Arithmetic
|
||||
|
||||
Inform now allows a spread of alternative notations for units:
|
||||
```
|
||||
A weight is a kind of value. 10kg specifies a weight. 1 tonne specifies a
|
||||
weight scaled up by 1000. 1g specifies a weight scaled down by 1000.
|
||||
```
|
||||
This enables notations such as "0.45kg" to be used, and causes weights to be
|
||||
stored to an accuracy of 1g. These scale factors are kept consistent in all
|
||||
arithmetic, and in particular when different units are multiplied together
|
||||
or divided.
|
||||
|
||||
There can be equivalents on a different scale altogether:
|
||||
```
|
||||
1 ounce specifies a weight equivalent to 0.028kg.
|
||||
1 pound specifies a weight equivalent to 16 ounce.
|
||||
```
|
||||
We can also mark some notations as singular or plural, and give them names:
|
||||
```
|
||||
1 tonne (singular, in tonnes) or 2 tonnes (plural, in tonnes) specifies a
|
||||
weight scaled up by 1000.
|
||||
```
|
||||
That enables us to say "[weight of the tank in tonnes]", for instance.
|
||||
|
||||
A new built-in extension, "Metric Units by Graham Nelson", makes definitions
|
||||
of kinds of value for most of the scientific quantities needed to make models
|
||||
of the real world:
|
||||
```
|
||||
length, mass, elapsed time, electric current, temperature, luminosity,
|
||||
angle, frequency, force, energy, pressure, power, electric charge, voltage,
|
||||
luminance, area, volume, velocity, acceleration, momentum, density, heat
|
||||
capacity, specific heat capacity
|
||||
```
|
||||
The extension defines SI standard notations for all of these, allowing both
|
||||
European and American spellings, and gives them the proper dimensional rules
|
||||
for multiplication (for instance, length times length is an area). "Elapsed
|
||||
time" is much more precise than the built-in "time" kind of value - it measures
|
||||
from 1 centisecond up to about 35 weeks, rather than being a count of minutes
|
||||
in the course of a single day. Use of "Metric Units" requires the Glulx story
|
||||
file format rather than the Z-machine, simply in order to hold large enough
|
||||
numbers to make sensible scientific calculations.
|
||||
|
||||
### Equations
|
||||
|
||||
As trailed, somewhat speculatively, in the January 2007 discussion document,
|
||||
Inform now supports displayed equations. Inform imitates the conventions of
|
||||
printed scientific books and papers, just as it does with tables of data.
|
||||
For example:
|
||||
```
|
||||
Equation - Newton's Second Law
|
||||
F=ma
|
||||
where F is a force, m is a mass, a is an acceleration.
|
||||
|
||||
Equation - Principle of Conservation of Energy
|
||||
mgh = mv^2/2
|
||||
where m is a mass, h is a length, v is a velocity, and g is the
|
||||
acceleration due to gravity.
|
||||
```
|
||||
(These equations are dimensionally checked for correctness.) Inform can then
|
||||
solve them to calculate whatever unknown is missing. For instance,
|
||||
```
|
||||
let v be given by the Principle of Conservation of Energy, where h = 10m;
|
||||
```
|
||||
is sufficient to determine "v" provided that the quantities other than "v" and
|
||||
"h" are known.
|
||||
|
||||
In cases where we simply want a quick way to write an elaborate one-off
|
||||
formula, we don't need to declare an equation - we can just write it in directly:
|
||||
```
|
||||
let f be given by V = fL;
|
||||
```
|
||||
|
||||
### Logic
|
||||
|
||||
- It is now legal to use "now" in a way involving more than one varying quantity
|
||||
at a time. For example:
|
||||
```
|
||||
Trail Shelter is a room. Fred and George are men in Trail Shelter. The
|
||||
possum, the skunk and the weasel are animals. Dixville Notch is north
|
||||
of the Shelter. Earl is a man in Dixville Notch.
|
||||
|
||||
Suspecting relates various people to various people.
|
||||
The verb to suspect (he suspects, they suspect, he suspected, it is
|
||||
suspected, he is suspecting) implies the suspecting relation.
|
||||
|
||||
Earl suspects the possum.
|
||||
|
||||
Instead of waiting:
|
||||
say "A sinister odour begins to make itself felt.";
|
||||
now every person in Trail Shelter suspects every animal which is not
|
||||
suspected by Earl.
|
||||
|
||||
Test me with "relations / z / relations".
|
||||
```
|
||||
Previous builds would have rejected this use of "now" as too complex.
|
||||
|
||||
- It's now legal to test if something is "everywhere"; this will only be true
|
||||
for backdrops which are indeed everywhere.
|
||||
|
||||
- The Standard Rules now define:
|
||||
```
|
||||
The verb to provide (he provides, they provide, he provided, it is provided,
|
||||
he is providing) implies the provision relation.
|
||||
```
|
||||
This in general is a relation. The following are equivalent:
|
||||
```
|
||||
if carrying capacity is provided by the player
|
||||
if the player provides carrying capacity
|
||||
```
|
||||
For clarity, "the property ..." can be used, and this is compulsory for
|
||||
either/or properties, since those are otherwise adjectives not nouns:
|
||||
```
|
||||
if the player provides the property male
|
||||
if the player provides the property carrying capacity
|
||||
```
|
||||
This makes "to provide" a full verb, whereas previously it was only imitated
|
||||
by a definition of "X provides the property P" in the Standard Rules.
|
||||
|
||||
- It's now legal to assert value relations in relative clauses, e.g.:
|
||||
```
|
||||
Laboratory is a room. Peter is in the laboratory.
|
||||
Colour is a kind of value. Aquamarine is a colour.
|
||||
Annoying relates various colours to various people. The verb to annoy (he
|
||||
annoys, they annoy, it is annoyed, he is annoying) implies the annoying
|
||||
relation.
|
||||
Aquamarine is a colour which annoys Peter.
|
||||
```
|
||||
|
||||
### Minor new features
|
||||
|
||||
A new use option allows the parser to handle large numbers of objects better.
|
||||
For instance,
|
||||
```
|
||||
Use maximum things understood at once of 200.
|
||||
```
|
||||
enables the parser to handle commands like TAKE ALL to work well in situations
|
||||
where up to 200 items are within view at once. (This number was always 64 in
|
||||
previous builds, and the default level has been raised to 100.)
|
||||
|
||||
Inform has for some time had the phrase
|
||||
```
|
||||
the room north from the Ballroom
|
||||
```
|
||||
to look up map connections; it now recognises "north of the Ballroom" as being
|
||||
synonymous. This reports the room which somebody would get to if they could
|
||||
go, in an unimpeded way, north from the Ballroom - perhaps through a door.
|
||||
The result is always a room, or nothing. In similar vein, the new phrase:
|
||||
```
|
||||
the door D from/of R
|
||||
```
|
||||
produces the door which lies in direction D from room R, or else nothing if
|
||||
there's no door there.
|
||||
|
||||
It's now legal to set values that vary "usually". For instance:
|
||||
```
|
||||
The speed limit is a speed that varies. The speed limit is usually 100 mph.
|
||||
```
|
||||
This should help extension writers who are nervous of setting values which
|
||||
their users might want to alter.
|
||||
|
||||
Inform usually allows "while" as synonymous with "when", but until now an
|
||||
exception has been that it insists on "Understand... when..." rather than
|
||||
"Understand... while...". Both wordings are now allowed.
|
||||
|
||||
Build 5U92 was rather strict about not allowing colons in text substitutions.
|
||||
Usually that's a good thing, as it catches various accidents, and in general
|
||||
text substitutions shouldn't contain punctuation. But that overlooked times
|
||||
of day written with colons, as here:
|
||||
```
|
||||
"The stage is [if the time of day is after 8:00 PM]filled[else]empty[end if]."
|
||||
```
|
||||
So colons have been allowed again if used in explicit times of day.
|
||||
|
||||
New rules have been added to the Standard Rules:
|
||||
```
|
||||
standard report preferring abbreviated room descriptions rule
|
||||
standard report preferring sometimes abbreviated room descriptions rule
|
||||
standard report preferring unabbreviated room descriptions rule
|
||||
standard report switching score notification on rule
|
||||
standard report switching score notification off rule
|
||||
```
|
||||
so that these out of world actions are reported by the report rules, which
|
||||
can then be modified or pre-empted, just as the corresponding rules can for
|
||||
ordinary actions.
|
||||
|
||||
In previous builds, and in keeping with ancient Infocom customs, "leave" was
|
||||
synonymous with "go" when typed as a command. On balance, though, this leads
|
||||
to confusion - especially since "go" often has the sense of "enter", exactly
|
||||
reversing the meaning of "leave". "Leave" is now synonymous with "exit".
|
||||
|
||||
Perhaps this is really a bug fix: the phrase option "if absent" for the phrase
|
||||
"add V at entry N in L" (for adding a value to a list in a given position) was
|
||||
claimed to work in the documentation for previous builds, but in fact it has
|
||||
only just been implemented in this build. (Previous builds did allow "if absent"
|
||||
in the case where V is a list, but not where it is a single entry; and in the
|
||||
case where no entry position is specified.)
|
||||
|
||||
- It's hard to say whether this is a bug fix or not; more a slight change in
|
||||
philosophical outlook. Inform previously rejected this sort of thing:
|
||||
```
|
||||
Before taking something:
|
||||
if a block is larger than the noun, say "Look out!"
|
||||
```
|
||||
on the grounds that it couldn't know whether the noun was comparable in
|
||||
size to blocks - it would be if the noun were a block, but not otherwise.
|
||||
This generated a problem message. What now happens is that the above
|
||||
compiles to run-time checking, and a run-time problem is generated if
|
||||
the noun ever turns out not to be a block. (This is done because we
|
||||
often have a situation where the source text does guarantee things about
|
||||
the kinds of objects involved, but which Inform is unable to see.)
|
||||
- Another one that is arguably a change of design rather than a bug fix:
|
||||
subject-verb inversion in assertions has been withdrawn for prepositions
|
||||
which are also participles. In previous builds, Inform would accept the
|
||||
somewhat Yoda-like sentence
|
||||
```
|
||||
Holding the light sabre is the young Jedi.
|
||||
```
|
||||
which is an inversion of
|
||||
```
|
||||
The young Jedi is holding the light sabre.
|
||||
```
|
||||
...yet has the same meaning. Inversions are often perfectly natural in
|
||||
English:
|
||||
```
|
||||
On the table is a jar of marmalade.
|
||||
```
|
||||
So we don't want to rule them out altogether. But we do want to prevent
|
||||
these sentences from being misread as inversions:
|
||||
```
|
||||
Holding Area is a room.
|
||||
Wearing something is good manners.
|
||||
```
|
||||
- The order of testing the conditions on when a rule applies has been reversed.
|
||||
That sounds a more dramatic change than it really is; it means that a rule
|
||||
such as
|
||||
```
|
||||
Instead of X when Y: ...
|
||||
```
|
||||
will test to see if the action is X before testing whether condition Y is
|
||||
also true, rather than vice versa, as happened in previous builds. The
|
||||
main reason for this is so that a rule like
|
||||
```
|
||||
Before printing the name of a vehicle (called the car) when the
|
||||
traffic warden cannot see the car: ...
|
||||
```
|
||||
works properly, because the "car" variable is set during the test of X
|
||||
(that the "printing the name" activity is being applied to "a vehicle
|
||||
(called the car)"), and so is available for use in condition Y
|
||||
("the traffic warden cannot see the car").
|
||||
- When one rule is "listed instead of" another one in the same rulebook,
|
||||
previous builds of Inform duplicated the first rule to provide the
|
||||
replacement; this had some advantages but broke the principle, implicit
|
||||
in the syntax and usually helpful (not to mention announced in the manual)
|
||||
that a rule can only occur once in the same rulebook. This build moves
|
||||
rather than duplicates the build. There was some debate about this on
|
||||
rec.arts.int-fiction in February 2009, and opinions were divided; we
|
||||
changed our own minds in the making of this new build; but in end, what
|
||||
lawyers call a bright-line test - a simple easily-stated principle - seemed
|
||||
for the best.
|
||||
- When an actor other than the player tries an action which needs him to be able
|
||||
to touch one of the objects involved, Inform normally applies the basic
|
||||
accessibility rule (and thence the accessibility rulebook) to make the
|
||||
decision about whether this should be allowed, just as it would if the
|
||||
player tried the same thing. In previous builds, an exception was made
|
||||
for doors and backdrops, whose ability to be present in multiple rooms
|
||||
made it difficult to determine accessibility for third parties. Erring
|
||||
on the side of caution, the item would be assumed accessible. In this
|
||||
build, that leniency is narrowed so that it applies only in the case
|
||||
of third-party actors in a different location from the player.
|
||||
- When Inform tests to see if an action applies, and it finds a region where it
|
||||
might have expected a room, it reads this as any room in that region.
|
||||
This is why:
|
||||
```
|
||||
Instead of going from the Great Tundra, ...
|
||||
```
|
||||
matches going from any room in the Great Tundra region, and since an
|
||||
action cannot apply to a region, there's no ambiguity here. But 5U92 also
|
||||
applied the same room to activities, which _can_ apply meaningfully to
|
||||
regions in their own right, and this was a bug. It has been fixed.
|
||||
- In previous builds, it was legal but futile to try actions like this one:
|
||||
```
|
||||
try asking Xerxes about "Athenians";
|
||||
```
|
||||
futile because command text is always reduced to lower case, so that
|
||||
the capital A in Athenians makes it guaranteed not to match anything
|
||||
Xerxes knows about. In this build, command snippets like this in a "try"
|
||||
are automatically reduced to lower case.
|
||||
|
||||
### Performance
|
||||
|
||||
The Inform 7 compiler is now more economical on memory usage. Previously
|
||||
it consumed around 43MB on a small run, and 78MB on "Bronze", a typically-sized
|
||||
complete work; those figures are now 9MB and 25MB respectively. (This may
|
||||
make Inform more viable on low-memory netbooks.)
|
||||
|
||||
Inform's use of temporary files is more or less abolished in this build;
|
||||
thus a typical problem-free run on a large source text now involves around
|
||||
100 file writes, almost all index pages, where previous builds might make
|
||||
around 1400 file writes. (This may speed Inform up on slow media such as
|
||||
memory sticks.) Internally, Inform now makes use of flexible-sized memory
|
||||
buffers instead, and as a side-effect it should be much harder for
|
||||
maliciously-constructed source text to crash Inform by means of buffer
|
||||
overruns - though nobody at present is trying this, so far as we know.
|
||||
|
||||
The upper limit of 500,000 words of source text has been removed; there is
|
||||
now no upper limit. This once seemed unthinkably large, but the recent
|
||||
release of Aaron Reed's 385,000-word "Blue Lacuna" changed our minds.
|
||||
"A la recherche du temps perdu" is about 1,500,000 words, "Clarissa" about
|
||||
1,000,000, and "War and Peace" about 500,000, so it's not impossible for
|
||||
novels to grow to such sizes.
|
||||
|
||||
"Blue Lacuna" provided some real-world profiling information on how Inform
|
||||
handled very large source texts. Although no major bottlenecks were found,
|
||||
a little tuning produced about a 10% speed gain on these larger projects.
|
||||
|
||||
Inform now takes advantage of a March 2009 extension to the Glulx virtual
|
||||
machine specification which causes certain I6 veneer routines (called very
|
||||
frequently during play) to be implemented natively rather than in Glulx
|
||||
emulation. This can result in speed-ups of a factor of 2 or 3, though those
|
||||
gains will only be realised on a Glulx interpreter which supports the new
|
||||
"acceleration" feature. (The Glulx interpreters built into Inform as the
|
||||
Game panel do support it, and work is under way in making stand-alone Glulx
|
||||
interpreters support this too.)
|
||||
|
||||
### Options and Telemetry
|
||||
|
||||
When Inform starts up, it now looks for a file called Options.txt inside
|
||||
the user's home folder for Inform. (On Mac OS X, this is "~/Library/Inform";
|
||||
on Windows, "My Documents\Inform", and so on.) If the file is present, then
|
||||
the text in it is added to the source text of everything Inform translates.
|
||||
|
||||
This should be used only to set use options, and given the potential for
|
||||
confusion (it's easy to forget that the Options.txt file is there), should
|
||||
only be used if really necessary.
|
||||
|
||||
A new use option, "Use telemetry recordings.", causes Inform to copy its
|
||||
outcome and problem messages to files in the home folder (see above) as
|
||||
they occur. These files are dated, so that for instance
|
||||
```
|
||||
Telemetry 2009-03-25.txt
|
||||
```
|
||||
contains all of the recorded activity on 25 March 2009. Telemetry only
|
||||
records the contents of the "Problems" panel - notes of success or failure,
|
||||
and problem messages - and (see below) nothing is transmitted via any network,
|
||||
so it isn't really surveillance. The user can deliberately add a note to
|
||||
the current telemetry file by writing something like this in source text:
|
||||
```
|
||||
* "I don't get it! What's a kind? Why can't the lamp be lighted?"
|
||||
```
|
||||
(This is a way to make a note for the benefit of someone who will read the
|
||||
telemetry file - for instance, to comment on a problem message that has just
|
||||
appeared. Note the double-quotes. Otherwise, it's meant to look like the
|
||||
standard way that beta-testers mark up IF transcripts.)
|
||||
|
||||
These two features have been added in response to requests from education
|
||||
users. Let's suppose that Mr Lebling, who teaches 5th grade in Minnesota,
|
||||
wants to set things up just right for his class. He installs Inform on the
|
||||
ten computers they will use, and also copies an Options.txt file from his
|
||||
memory stick onto each one. The Options.txt file reads:
|
||||
```
|
||||
Use serial comma.
|
||||
Use American dialect.
|
||||
Use telemetry recordings.
|
||||
```
|
||||
Now Mr Lebling's class won't be confronted with English spellings, and
|
||||
so on. And most of the kids are happy, but Mr Lebling gets the feeling that
|
||||
young Marc wasn't really paying attention, so after class he checks that day's
|
||||
Telemetry file for that computer to see what Marc was up to, and whether he
|
||||
was stuck on something.
|
||||
|
||||
(The Telemetry feature was originally devised to help with testing the
|
||||
response of real users to problem messages, and to find out which problems
|
||||
are most often generated. Telemetry systems like this are often built in to
|
||||
large applications - for instance, Microsoft Word - and the name implies
|
||||
that data can be sent back to the manufacturers, who thus get to look over
|
||||
their users' shoulders. But Inform transmits nothing at all, even if the
|
||||
use option is set, which by default it is not. So this feature really can't
|
||||
invade anyone's privacy. But we would, if people are willing, be very
|
||||
interested to see telemetry files resulting from genuine classroom use, and
|
||||
use by complete newcomers - we'd really like to know which problem messages
|
||||
puzzle people, and what the stumbling blocks are.)
|
||||
|
||||
## Documentation, examples and extensions
|
||||
|
||||
### Recipe Book
|
||||
|
||||
- Slightly expanded the section on start up features in order to include the
|
||||
idea of doing some game initialization, as necessary.
|
||||
- Added a section "Other Built-in Actions" to the Commands section, which
|
||||
provides some explanation and cross-referencing for a number of types
|
||||
of action.
|
||||
- Extensively rewrote the "Actions on Multiple Objects" section to provide a
|
||||
clearer explanation of how the multiple objects list works.
|
||||
- Expanded the "Modifying Existing Commands" section to explain more clearly
|
||||
how to change the carrying requirements and related rules, and
|
||||
cross-referenced this segment from "Barter and Exchange", "Taking,
|
||||
Dropping, Inserting and Putting", and several sections that pertain to
|
||||
locking or placement.
|
||||
- "Room Descriptions" section added to the "Place" chapter, which mostly
|
||||
contains material formerly under "Commands > Looking". Looking now points
|
||||
to this section; this organization change is due to assorted user
|
||||
feedback about where people were looking for material most often (and
|
||||
not finding it).
|
||||
- "Going, Pushing things between rooms" expanded to explain the behavior of
|
||||
pushing more clearly; to offer more examples of how to write conditional
|
||||
rules governing pushing; and to lay out the details of meddling on room
|
||||
descriptions produced specifically in the context of going actions (as
|
||||
opposed to in response to LOOK). The previously under-documented "the
|
||||
room-describing action" variable used by the looking rulebooks is also
|
||||
explained in this section.
|
||||
- "Scoring" expanded to explain the NOTIFY ON and NOTIFY OFF commands, to
|
||||
exemplify how to modify their behavior, and to refer the player to
|
||||
default message extensions in order to change the wording of such
|
||||
messages as "[Your score has just gone up by two points.]"
|
||||
- "Saving and Undoing" expanded to mention undo prevention and warn against
|
||||
some of the dangers of using it.
|
||||
- "Glulx Multimedia Effects" expanded to discuss in more detail what is and
|
||||
isn't at least theoretically possible under Glulx, in terms of sounds
|
||||
and images. (Several people on the newsgroup have asked recently whether
|
||||
it is possible to have multi-channel sounds or fade-ins and fade-outs
|
||||
under Glulx. The answer is yes, but it is not easy. The section suggests
|
||||
the prospective author check out the latest tools from the Inform
|
||||
extensions site.)
|
||||
- "Settings and Status Checks During Play" section added to the Out of World
|
||||
chapter; this is largely a pointer to other sections of the manual
|
||||
(verbosity under Looking, notification under Scoring), but it also
|
||||
explains the other more obscure out of world actions. This is in response
|
||||
to an outstanding request that the unusual out of world actions be
|
||||
better documented.
|
||||
- "Background, Memory and Knowledge" divided into two, considerably expanding
|
||||
the discussion of ways to track player character knowledge and use that
|
||||
tracking to affect descriptions, object names, and scope.
|
||||
|
||||
### Examples
|
||||
|
||||
- Added "The Speed of Thought" to demonstrate unit conversions.
|
||||
- Added "Hatless" to spell out some details of how "now" works with randomness.
|
||||
- Added "Slogar's Revenge" to demonstrate unlocking a door with a key can be
|
||||
worn instead of carried (and thus how to manipulate the carrying
|
||||
requirements rules)
|
||||
- Added "The Facts Were These" to demonstrate giving multiple objects at once,
|
||||
with different results than if the player offered them separately
|
||||
- Added "Oyster Wide Shut" to offer an alternate (and more flexible) way to
|
||||
handle the inventory listing of properties such as "(closed)"; it also
|
||||
allows the author to add his own properties to the standard list.
|
||||
- Added "Whither?" to illustrate letting the player refer to a door as "the
|
||||
west door" or "the east door" under the appropriate circumstances.
|
||||
- Added "Widget Enterprises" to demonstrate equations.
|
||||
- "The Abolition of Love" and "What Not To Wear" changed to reflect the new
|
||||
flexibility of "now".
|
||||
- "Zorb" updated to deal with a sentence of explanation that stopped without
|
||||
ending, and also to make it possible for the player to ride in the Zorb.
|
||||
- "Identity Theft" given extra commentary to explain the different effects of
|
||||
compiling under Z- or Glulx.
|
||||
- "Four Cheeses" improved with more refinement of scope-handling for interacting
|
||||
with a distant person who should not be visible.
|
||||
- "Verbosity" slightly tweaked to give more information about how defaults work.
|
||||
- "Verbosity 2" added to demonstrate how to *force* the player always to use
|
||||
full-length room descriptions (rather than merely setting the default and
|
||||
allowing him to modify it).
|
||||
- "Only You" simplified and moved to an earlier section because Inform now
|
||||
pre-defines the adjective "even".
|
||||
- "Channel 2" typo fixed.
|
||||
- "Peeled 2" error fixed, and the documentation slightly expanded.
|
||||
- "Dinner is Served" revised to make the sample code more safely portable into
|
||||
a larger game, and to remove a procedural rule that is no longer necessary.
|
||||
- "Puncak Jaya" edited to improve behavior with revised accessibility rules,
|
||||
and to deal with the case where a ghost is the second noun rather than
|
||||
the noun.
|
||||
|
||||
### Extensions
|
||||
|
||||
- New built in extension, "Metric Units": see above.
|
||||
- Documentation for "Menus" substantially rewritten and the version number
|
||||
advanced to 3.
|
||||
- "Basic Screen Effects" and "Complex Listing" adjusted to be more safely
|
||||
compatible with "Case Management": all three were defining a printed_text
|
||||
array but not consistently, with the result that some compilation effects
|
||||
varied depending on which extension was included first.
|
||||
- "Rideable Vehicles" tidied up to be more consistent in handling how actors
|
||||
other than the player are treated; version number advanced to 3. The rules
|
||||
here have been more cleanly arranged, but with some renamings as a result -
|
||||
for instance, the "no person mounting a mounted animal rule" used to
|
||||
apply only to non-player actors, while the corresponding rule for the
|
||||
player was anonymous. There is now a single "can't mount when mounted on
|
||||
an animal rule". So any source text making use of the old rule names in this
|
||||
extension will need tidying up, or will need to use version 2. The actual
|
||||
functionality of the extension has not changed except that commands like
|
||||
"tanya, get on mystery" are now correctly understood; a cosmetic blemish in
|
||||
descriptions when multiple people are riding the same animal has been fixed.
|
||||
|
||||
## Problem messages
|
||||
|
||||
- A process of trying to improve the quality of problem messages is under way,
|
||||
though it's certainly not complete. Here the aim has been to be clearer and
|
||||
more direct, with hints typographically separated from their messages to
|
||||
reduce the tendency of long paragraphs to resist the tired eye. Most problem
|
||||
messages are now accompanied by blue documentation-link icons to relevant
|
||||
passages of the manual.
|
||||
- Attempts to determine "the time since Alien Landing began" or "the time when
|
||||
World Obliteration ended" are not possible if these scenes have, in fact,
|
||||
never begun or ended. In previous builds, these questions would produce
|
||||
misleading answers. They now produce run-time problem messages.
|
||||
- Problem message added to explain why doors cannot be "part of" other things,
|
||||
and how to achieve the same effect in other ways.
|
||||
- Problem message added, in place of an internal error, if directions are created
|
||||
by complex rather than simple sentences (in defiance of the instruction
|
||||
in the documentation not to do this).
|
||||
- Problem message added, in place of an internal error, if the source tries to
|
||||
assign properties to all kinds (e.g. by "A kind can be cool or lame.").
|
||||
- Problem message clarified when the source tries to use the name of a kind
|
||||
of value as a 'let' variable name (e.g., "let the number be 10").
|
||||
- Problem messages improved when lists are rejected because the spacing before
|
||||
commas is missing.
|
||||
- Problem message added to be more helpful if "out of play" is used instead of
|
||||
"off-stage".
|
||||
- Problem messages added when Inform 6 code is Included in place of template
|
||||
files which don't exist, or parts of them which don't exist.
|
||||
- Problem message added, in place of an internal error, for attempts to
|
||||
construct a phrase in a vague way, like so:
|
||||
```
|
||||
The factorial of a number is a phrase.
|
||||
```
|
||||
- Problem message added, in place of an I6 error, when a property name containing
|
||||
bizarre textual matter is created, usually as a result of missed punctuation:
|
||||
for instance, because of the missing full stop after "climbed" in:
|
||||
```
|
||||
The Tree can be climbed "There is a tree in the middle of the lawn."
|
||||
```
|
||||
- Problem message added, in place of an internal error, for attempts to give
|
||||
definitions to phrases like "To try (the feat - an action): ..." which
|
||||
treat "feat" as if it were a value. (Inline definitions can use this,
|
||||
but not as a value, and nobody else can use it all. "Stored action" would
|
||||
be fine, as the problem message explains.)
|
||||
- Problem message added to catch attempts to say that whole kinds of backdrop
|
||||
are "everywhere". (You can say a backdrop is everywhere, but only one
|
||||
backdrop at a time.)
|
||||
- Problem message added to catch certain name-clashes between new values
|
||||
created as table entries, and other values already existing.
|
||||
- Problem message added to catch "a random X" where X describes something with
|
||||
a domain which can't sensibly be searched - "a random text", for instance.
|
||||
- Problem message added to prevent defining a rulebook, activity or action
|
||||
variable with a name which already has a meaning as something else.
|
||||
|
||||
## Bug fixes
|
||||
|
||||
- Bug fixed whereby a hidden limit of 255 grammatically different command verbs
|
||||
was being applied. Exceedingly this limit (which is quite hard, in fact)
|
||||
resulted previously in inexplicable mix-ups between the command verbs at
|
||||
run-time, clearly a very bad thing. Inform now enforces the limit on the
|
||||
Z-machine, where it's inherent, and lifts it on Glulx, where there can
|
||||
now be 65535 grammatically different command verbs. (Applying this fix
|
||||
required changes to the I6 compiler; we'd like to thank Brian Rapp, who
|
||||
posted issue C63010 to the I6 support pages, for putting us on the right
|
||||
track.)
|
||||
- Bug fixed whereby releasing an existing story file (for instance to publish
|
||||
an old I6 project with new cover art and bibliographic data) would
|
||||
generate a spurious I6 error.
|
||||
- Bug fixed whereby a bogus "too many activities" run-time problem message would
|
||||
appear once an "[any ...]" token in parsing produced a particular kind of
|
||||
parser error message on more than 20 different turns during play.
|
||||
- Bug fixed whereby a condition property with three or more names, which was
|
||||
also given an explicit property name, would have the last name wrongly
|
||||
taken down: thus
|
||||
```
|
||||
A fruit can be unripened, ripe, overripe, or mushy (this is its
|
||||
squishiness property).
|
||||
```
|
||||
would lead to "mushy" not properly being defined.
|
||||
- Bug fixed whereby lengths of time (though not times of day) mixed up hours
|
||||
and minutes, so that
|
||||
```
|
||||
let T be 8 hours 3 minutes;
|
||||
```
|
||||
would in fact set T to 3 hours 8 minutes. (Blushes all round.)
|
||||
- Bug fixed whereby route-finding wasn't working through one-to-one relations.
|
||||
(It seems we just forgot this case: one-to-various, various-to-one, and
|
||||
various-to-various all worked.)
|
||||
- Bug fixed whereby, if two actions look the same except that one takes two
|
||||
objects rather than one, then check/carry out/report rules can sometimes
|
||||
apply to the wrong one. For instance, given actions "tying" and "tying it
|
||||
to", a rule such as "Check tying something to: ..." could wrongly apply
|
||||
to the one-object form "tying" rather than to the two-object form.
|
||||
- Bug fixed whereby a stored action property attached to a kind of object will
|
||||
be such that all instances of that kind which do not define their own
|
||||
value for this property will forever after share the default value, even
|
||||
if it is changed for some instances and not others.
|
||||
- Bug fixed whereby mysterious run-time problems to do with your former self
|
||||
not having properties would appear in situations where the player is named
|
||||
as a character, and a property has been given to all people.
|
||||
- Bug fixed whereby a list of ordinary texts being copied into a list of indexed
|
||||
texts would lose their contents, or be corrupted.
|
||||
- Bug fixed whereby it would sometimes be possible to reach inside a closed
|
||||
container, if that container were part of something else which could be
|
||||
touched by the person concerned.
|
||||
- Bug fixed whereby a person asked to perform an out of world action will
|
||||
silently do nothing. The reply is now something like this:
|
||||
```
|
||||
> CLARK, SAVE
|
||||
[That command asks to do something outside of play, so it can only
|
||||
make sense from you to me. Clark cannot be asked to do this.]
|
||||
```
|
||||
(This is a new library message - Miscellany number 74.)
|
||||
- Bug fixed whereby "does the player mean" rules would sometimes not apply in
|
||||
several cases where the grammar in question involves two nouns, and the
|
||||
second noun either follows immediately on the first or has some stipulation
|
||||
applied to it (such as that it be "[someone]"), or where the first noun
|
||||
has some stipulation applied but which the second noun does not share.
|
||||
- Bug fixed whereby, relatedly, the definition of the "block tying rule" in the
|
||||
Standard Rules was loosely worded and could catch one-object forms of
|
||||
tying, as well as the two-object form in the Standard Rules for which it
|
||||
was intended.
|
||||
- Bug fixed whereby Glulx programmers creating additional Glk windows would find
|
||||
that sound channels were improperly created, and that random-number
|
||||
generation would not necessarily be "fixed" on debugging runs. (Many
|
||||
thanks to Eliuk Blau, for both finding and correcting this.)
|
||||
- Bug fixed whereby units set up to imitate decimal places would print values
|
||||
wrongly if in between 0 and -1; e.g., given "A weight is a kind of value.
|
||||
-99.999 specifies a weight.", the value "-0.123" would print as "0.123".
|
||||
- Bug fixed whereby table entries initially set to unspecified lists, with a
|
||||
column entry described only as (say) "a list of times", would then during
|
||||
run-time appear sometimes to be lists of numbers regardless of what they
|
||||
had been intended to contain.
|
||||
- Bug fixed whereby optional clauses in descriptions of actions would not always
|
||||
be checked for sense - or rather, they would, but would fail with an
|
||||
internal error instead of a helpful problem message.
|
||||
- Bug fixed whereby setting or testing the "to be through" relation, for talking
|
||||
about the far side of one-sided doors, silently failed during play.
|
||||
- Bug fixed whereby a various-to-various relation where one of the two domains
|
||||
was a kind with no instances would sometimes produce I6 errors in
|
||||
translation.
|
||||
- Bug fixed whereby, if the player gets into an enterable container on top of
|
||||
a pushable between rooms enterable supporter, and then tries to push that
|
||||
supporter to another room, a spurious programming error is displayed as
|
||||
well as the (thoroughly merited) reproof.
|
||||
- Bug fixed whereby a supporter which held only an undescribed item would
|
||||
sometimes be mentioned in a broken-off sentence in a room description; e.g.
|
||||
```
|
||||
An easel is a supporter in the studio. "An old fashioned easel is
|
||||
here." A painting is on the easel. It is undescribed.
|
||||
```
|
||||
would produce
|
||||
```
|
||||
An old fashioned easel is here.
|
||||
On the easel .
|
||||
```
|
||||
- Bug fixed whereby confusion could occur between actions which have similar
|
||||
names except that one takes two nouns and the other only one, e.g., as
|
||||
between "pointing at" and "pointing it at".
|
||||
- Bug fixed whereby the use of brackets in heading names - e.g. "Section 2(c)1" -
|
||||
could cause bracketed stipulations like "(for use with...)" to be
|
||||
unrecognised.
|
||||
- Bug fixed whereby matching the names of extensions in headings (those "for
|
||||
use with E by A", for instance) was performed case-sensitively - so that
|
||||
unless the exactly correct casing was used, the heading would behave
|
||||
unexpectedly. (Sorry: some people thought this was us being pedantic,
|
||||
but in fact it was an accident.)
|
||||
- Bug fixed whereby the SHOWME testing command would incorrectly claim that
|
||||
some items were "initially carried".
|
||||
- Bug fixed whereby the serial comma would be missed out of some lists produced
|
||||
by "say", even when "Use serial comma" was in force.
|
||||
- Bug fixed whereby mapping tips given to improve the World index map would not
|
||||
always work where room names included the words "of" or "from".
|
||||
- Bug fixed whereby the Kinds index would sometimes doubly list an either/or
|
||||
property ("Usually... drab not colorful, colorful not drab").
|
||||
|
||||
## Mac OS X app
|
||||
|
||||
- A new option on the Advanced panel of the Preferences allows the user to
|
||||
choose between Git and Glulxe as the interpreter used in the Game panel
|
||||
to play back Glulx-format projects.
|
||||
- A new option on the Format menu, "Enable elastic tabs", causes Tables in the
|
||||
Source to be shown with elastic-width tabbed columns, which are the
|
||||
right width for their content. (Typing a single tab is enough to mark
|
||||
the end of the contents of a table entry; it's as if the tab is made
|
||||
of something elastic, because it stretches as needed.)
|
||||
- Various minor bugs have been removed.
|
||||
|
||||
## Windows app
|
||||
|
||||
- The spell check dialog now lets the user choose the dictionary language, and
|
||||
whether or not all text is checked, or just the text in quotes.
|
||||
- Spell check dictionaries for different languages can be installed by copying
|
||||
the ".aff" and ".dic" files into the "Dictionaries" sub-directory of
|
||||
the Inform 7 installation. Dictionaries can be downloaded from the
|
||||
OpenOffice project at
|
||||
```
|
||||
http://wiki.services.openoffice.org/wiki/Dictionaries
|
||||
```
|
||||
- In the Source tab's Replace dialog, selecting "Replace All" will also replace
|
||||
the currently selected word, if it matches.
|
||||
- The interpreter in the Game tab can now play MOD music files.
|
||||
- Sounds playing in a game in the Game tab are stopped when the game stops.
|
||||
- Interpreter command files (containing a list of commands entered by the user
|
||||
into a game, as recorded by a game interpreter such as Frotz) can be
|
||||
imported into the skein with the File menu item "Import into Skein".
|
||||
- There is now a choice of Glulx interpreters for the Game tab: either Glulxe
|
||||
or Git. If there are any problems with games under Git that do not
|
||||
show up under Glulxe, we would be interested to hear of it.
|
||||
- The directory that Inform uses to store extensions, documentation, etc, which
|
||||
defaults to the user's "My Documents" folder, can be changed by
|
||||
creating a text file "home.txt" in the same directory as the Inform
|
||||
executable, containing the path to the required home directory.
|
||||
- More options added to the preferences dialog.
|
||||
- Alt-cursor left and right are now mapped onto the tab's back and forward
|
||||
actions, rather than the web browser's history.
|
||||
|
||||
## Linux app
|
||||
|
||||
- Colour now works in the Game tab.
|
||||
- The Game tab now has a choice of two Glulx interpreters: in addition to
|
||||
the traditional Glulxe, which has been brought up to date with version 0.4.4,
|
||||
one can now test one's Glulx projects in Git 1.2.2.
|
||||
- "Elastic tabstops" have been added as an optional way to display the source
|
||||
text - this makes table columns the right width regardless of where tab
|
||||
positions lie. This feature can be enabled in the Preferences window.
|
2322
notes/release/7-2.md
Normal file
2322
notes/release/7-2.md
Normal file
File diff suppressed because it is too large
Load diff
3026
notes/release/8-1.md
Normal file
3026
notes/release/8-1.md
Normal file
File diff suppressed because it is too large
Load diff
276
notes/release/8-2.md
Normal file
276
notes/release/8-2.md
Normal file
|
@ -0,0 +1,276 @@
|
|||
# Release notes for Inform v8.2 (build 6E72)
|
||||
|
||||
This release was made on 1 Jul 2010, 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.
|
||||
Suggestion numbers, also large but not starting with a 0, referred to tickets at
|
||||
a Uservoice forum then in use.
|
||||
|
||||
This is part of the [historical archive of release notes](../version_history.md).
|
||||
|
||||
## Overview
|
||||
|
||||
This minor release of Inform contains no new features, and simply corrects a
|
||||
number of bugs reported in build 6E59. We would like to thank Jesse McGrew,
|
||||
especially, for setting up the Mantis-powered bug tracker on the Inform
|
||||
website; but also, of course, all of the people who registered to use the
|
||||
tracker, and who filed reports. The case numbers below, alarmingly in seven
|
||||
digits, are references to this database at www.inform7.com/bugs.
|
||||
|
||||
## Documentation, examples and extensions
|
||||
|
||||
### Examples
|
||||
|
||||
- "WXPQ": Corrected the commentary portion of the example, which continued to
|
||||
refer to outdated (as of 6E59) syntax for detecting parser errors.
|
||||
- "North by Northwest": updated to mention "Use DICT_WORD_SIZE of..." as an
|
||||
option to raise the nine-letter dictionary limit when compiling to Glulx.
|
||||
|
||||
### Extensions
|
||||
|
||||
- "Plurality": updated to remove deprecated "using... option" phrases; see
|
||||
report 0000073.
|
||||
- "Locksmith": updated to version 10 to remove deprecated "using... option"
|
||||
phrases.
|
||||
- "Complex Listing": updated to version 7 to remove deprecated "using... option"
|
||||
phrases.
|
||||
|
||||
## Bug fixes
|
||||
|
||||
### Source text and punctuation
|
||||
|
||||
Bug fixed (0000045) whereby phrases defined in the form "(list) ... words ...
|
||||
(list)" couldn't then be used with constant lists.
|
||||
|
||||
Bug fixed (0000064) whereby hard line breaks typed in the middle of text
|
||||
with substitutions would cause problems.
|
||||
|
||||
Bug fixed (0000110) whereby Inform would sometimes not allow "otherwise"
|
||||
clauses in "if" phrases whose condition ended with a digit, and whose first
|
||||
character of the succeeding phrase began with one.
|
||||
|
||||
### Headings
|
||||
|
||||
Bug fixed (0000051) whereby heading cues for problem messages weren't very
|
||||
nicely spaced, vertically.
|
||||
|
||||
### Extensions
|
||||
|
||||
Bug fixed (0000063) whereby installing an extension whose name contains a
|
||||
full stop would cause all kinds of unfortunate results, such as Inform refusing
|
||||
to compile projects altogether. (Full stops aren't allowed in extension names.)
|
||||
|
||||
Bug fixed (0000098) whereby the use of sections replacing sections found in
|
||||
extensions would mask any problem messages about those extensions having the
|
||||
wrong version.
|
||||
|
||||
Bug fixed (0000116) whereby variables in "unindexed" sections of extensions
|
||||
would nevertheless be included in extension documentation (not technically
|
||||
speaking the index; still, it must be right to exclude them).
|
||||
|
||||
### Assertions and creations
|
||||
|
||||
Bug fixed (0000130) whereby confusions of the start location with a direction
|
||||
were reported with a cryptic problem message.
|
||||
|
||||
Bug fixed (0000112) whereby Inform could crash if asked to define objects using
|
||||
a table, and one of the objects exists already with a different meaning.
|
||||
|
||||
Bug fixed (0000046) whereby the compiler might go into an endless loop issuing
|
||||
problem messages in response to lines such as
|
||||
```
|
||||
There are 5 numbers in Home.
|
||||
```
|
||||
Problem message reporting such errors improved.
|
||||
|
||||
### Model world
|
||||
|
||||
Bug fixed (0000038) whereby examining enterable supporters sometimes
|
||||
produced odd text.
|
||||
|
||||
Bug fixed (0000039) whereby a room whose name included the word "scene"
|
||||
provoked spurious problem messages.
|
||||
|
||||
### Properties
|
||||
|
||||
Bug fixed (0000035) whereby assertions like "A tennis court has numbers called
|
||||
length and width." would make one property, called "length and width", not
|
||||
two, "length" and "width".
|
||||
|
||||
Bug fixed (0000037) whereby "X provides the property P" wouldn't always work
|
||||
if P were a property whose name coincides with that of a kind of value.
|
||||
|
||||
Bug fixed (0000082) whereby adjective definitions based on the value of a
|
||||
property would produce spurious problem messages if that property were
|
||||
non-arithmetic, e.g., a truth state.
|
||||
|
||||
Bug fixed (0000117) whereby rooms not explicitly declared as such could not
|
||||
be used as values of a property required to hold only rooms.
|
||||
|
||||
### Relations
|
||||
|
||||
Bug fixed (0000104) whereby one-to-one relations of values couldn't always
|
||||
be tested directly.
|
||||
|
||||
Bug fixed (0000141) whereby conditions implicitly involving searches could
|
||||
not be used in definitions of relations, and produced a spurious internal
|
||||
error if they were.
|
||||
|
||||
Bug fixed (0000043) whereby Inform was not making sensible assumptions about
|
||||
the valencies of relations when these weren't explicitly given; e.g. in
|
||||
```
|
||||
Pet ownership relates various animals to a person (called the owner).
|
||||
```
|
||||
it's clear that this is various-to-one, but Inform was assuming v-to-v.
|
||||
|
||||
Bug fixed (0000041) whereby relations defined using a named property, but
|
||||
for values not able to take properties, resulted in obscure run-time problem
|
||||
messages rather than a helpful compile-time one.
|
||||
|
||||
Bug fixed (0000042) whereby equivalence relations of unbounded kinds, such
|
||||
as numbers, weren't working properly.
|
||||
|
||||
Bug fixed (0000049) whereby constant names of relations couldn't be used as
|
||||
values of variables or table entries, etc., if those relations were over
|
||||
unbounded kinds.
|
||||
|
||||
Relation memory usage slightly reduced in a few cases (see 0000059).
|
||||
|
||||
### Actions
|
||||
|
||||
Bug fixed (0000057) whereby requesting an actor to end the story resulted in
|
||||
an "unable to do that" message.
|
||||
|
||||
### Rules and rulebooks
|
||||
|
||||
Bug fixed (0000143) whereby Inform could crash on the name of a rule which
|
||||
contained parentheses.
|
||||
|
||||
Bug fixed (0000071) whereby phrases to invoke value-producing rulebooks didn't
|
||||
work with lists or some other complicated values.
|
||||
|
||||
Bug fixed (0000072) whereby phrases which produce values didn't always work if
|
||||
those values were to be lists or some other complicated values.
|
||||
|
||||
Bug fixed (0000070) whereby spurious programming errors about the "MStack"
|
||||
would appear during start-up in some cases if rulebooks had variables which
|
||||
contained lists.
|
||||
|
||||
### Lists
|
||||
|
||||
Bug fixed (0000074) whereby constant lists were constrained to no more than
|
||||
127 entries. (The most serious bug in 6E59, and the main reason for this early
|
||||
bug-fixing re-release.)
|
||||
|
||||
### Tables
|
||||
|
||||
Bug fixed (0000076) whereby self-referential constant lists didn't work in
|
||||
tables defining a kind of value.
|
||||
|
||||
### Scenes
|
||||
|
||||
Bug fixed (0000075, 0000077) whereby the scene change machinery rule would
|
||||
always succeed, rather than end without result, which made it impossible to
|
||||
have rules working after it in the scene changing rulebook.
|
||||
|
||||
### Phrases and functional programming
|
||||
|
||||
Bug fixed (0000033) whereby definitions such as
|
||||
```
|
||||
To say foo (X - text): ...
|
||||
```
|
||||
could not then be used.
|
||||
|
||||
Bug fixed (0000079) whereby the text substitution "[a list of ...]" would
|
||||
sometimes list the wrong things if the description included a negated relative
|
||||
clause, e.g., "a list of things in the cupboard which are not dishes".
|
||||
|
||||
Bug fixed (0000102) whereby "Definition:"s of adjectives given in the longer,
|
||||
phrasal form would always be compiled as if they applied to objects, whatever
|
||||
the specified domain of the adjective, with usually unfortunate results.
|
||||
|
||||
Bug fixed (0000050) whereby descriptions used as phrase tokens would sometimes
|
||||
be disallowed on grounds of their specificity, but wrongly - e.g., "all open
|
||||
doors" wouldn't be allowed as a description of things, when in fact it's fine
|
||||
as such because doors are things.
|
||||
|
||||
Bug fixed (0000105) whereby phrase tokens which had to match specific list
|
||||
values, and possibly other complicated values, didn't work.
|
||||
|
||||
Bug fixed (0000111) whereby phrase tokens involving relative clauses, such
|
||||
as "(X - a number that is four)", would fail.
|
||||
|
||||
Bug fixed (0000107) whereby "if" phrases using cases would sometimes reject
|
||||
constant names of other phrases on spurious type-checking grounds, if a
|
||||
specific kind of phrase was required.
|
||||
|
||||
Bug fixed (0000087) whereby the problem message would be rather unhelpful
|
||||
if a phrase were used to decide a value of a kind whose domain of values
|
||||
was in fact empty.
|
||||
|
||||
Bug fixed (0000085) whereby invoking a phrase that cannot be applied
|
||||
unambiguously produced unhelpful problem messages in some cases.
|
||||
|
||||
Bug fixed (0000099) whereby "now" could not be used to move backdrops.
|
||||
|
||||
Bug fixed (0000083) whereby using "decide on nothing" outside of a phrase -
|
||||
clearly a mistake - produced an internal error instead of a helpful problem
|
||||
message.
|
||||
|
||||
Bug fixed (0000032) whereby testing "if the player was on the holder of the
|
||||
player" always came true during the first turn.
|
||||
|
||||
Bug fixed (0000033) whereby "say" phrases whose tokens included text could
|
||||
not always be used. (An unusual thing to want to do, but legal.)
|
||||
|
||||
### Equations, units and arithmetic
|
||||
|
||||
Bug fixed (0000044) whereby Inform could sometimes crash while trying to
|
||||
produce problem messages in reply to things like
|
||||
```
|
||||
showme the square root of "hello"
|
||||
```
|
||||
|
||||
### Indexing
|
||||
|
||||
Bug fixed (0000054) whereby the Scenes index had various arguable deficiencies,
|
||||
and could have been laid out better; this was really a suggestion, but was
|
||||
acted on anyway.
|
||||
|
||||
Bug fixed (0000061) whereby the Kinds index incorrectly listed which properties
|
||||
a kind typically held; and generally improved the coverage of properties on
|
||||
the Kinds index page.
|
||||
|
||||
Bug fixed (0000068) whereby phrases with kinds including arrows would have
|
||||
boldface misused.
|
||||
|
||||
Bug fixed (0000142) whereby the Phrasebook index subheadings would be wrong
|
||||
if indexing phrases defined in an extension, under headings in that extension
|
||||
which contained two hyphens.
|
||||
|
||||
### Releasing, bibliographic data, and cBlorb
|
||||
|
||||
Bug fixed (0000040) whereby play-in-browser pages using Parchment would
|
||||
sometimes hang in Google's "Chrome" browser.
|
||||
|
||||
Bug fixed (0000058) whereby apostrophes couldn't be used edges of words in
|
||||
the story title.
|
||||
|
||||
Bug fixed (0000146) whereby one-page source web pages would be "page 1 of 0"
|
||||
rather than "page 1 of 1".
|
||||
|
||||
## Mac OS X app
|
||||
|
||||
The issue in which the Index became inaccessible after a run producing
|
||||
Problem messages has been fixed.
|
||||
|
||||
## Linux app
|
||||
|
||||
Bug fixed (0000127) whereby the documentation for installed extensions
|
||||
didn't work.
|
||||
|
||||
Bug fixed (0000144) whereby the main window couldn't be resized
|
||||
smaller than a certain size.
|
||||
|
||||
Bug fixed (0000145) whereby installing the program for the first time
|
||||
on a fresh Ubuntu system caused all sorts of problems.
|
14
notes/release/8-3.md
Normal file
14
notes/release/8-3.md
Normal file
|
@ -0,0 +1,14 @@
|
|||
# Release notes for Inform v8.3 (build 6F92)
|
||||
|
||||
This release was made on 17 October 2010, 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.
|
||||
Suggestion numbers, also large but not starting with a 0, referred to tickets at
|
||||
a Uservoice forum then in use.
|
||||
|
||||
This is part of the [historical archive of release notes](../version_history.md).
|
||||
|
||||
## Overview
|
||||
|
||||
This is a private test build released a few days in advance of v8.4, and the
|
||||
change log is given in full [there](8-4.md).
|
1107
notes/release/8-4.md
Normal file
1107
notes/release/8-4.md
Normal file
File diff suppressed because it is too large
Load diff
216
notes/release/8-5.md
Normal file
216
notes/release/8-5.md
Normal file
|
@ -0,0 +1,216 @@
|
|||
# Release notes for Inform v8.5 (build 6G60)
|
||||
|
||||
This release was made on 23 December 2010, 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.
|
||||
Suggestion numbers, also large but not starting with a 0, referred to tickets at
|
||||
a Uservoice forum then in use.
|
||||
|
||||
This is part of the [historical archive of release notes](../version_history.md).
|
||||
|
||||
## Overview
|
||||
|
||||
This release of Inform leaves the core language unchanged, except for the
|
||||
correction of a small number of bugs, and its main purpose is to provide
|
||||
an improved Index. Better maps are drawn on the World Index, and there's
|
||||
more detail across several other pages.
|
||||
|
||||
## Index
|
||||
|
||||
Although we have given the Index a comprehensive revision, the effect is more
|
||||
evolutionary than revolutionary. Most of the changes are refinements aimed at
|
||||
people with larger source texts. We'd like to thank everyone who made
|
||||
suggestions on the forum at inform7.uservoice.com, whether we accepted these
|
||||
or not.
|
||||
|
||||
The major change in this build is to the World Index page, where the method
|
||||
used to deduce the positions of rooms has been replaced by a more sophisticated
|
||||
algorithm, producing better-laid-out rooms for a variety of source texts;
|
||||
and where maps are also better rendered. A text-only change log is not the
|
||||
best place to explain what has been done, so we have prepared a PDF file to
|
||||
accompany the new build, illustrating what's new.
|
||||
|
||||
Otherwise, there are changes as follows:
|
||||
|
||||
### Actions Index
|
||||
|
||||
Acting on suggestion 1163485, we have provided a new index of the Understand
|
||||
tokens which are built-in (like "[things]") or defined in the source, or in
|
||||
extensions. Definitions are shown, with source links, and there are
|
||||
documentation links.
|
||||
|
||||
The general actions rulebooks - before, after, instead, and so on - used to
|
||||
be indexed at the foot of this page. They have moved, and are now at the top
|
||||
of the Rules Index page.
|
||||
|
||||
### Contents Index
|
||||
|
||||
The contents listing by heading now opens with the title and author rather
|
||||
than the word "Contents".
|
||||
|
||||
The memory usage estimates are now shown only for projects with the Z-machine
|
||||
setting, since they're irrelevant for Glulx, and are hidden behind a (+) icon.
|
||||
|
||||
Acting on suggestion 1238573, there's now an index of the use options which
|
||||
are currently set for a project; there are source links as usual, and also
|
||||
paste icons for setting currently unset options.
|
||||
|
||||
### Kinds Index
|
||||
|
||||
This was overhauled back in the summer, so not much has changed in this
|
||||
one. However, the sometimes distractingly long lists of objects belonging
|
||||
to each kind have been shaded in grey or (in cases where they become long
|
||||
enough to make it worthwhile) hidden behind a (+) icon. On very large
|
||||
projects, this makes a big difference to legibility.
|
||||
|
||||
### Phrasebook Index
|
||||
|
||||
The table of "Relations" now has column headings.
|
||||
|
||||
The table of "Verbs used in descriptions" now includes the meanings of
|
||||
verbs (i.e., which relations they correspond to), and links to the source text
|
||||
definitions of any new verbs. Prepositional usages such as "To be adjacent to"
|
||||
are also listed for the first time (see bug report 0000395, though this wasn't
|
||||
really a bug as such).
|
||||
|
||||
### Rules Index
|
||||
|
||||
Acting on suggestion 1099933, the rules index is consolidated onto a single
|
||||
page which shows the names of all of the rulebooks; actual contents of each
|
||||
rulebook are hidden behind a (+), but the number of rules in the book can be
|
||||
seen without opening it, and in particular empty rulebooks or activities are
|
||||
shaded grey. The "Detail view" sub-pages of the Rules Index are therefore
|
||||
no longer needed.
|
||||
|
||||
Also following 1099933, there are now source links to the creations of rulebooks
|
||||
and activities in the source text.
|
||||
|
||||
The groups of rulebooks have been reordered to put the ones most useful to
|
||||
working Inform authors at the top, and the technicalities down at the bottom.
|
||||
In particular, the action rulebooks have moved here from the Actions Index.
|
||||
|
||||
### Scenes Index
|
||||
|
||||
This is unchanged. It was perfect already.
|
||||
|
||||
### World Index
|
||||
|
||||
As noted above, the map-making algorithm is entirely overhauled, but in ways
|
||||
we won't detail here. In addition, each room and thing has a (+) icon hiding
|
||||
a new panel of details, including the properties and where they are set;
|
||||
the kind, and where it is set; map connections and region (for rooms), and
|
||||
where they are set; and a list of rules in the source text which make
|
||||
specific reference to the room or thing in question.
|
||||
|
||||
Following suggestion 1109933, the World Index map now follows the same room
|
||||
colouring as the EPS map, where this has been specified. So, for example:
|
||||
```
|
||||
Index map with room-colour of Zoo set to "Navy" and room-name-colour of
|
||||
Zoo set to "White".
|
||||
```
|
||||
will now affect both maps. (The only settings recognised by the World Index
|
||||
map are "room-colour" and "room-name-colour", and only for named individual
|
||||
rooms and for regions.)
|
||||
|
||||
## Bug fixes
|
||||
|
||||
### Source text and punctuation
|
||||
|
||||
Bug fixed (0000381) to improve problem messages for doubtful phrase punctuation.
|
||||
|
||||
Bug fixed (0000400) to improve problem message for text substitutions using
|
||||
exotic Unicode characters as part of their names.
|
||||
|
||||
Bug fixed (0000373) whereby improperly using brackets to define an antonym,
|
||||
like so:
|
||||
```
|
||||
Definition: a room is home (rather than house) if ...
|
||||
```
|
||||
would cause an internal error rather than a problem message. (Removing the
|
||||
brackets makes this work as intended.)
|
||||
|
||||
### Assertions and creations
|
||||
|
||||
Bug fixed (0000370) whereby Inform wasn't allowing words long enough to hold
|
||||
enormous URLs, or the longest word in James Joyce's Finnegans Wake.
|
||||
|
||||
Bug fixed (0000375) whereby very deeply recursive assemblies would spuriously
|
||||
produce problem messages for composite names which were too long.
|
||||
|
||||
### Model world
|
||||
|
||||
Bug fixed (0000432) whereby the problem message for a three-sided door wasn't
|
||||
giving source text links.
|
||||
|
||||
Bug fixed (0000372) whereby the BRIEF printing mode was still being described
|
||||
as "normal", when in fact it's no longer the default.
|
||||
|
||||
### Properties
|
||||
|
||||
Bug fixed (0000390) whereby misleading problem messages were issued for
|
||||
attempts to create properties of actions, activities or rulebooks.
|
||||
|
||||
Bug fixed (0000397) whereby Inform produced an internal error rather than a
|
||||
problem message for attempts to use "player" as a constant property value.
|
||||
(The "player" is not constant, because point of view can switch during play.)
|
||||
|
||||
### Rules and rulebooks
|
||||
|
||||
Bug fixed (0000405) whereby rules written like so:
|
||||
```
|
||||
Carry out an actor dead end reaching: ...
|
||||
```
|
||||
would cause spurious problem messages if (a) the action had its participle,
|
||||
in this case "reaching", as other than the first word; and (b) the text "an
|
||||
actor" was given to specify who would be doing it.
|
||||
|
||||
### Scenes
|
||||
|
||||
Bug fixed (0000415) whereby Inform could hang if told that scene S begins
|
||||
when scene T ends and also vice versa.
|
||||
|
||||
### Phrases and functional programming
|
||||
|
||||
Bug fixed (0000398) whereby Inform produced an internal error instead of a
|
||||
problem message for an attempt to use "otherwise if" incorrectly.
|
||||
|
||||
Bug fixed (0000404) whereby attempts to use descriptions rather than explicit
|
||||
values in the phrase "place ... in scope" would cause an internal error rather
|
||||
than a problem message.
|
||||
|
||||
### Equations, units and arithmetic
|
||||
|
||||
An embarrassing one, this: bug fixed (0000370) whereby, when printing numbers
|
||||
in words, Inform printed billions as "millions".
|
||||
|
||||
### Indexing
|
||||
|
||||
Bug fixed (0000363) whereby kinds were listed as kinds of themselves in the
|
||||
Lexicon (as for instance "animal... noun, a kind of animal").
|
||||
|
||||
Bug fixed (0000351) whereby an EPS map, if output, didn't respect instructions
|
||||
to map non-standard directions like "starboard".
|
||||
|
||||
Bug fixed (0000371) whereby regions on the World Index weren't being
|
||||
coloured as they should have been, and whereby disconnected components
|
||||
were being superimposed in some cases.
|
||||
|
||||
## Windows app
|
||||
|
||||
The preferences dialog now allows the font and font size to be changed.
|
||||
|
||||
If a window is brought to the front, and its underlying source file has
|
||||
been changed by another program, then the source file is re-loaded. The
|
||||
only exception to this is if the source has been changed in Inform 7
|
||||
but not saved, in which case there is no re-load.
|
||||
|
||||
The settings file is only now updated if the user changes any of the
|
||||
project's settings, and the settings file format has been adjusted to
|
||||
be closer to the latest version of the OS X Inform front-end.
|
||||
|
||||
## Linux app
|
||||
|
||||
Fixed the same bug as on the other platforms (0000394) which caused
|
||||
incorrect highlighting of Unicode quotation marks.
|
||||
|
||||
Made some other minor improvements to syntax highlighting.
|
3997
notes/release/9-1.md
Normal file
3997
notes/release/9-1.md
Normal file
File diff suppressed because it is too large
Load diff
503
notes/release/9-2.md
Normal file
503
notes/release/9-2.md
Normal file
|
@ -0,0 +1,503 @@
|
|||
# Release notes for Inform v9.2 (build 6L38)
|
||||
|
||||
This release was made on 30 August 2014, 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
|
||||
|
||||
Unlike its predecessor, build 6L02, this release of Inform is aimed almost
|
||||
entirely at maintenance: it fixes around 150 bugs, most of them minor and
|
||||
related to recent changes. Users of 6L02 should be able to upgrade with
|
||||
no preparation needed; users of earlier builds, though, would be well
|
||||
advised to read the notes on the big changes in 6L02 before proceeding.
|
||||
|
||||
But there is one major development, all the same: for the first time
|
||||
Inform is released for a mass-market mobile operating system - Android.
|
||||
|
||||
## Minor new features in the language
|
||||
|
||||
It was realised soon after the release of 6L02 that the text substitutions
|
||||
"[those]" and "[Those]" were ambiguous, since if they're applied to an
|
||||
object which is a man or woman then they would have to be different in the
|
||||
accusative and nominative cases. Consider the two texts:
|
||||
```
|
||||
"But [we] [aren't] holding [regarding the noun][those]."
|
||||
"But [regarding the noun][those] [aren't] available."
|
||||
```
|
||||
and suppose the noun is Andrew. Then "[those]" needs to expand as "him" in the
|
||||
first case but as "he" in the second. To distinguish these,
|
||||
```
|
||||
"[those in the nominative]"
|
||||
"[those in the accusative]"
|
||||
```
|
||||
and similarly for Those. But what should plain "[those]" and "[Those]" do?
|
||||
We note that the Standard Rules used "[those]" in 7 responses, all accusative,
|
||||
and "[Those]" in a further 12, all nominative. Accordingly, Inform now defines
|
||||
"[those]" as equivalent to "[those in the accusative]" and "[Those]" as
|
||||
"[Those in the nominative]". This fixes bug 0001232, and though it's not a
|
||||
perfect solution, it's intended to be something we might revisit when Inform
|
||||
has a better idea of noun cases (as it will need for, say, adaptive German).
|
||||
Note that "nominative" and "accusative" are the two values of the kind
|
||||
"grammatical case"; "nominative" existed in 6L02, but "accusative" is new in
|
||||
this build.
|
||||
|
||||
The real square root function can now be applied to any numerical quantity
|
||||
for which the dimensions (in physics terms) are a perfect square. Thus, if
|
||||
we're using the Metric Units extension,
|
||||
```
|
||||
the real square root of 4 sq m
|
||||
```
|
||||
produces the length "2.0m". This also means that equations such as:
|
||||
```
|
||||
Equation - Pythagoras's Theorem
|
||||
a = root (b^2+c^2)
|
||||
where a is a length, b is a length, c is a length.
|
||||
```
|
||||
can be solved for "a"; this previously failed because "root" could be applied
|
||||
only to dimensionless numbers. (See also bug report 0001264.)
|
||||
|
||||
The following are now equivalent:
|
||||
```
|
||||
[1] A food is a kind of thing which is edible. [2] A food is a kind of edible thing.
|
||||
```
|
||||
(Previously [1] was allowed, but [2] was disallowed.)
|
||||
|
||||
Action descriptions like the following are now rejected:
|
||||
```
|
||||
Instead of taking seven things: ...
|
||||
Instead of taking the teddy bear on the dresser: ...
|
||||
```
|
||||
The first case is rejected because a single noun can't be "seven things", and
|
||||
the second because "the teddy bear", a proper noun, is being used as if it
|
||||
were a common noun. ("a thing on the dresser" would be fine.) Previous builds
|
||||
of Inform allowed these, but compiled misleading tests: e.g. the latter
|
||||
would simply test whether the teddy bear was on the dresser, regardless
|
||||
of whether or not it was the thing taken.
|
||||
|
||||
It is now officially illegal to create something new with one of the
|
||||
following reserved names:
|
||||
```
|
||||
action, condition, list-entry, now-condition, phrase, property-value,
|
||||
storage, table-reference, variable
|
||||
```
|
||||
These all have internal meanings and it's unlikely to be safe to create
|
||||
anything with these names, though in some cases one might be lucky. (The
|
||||
example "Greater Variety", for instance, created a table column named
|
||||
"action" in 6L02 and got away with it; this column has been renamed.
|
||||
See bug report 0001347.)
|
||||
|
||||
It is now officially illegal to define a phrase which looks like "X is
|
||||
(a relationship) Y". For example,
|
||||
```
|
||||
To decide whether (X - testval) is less than (Y - testval):
|
||||
```
|
||||
is now disallowed, because there's already a meaning of "To be less than".
|
||||
(See bug report 0001230.)
|
||||
|
||||
When replacing a heading from an extension, it is now possible to put the
|
||||
heading name in quotation marks for clarity. For example:
|
||||
```
|
||||
Section - Another Questions fix (in place of "Section 4 - Phrase used to
|
||||
ask questions in closed mode" in Questions by Michael Callaghan)
|
||||
```
|
||||
(Without quotation marks, the grammar is ambiguous, because of the "in" in
|
||||
the name of the heading. See bug report 0001239.)
|
||||
|
||||
It's now legal to test actions against kinds of actions in a more flexible
|
||||
way. For example:
|
||||
```
|
||||
Attacking is aggressive behaviour.
|
||||
Examining is inquisitive behaviour.
|
||||
[1] Before aggressive behaviour: ...
|
||||
[2] Before doing something other than aggressive behaviour: ...
|
||||
[3] Before aggressive behaviour or inquisitive behaviour: ...
|
||||
[4] Before aggressive behaviour or jumping: ...
|
||||
```
|
||||
Previously only rule [1] would have been allowed. (This was prompted by
|
||||
bug report 0001244, though that was arguably a suggestion in disguise.)
|
||||
|
||||
The "backtrace" problem messages arising from ambiguous possible phrases,
|
||||
which list what Inform was trying to read, have been redesigned a little.
|
||||
|
||||
The default contents of the following two responses have changed:
|
||||
```
|
||||
list writer internal rule response (R)
|
||||
list writer internal rule response (T)
|
||||
```
|
||||
in each case to remove an open bracket at the beginning; this open bracket
|
||||
is instead displayed using list writer internal rule response (A) first. The
|
||||
practical effect of this is that only two changes are needed to make the
|
||||
list writer always use, say, square brackets instead of round ones:
|
||||
```
|
||||
The list writer internal rule response (A) is " [bracket]".
|
||||
The list writer internal rule response (B) is "[close bracket]".
|
||||
```
|
||||
(See bug report 0001344, to which this is related.)
|
||||
|
||||
I6 template files can now be installed in Inform's external resources
|
||||
folder, in a subfolder called "I6T". Inform first looks for these in
|
||||
Project.materials/I6T, then in (external)/I6T, and lastly in its own
|
||||
built-in reservoir. This is a change nobody actually asked for, but it makes
|
||||
everything consistent since the same convention is followed for Language
|
||||
bundles, website Templates and Extensions.
|
||||
|
||||
## The Inform application
|
||||
|
||||
### Inform for Mac OS X
|
||||
|
||||
6L02 introduced an almost entirely rewritten user interface, and inevitably
|
||||
there were a few bugs: the Installed Extensions list redrew awkwardly,
|
||||
flashing content (0001238); entering full screen mode could leave the Find
|
||||
dialog stranded behind (0001252); save panels from the Welcome window were
|
||||
not sufficiently explanatory (0001273); clicking on extension names to
|
||||
bring up their documentation worked badly (0001237); unchecking the "bind up
|
||||
into a Blorb file on release" option on the Settings pane had no effect
|
||||
(0001306); Inform crashed on launch under Snow Leopard (0001271); IFIDs
|
||||
were not persistent, defeating their purpose (0001278); headings at the
|
||||
top of the source text were not correctly rendered on screen (0001331).
|
||||
These are all fixed.
|
||||
|
||||
### Inform for Windows
|
||||
|
||||
A new option, "Generate Inform 6 debugging information", has been added to the
|
||||
preferences dialog. This option controls whether the command line used to run
|
||||
Inform 6 specifies that the debugging output file should be created, and
|
||||
defaults to "off".
|
||||
|
||||
The Extensions tab is now implemented, providing access to the Public Library.
|
||||
|
||||
"Create new project" buttons are present in the documentation, next to example
|
||||
projects.
|
||||
|
||||
The elastic tab-stops option is now "Auto-space table columns" in the
|
||||
preferences dialog, to match better how things work on OS X.
|
||||
|
||||
Bugs 0000210 and 0001362 have been fixed.
|
||||
|
||||
### Inform for Linux
|
||||
|
||||
We would like to thank Vincent Petry, who has helpfully contributed packages
|
||||
for OpenSUSE Linux.
|
||||
|
||||
### Inform for Android
|
||||
|
||||
For the first time, this build of Inform is available for Android:
|
||||
specifically, for Android 2.1 (Eclair) or later.
|
||||
|
||||
## Maintenance
|
||||
|
||||
### Core Inform maintenance
|
||||
|
||||
Around 100 bug fixes are made in this build, and once again all known issues
|
||||
have been resolved.
|
||||
|
||||
The following lists only the more significant bug fixes: it excludes those
|
||||
categorised by the bug tracker as "cosmetic", mostly small improvements to
|
||||
problem messages, or which affect only the documentation. I'm nevertheless
|
||||
grateful to all those who submitted these bugs, and in particular this build
|
||||
benefits from reports 0001229, 0001234, 0001246, 0001251, 0001259, 0001262,
|
||||
0001263, 0001281, 0001289, 0001295, 0001299, 0001303, 0001308, 0001311,
|
||||
0001316, 0001318, 0001321, 0001324, 0001327, 0001333, 0001334, 0001341,
|
||||
0001342, 0001345, 0001352, 0001388.
|
||||
|
||||
(A special mention to 0001336 and 0001337 for some close proof-reading of the
|
||||
manuals, and another to 0001275 for pointing out that we confused the Swedish
|
||||
country code (SE) with its language code (SV) when putting together icons to
|
||||
indicate the language of play, which resulted in the flag of San Salvador
|
||||
making an appearance.)
|
||||
|
||||
#### Uncategorisable
|
||||
|
||||
- Bug fixed (0001339) whereby a really large source text might compile to I6
|
||||
code containing spurious space characters which, with bad luck, might
|
||||
fall in the middle of a keyword and thus cause I6 errors. (This is only
|
||||
ever known to have occurred on a 3.6 million word source.)
|
||||
|
||||
- Bug fixed (0001249) whereby headings with multiple bracketed stipulations
|
||||
```
|
||||
Section - Fruit (for use with Locksmith by Emily Short) (not for release) (for Glulx only)
|
||||
```
|
||||
would produce spurious problem messages.
|
||||
|
||||
#### Assertions and creations
|
||||
|
||||
- Bug fixed (0001309) whereby assertions to set rule responses would be
|
||||
misread if the rule names included the word "with" or "having".
|
||||
|
||||
- Bug fixed (0001247) whereby assertions moving rules in rulebooks would
|
||||
sometimes be misread if the rule or rulebook names included the word "in".
|
||||
|
||||
- Bug fixed (0001373) whereby "The Attic is above the Parlor" would work,
|
||||
but "The Attic is a room above the Parlor" would make a connection
|
||||
the wrong way (up from the Attic to the Parlor rather than vice versa).
|
||||
|
||||
- Bug fixed (0001290) whereby some attempts to make map connections to
|
||||
constant values which aren't objects would be ignored (which is fair
|
||||
enough) but with no problem message (which isn't).
|
||||
|
||||
- Bug fixed (0001260) whereby an oddly-phrased sentence such as
|
||||
```
|
||||
X with the printed name "Cross" is a thing.
|
||||
```
|
||||
would be read even more oddly as a declaration that all things have
|
||||
this printed name.
|
||||
|
||||
- Bug fixed (0001361) whereby the assertion "X is on top of Y" would sometimes
|
||||
be read as "X is on (top of Y)".
|
||||
|
||||
#### Model world
|
||||
|
||||
- Bug fixed (0001292) whereby the reaching inside/outside rules would not
|
||||
properly set the "person reaching" variable if the test were run
|
||||
other than via an action.
|
||||
|
||||
- Bug fixed (0001363) whereby "the direction of D from R" would produce
|
||||
a bogus result for a one-sided door.
|
||||
|
||||
- Bug fixed (0001243) whereby making scenery parts of a person would lead to
|
||||
a strangely worded problem message.
|
||||
|
||||
- Bug fixed (0001359) whereby the text substitution "[the player's surroundings]"
|
||||
would produce empty text before play begins.
|
||||
|
||||
#### Properties
|
||||
|
||||
- Bug fixed (0001228) whereby attempts to refer to an impossible property
|
||||
of an object (a property, that is, which can only belong to an object
|
||||
of a different kind) would not always be caught at compile time.
|
||||
|
||||
#### Relations
|
||||
|
||||
- Bug fixed (0001364) whereby a relation defined by a condition involving a test which,
|
||||
to resolve, would require the expansion of a text substitution, would
|
||||
fail with an internal error. (Such a relation is quite legal and now
|
||||
compiles properly.)
|
||||
|
||||
- Bug fixed (0001285) whereby route-finding through a various-to-one relation
|
||||
would fail to work in some configurations of the relationship. (That's
|
||||
probably being generous - when it did work, that was mostly luck.)
|
||||
|
||||
#### Rules and rulebooks
|
||||
|
||||
- Bug fixed (0001329) whereby a condition limiting the applicability of a rule
|
||||
might not be properly type-checked, causing internal errors in some cases.
|
||||
|
||||
- Bug fixed (0001280) whereby an attempt to put just a "value" into a rule's
|
||||
preamble would cause an unclear problem message.
|
||||
|
||||
- Bug fixed (0001323) whereby rules such as...
|
||||
```
|
||||
Before doing something other than listening to or examining the creature:
|
||||
```
|
||||
...would be misunderstood as (listening) to (or examining the creature)
|
||||
rather than (listening to or examining) (the creature).
|
||||
|
||||
- Bug fixed (0001296) whereby
|
||||
```
|
||||
[1] Instead of taking the rock or looking: ...
|
||||
[2] Instead of looking or taking the rock: ...
|
||||
```
|
||||
[1] was reported as a problem (the actions can't mix because "looking"
|
||||
can't apply to the rock), but [2] wasn't. To avoid ambiguities, both
|
||||
forms are illegal.
|
||||
|
||||
- Problem message improved (0001389) for getting the 'for...' and 'when...'
|
||||
clauses attached to a rule about actions in the wrong order.
|
||||
|
||||
- Bug fixed (0001328) whereby rules based on a parameter which happens to
|
||||
end with the word "rule" would sometimes have the parameter ignored,
|
||||
making them more widely applicable than intended.
|
||||
|
||||
#### Lists
|
||||
|
||||
- Bug fixed (0001387) whereby Inform wasn't preventing constant lists or
|
||||
texts from being modified using text replacement, list sorting and
|
||||
so forth. All such attempts now result in problem messages.
|
||||
|
||||
#### Tables
|
||||
|
||||
- Bug fixed (0001322, 0001338) whereby creating objects via a table which contained
|
||||
additional blank rows would generate spurious I6 errors.
|
||||
|
||||
- Bug fixed (0001360) whereby attempting to access a table row, where no row
|
||||
was selected, could cause TableLookUpEntry() to crash at run time. There's
|
||||
now a run-time problem message instead.
|
||||
|
||||
- Bug fixed (0001255) whereby looking up texts, lists, etc., in a table which
|
||||
contained a blank row before the match would sometimes cause memory
|
||||
out of range crashes at run time.
|
||||
|
||||
- Bug fixed (0001250) whereby it was possible to create the same column in
|
||||
two different tables with different kinds, provided that both columns
|
||||
started out empty; this resulted in mysterious type-checking problem
|
||||
messages.
|
||||
|
||||
- Bug fixed (0001390) whereby attempting to read a blank entry of a table as
|
||||
if it held a value would throw a run-time problem (as it should) but
|
||||
then also in some circumstances crash the virtual machine.
|
||||
|
||||
#### Equations, units and arithmetic
|
||||
|
||||
- Bug fixed (0001302) whereby real-valued constants of some kinds, notably
|
||||
those defined by the Metric Units extension, couldn't be written with
|
||||
a minus sign.
|
||||
|
||||
- Bug fixed (0001268) whereby local variables were not being promoted implicitly
|
||||
from "number" to "real number" when used in an equation. (The documentation
|
||||
half-promised that this would happen; well, now it does.)
|
||||
|
||||
- Bug fixed (0001310) whereby comparisons between values of a kind other than
|
||||
"real number", but nevertheless stored as floating-point quantities,
|
||||
would wrongly be made using integer comparisons.
|
||||
|
||||
- Bug fixed (0001257) whereby comparisons between real numbers and numbers
|
||||
would not always implicitly promote the numbers to reals before making
|
||||
the comparison.
|
||||
|
||||
#### Understanding
|
||||
|
||||
- Bug fixed (0001369) whereby a declaration of "Understand... as a mistake",
|
||||
with no error message text supplied, would sometimes crash Inform.
|
||||
|
||||
- Bug fixed (0001265) whereby an "Understand... when..." condition would
|
||||
throw a problem about referring to the current action even when it
|
||||
in fact tested whether actions had taken place in the past.
|
||||
|
||||
- Bug fixed (0001313) whereby a runtime error is thrown when the player's
|
||||
command is matched against the text "me", which doesn't qualify,
|
||||
on early turns only.
|
||||
|
||||
- Bug fixed (0001325) whereby the Understand token "[any K]", where K is
|
||||
a kind of value but not a kind of object, could sometimes produce
|
||||
an internal error.
|
||||
|
||||
- Bug fixed (0001301) whereby single-letter elements of literal patterns
|
||||
would fail to parse at the command line under Glulx if written in
|
||||
upper case. (Thus a command such as "heat the water by 5c" would work,
|
||||
but not "heat the water by 5C".) Note that this only affected commands
|
||||
typed by hand, because the TEST command flattens to lower case
|
||||
automatically.
|
||||
|
||||
#### Text, spacing and printing
|
||||
|
||||
- Bug fixed (0001242) whereby "blouse" and its derivations pluralized as
|
||||
"blmice", not "blouses".
|
||||
|
||||
- Bug fixed (0001231, but see also 0001396) whereby the text substitution "[A
|
||||
list of...]" would only capitalise the first word of the output if it were an
|
||||
article, so for example it could produce "four gold coins" rather than "Four
|
||||
gold coins". And similarly for "[The list of...]", which could be fooled by
|
||||
proper nouns in lower case.
|
||||
|
||||
- Bug fixed (0001258) whereby printing unusual indefinite articles using the
|
||||
"[A ...]" text substitution would produce a "library error 2" at
|
||||
run-time.
|
||||
|
||||
- Bug fixed (0001319) whereby a text substitution defined with a slash to
|
||||
indicate alternate phrasings on the opening word would lose its case
|
||||
sensitivity.
|
||||
|
||||
- Bug fixed (0001291) whereby string comparisons in the background would cause
|
||||
"[first time]..." text substitutions to behave unexpectedly when used
|
||||
in certain properties of rooms or things.
|
||||
|
||||
- Bug fixed (0001370) whereby the string "[one of]..." compares as equal to the
|
||||
empty text "" before being first printed, even if it's never possible for
|
||||
it to be empty. For comparison purposes, it now is equal to the text
|
||||
value it will have when next printed.
|
||||
|
||||
- Bug fixed (0001368) whereby spurious line breaks would sometimes appear in
|
||||
room descriptions including paragraphs arising from "writing a paragraph
|
||||
about" rules.
|
||||
|
||||
- Bug fixed (0001365) whereby grouping items under a given text would not
|
||||
always work if that text included substitutions. It now does, and
|
||||
automatically performs the substitution at grouping time.
|
||||
|
||||
- Bug fixed (0001344) whereby two oddball cases in the list-writer printed
|
||||
a close round bracket ")" directly, rather than printing it with the
|
||||
list writer internal rule response (B).
|
||||
|
||||
- Bug fixed (0001283) whereby the past tenses of regular English verbs ending
|
||||
-ay, -ey or -oy were incorrect: thus play was plaied, annoy was annoied,
|
||||
and so forth.
|
||||
|
||||
- Bug fixed (0001396) to do with capitalising "ÿ" in the Z-machine (Queensrÿche
|
||||
fans, beware).
|
||||
|
||||
#### Indexing
|
||||
|
||||
- Bug fixed (0001300) whereby the text "This text is not actually used" is
|
||||
actually used in the Actions detail view.
|
||||
|
||||
- Bug fixed (0001335) whereby the adjective "substituted" was wrongly defined
|
||||
in the Lexicon index.
|
||||
|
||||
- Bug fixed (0001332) whereby the Contents index was miscounting the number of
|
||||
words under some headings.
|
||||
|
||||
#### Testing commands
|
||||
|
||||
- Bug fixed (0001256) whereby the RESPONSES testing command would list responses
|
||||
from some extensions in more than one numbered chunk.
|
||||
|
||||
- Bug fixed (0001236) whereby run-time problem messages would sometimes be
|
||||
hidden on screen if they occurred during the expansion of a text
|
||||
substitution.
|
||||
|
||||
#### Releasing, bibliographic data, and cBlorb
|
||||
|
||||
- Bug fixed (0001293) to make HTML generated by cBlorb slightly better
|
||||
at passing validators.
|
||||
|
||||
- Bug fixed (0001253) whereby releasing along with the "introductory booklet"
|
||||
or "introductory postcard" had stopped working.
|
||||
|
||||
### Extension maintenance
|
||||
|
||||
Glulx Text Effects by Emily Short (now maintained by Dannii Willis) has been
|
||||
updated to give comprehensive support for all Glk text features, and to
|
||||
simplify how colours are set, by using web (CSS) colours like #8800FF.
|
||||
See the extension documentation for more details. An issue to do with
|
||||
deprecated phrases in the examples has been resolved (see 0001367).
|
||||
This update is not fully backwards compatible, but any changes will be
|
||||
easy to make.
|
||||
|
||||
Metric Units: removed documentation references to the limitations which
|
||||
existed before we switched to floating-point arithmetic in 6L02.
|
||||
|
||||
Epistemology by Eric Eve: Updated to version 8. This fixes a bug (which has
|
||||
oddly only just come to light after all this time, unless it’s a by-product of
|
||||
6L02) by which backdrops weren’t being marked as seen. It also adds an (A) to
|
||||
label the response of the report epistemic status rule.
|
||||
|
||||
### Examples maintenance
|
||||
|
||||
Examples in the documentation which contained ampersands now paste correctly
|
||||
into the source panel (see 0001312).
|
||||
|
||||
Small revisions have been made to the examples Lethal Concentration 1 and 2
|
||||
(see 0001341), Persephone (see 0001346), Terror of the Sierra Madre (0001340),
|
||||
Olfactory Settings (see 0001305).
|
||||
|
||||
The example "Lollipop Guild" has been rewritten to demonstrate removing
|
||||
implicit takes from a different action (since eating no longer mandates
|
||||
these); and it is more dentist-friendly into the bargain.
|
||||
|
||||
The tiny example "We" has been removed: responses and adaptive text have
|
||||
overtaken it (see 0001245).
|
||||
|
||||
The example "Greater Variety" has been renamed "Variety 2" to emphasise its
|
||||
sequelness (see 0001284).
|
||||
|
||||
### Interpreter maintenance
|
||||
|
||||
Inform comes with browser interpreters built in, so that it can act on release
|
||||
instructions such as "Release along with an interpreter.", which tell Inform
|
||||
to make a website in which the current story is immediately playable.
|
||||
|
||||
Parchment, Quixe and Vorple, all included by default, are unchanged from
|
||||
their 6L02 versions.
|
1036
notes/release/9-3.md
Normal file
1036
notes/release/9-3.md
Normal file
File diff suppressed because it is too large
Load diff
40
notes/version_history.md
Normal file
40
notes/version_history.md
Normal file
|
@ -0,0 +1,40 @@
|
|||
# Version history
|
||||
|
||||
See [versions](versions.md) for details of Inform's version numbering.
|
||||
|
||||
The next version to be released will be 10.1.0, and its [draft release note is here](release/10-1-0.md).
|
||||
Links in the following table are to the archive of release notes past.
|
||||
|
||||
Codename | Version | Build | Date | Highlights
|
||||
---------- | --------------------------- | ----- | -------------- | ----------
|
||||
Aluminium | [1.1](release/1.1.md) | 3K27 | April 2006 | Public launch
|
||||
... | [1.2](release/1.2.md) | 3K56 | May 2006 | --
|
||||
... | [1.3](release/1.3.md) | 3L95 | May 2006 | --
|
||||
... | [1.4](release/1.4.md) | 3M43 | May 2006 | --
|
||||
... | [1.5](release/1.5.md) | 3P53 | June 2006 | --
|
||||
... | [1.6](release/1.6.md) | 3R85 | June 2006 | --
|
||||
... | [1.7](release/1.7.md) | 3T38 | July 2006 | --
|
||||
Beryllium | [2.1](release/2.1.md) | 3V01 | August 2006 | Glulx support
|
||||
... | [2.2](release/2.2.md) | 3Z95 | September 2006 | --
|
||||
... | [2.3](release/2.3.md) | 4B91 | November 2006 | --
|
||||
Carbon | [3.1](release/3.1.md) | 4F59 | December 2006 | Reform of phrase definitions
|
||||
... | [3.2](release/3.2.md) | 4K40 | January 2007 | --
|
||||
Dysprosium | [4.1](release/4.1.md) | 4S08 | March 2007 | Added Linux platform
|
||||
... | [4.2](release/4.2.md) | 4U65 | May 2007 | --
|
||||
... | [4.3](release/4.3.md) | 4W37 | July 2007 | --
|
||||
... | [4.4](release/4.4.md) | 4X60 | August 2007 | Recipe Book
|
||||
Europium | [5.1](release/5.1.md) | 5G67 | November 2007 | Indexed text, stored actions
|
||||
... | [5.2](release/5.2.md) | 5J39 | December 2007 | Lists
|
||||
Fluorine | [6.1](release/6.1.md) | 5T18 | April 2008 | Pythonesque indentation rules
|
||||
... | [6.2](release/6.2.md) | 5U92 | September 2008 | Adjectives applied to all values
|
||||
Gallium | [7.1](release/7.1.md) | 5Z71 | April 2009 | Better releasing, new-look Index
|
||||
... | [7.2](release/7.2.md) | 6E36 | April 2010 | --
|
||||
Hydrogen | [8.1](release/8.1.md) | 6E59 | June 2010 | Parchment support, functional programming
|
||||
... | [8.2](release/8.2.md) | 6E72 | July 2010 | --
|
||||
... | [8.3](release/8.3.md) | 6F92 | October 2010 | --
|
||||
... | [8.4](release/8.4.md) | 6F95 | October 2010 | Quixe support
|
||||
... | [8.5](release/8.5.md) | 6G60 | December 2010 | --
|
||||
Iron | [9.1](release/9.1.md) | 6L02 | May 2014 | Language reforms, unifying text
|
||||
... | [9.2](release/9.2.md) | 6L38 | August 2014 | Added Android platform
|
||||
... | [9.3](release/9.3.md) | 6M62 | December 2015 | Extension projects, unifying actions
|
||||
Krypton | [10.1.0](release/10.1.0.md) | ---- | August 2022 | Inter, open source
|
|
@ -20,7 +20,11 @@ source it was compiled from. This one is clearly unstable:
|
|||
|
||||
## State of play in August 2022
|
||||
|
||||
The repository currently contains only unstable versions, but the first release
|
||||
Altogether 30 release versions of Inform were issued in the period 2006-22,
|
||||
but that was before the software moved to Github, and so those are not available
|
||||
as Releases in this repository. See [notes/version_history.md](notes/version_history.md) for the full catalogue.
|
||||
|
||||
So this repository currently contains only unstable versions. The first release
|
||||
version of the open-source age, `10.1.0`, will be made in early August 2022.
|
||||
|
||||
Going forward, we will mostly not provide binaries of the apps for unstable versions - only for releases.
|
||||
|
|
|
@ -24,12 +24,13 @@ code is continuously maintained alongside it: see {WEBICON} [Inform: The Program
|
|||
Software in this repository is [copyright Graham Nelson 2006-2022](notes/copyright.md)
|
||||
except where otherwise stated, and available under the [Artistic License 2.0](https://opensource.org/licenses/Artistic-2.0).
|
||||
|
||||
To consult... | Turn to...
|
||||
------------------------------- | -----------------------------------------
|
||||
Brief news about ongoing work | [notes/working_notes.md](notes/working_notes.md)
|
||||
Licencing and copyright policy | [notes/copyright.md](notes/copyright.md)
|
||||
Branching and versioning policy | [notes/versioning.md](notes/versioning.md)
|
||||
Language evolution policy | [https://github.com/ganelson/inform-evolution](https://github.com/ganelson/inform-evolution)
|
||||
To consult... | Turn to...
|
||||
--------------------------------- | -----------------------------------------
|
||||
Brief news about ongoing work | [notes/working_notes.md](notes/working_notes.md)
|
||||
Licencing and copyright policy | [notes/copyright.md](notes/copyright.md)
|
||||
Branching and versioning policy | [notes/versioning.md](notes/versioning.md)
|
||||
Language evolution policy | [https://github.com/ganelson/inform-evolution](https://github.com/ganelson/inform-evolution)
|
||||
Version history and release notes | [notes/version_history.md](notes/version_history.md)
|
||||
|
||||
## Repositories
|
||||
|
||||
|
|
Loading…
Reference in a new issue