Build 6L02, the first new release of Inform in three years, is now available from inform7.com.
This release is a major reform of a now-mature language which is widely used, and it has been over three years in the making. It has the following main objectives: to clarify and better enforce the syntax of the language (which is now formally documented); to have much greater linguistic flexibility, enabling stories to be written in any person and tense, and paving the way for translation to non-English languages; to remove phrases and features which have been deprecated for some years; to remove procedural rules, which were little used or understood and incurred a significant speed cost at run-time, in favour of simpler ways to substitute rule behaviour; to remove assumptions about the kind of narrative being written (i.e., that Inform is always making a “game” which is “won” or “lost” and has a “score”); to reform the rules handling “blocked” actions, such as listening; to redesign the Index, the in-application documentation, and the extensions index; to reform the handling of text, unifying “text” and “indexed text”, and improving their performance; to introduce a simple but powerful system of “responses” allowing authors to change stock replies in the Standard Rules and other extensions, including third-party ones (and also to make it easy to translate these to non-English languages); and to implement full floating-point arithmetic in numerical kinds of value, at least on the Glulx virtual machine.
This will be a disruptive release. Existing source texts which use deprecated features will no longer work, and the improved syntax checking means that Inform will catch problems it previously missed. It should also be noted that the run-time implementation is different in numerous ways: story files are a little larger but will run a little faster. We believe that almost all Inform projects will be able to migrate to the new system with reasonable ease - for example, “Bronze”, a large story written in the very early days of Inform 7, took about an hour’s work to adapt. Nevertheless, authors of large existing Inform projects may want to be cautious in their approach to what is, we stress once again, an across-the-board reform of the language.
This release also refines the user interface for the Inform application. As in Inform 7’s earliest days, new features are being piloted on Mac OS X, but will make their way to Windows and Linux soon - Toby Nelson, David Kinder and Philip Chimento are all working on these refinements. Search facilities are improved, but the big new feature is the Public Library, which automatically matches the user’s collection of extensions against those on the Inform website, and allows the user to download or update them singly or en masse at the click of a button. There are no user accounts, no passwords; no data is held about Inform users at the server; and everything is free.
The existence of the Public Library will, we hope, be good news for extension writers - it will now be much easier to get your extensions out to users. We’ve always had a set of community standards for extensions, and Mark Musante, the Inform project’s extensions librarian, has put in a good deal of work in recent years to look after all this. We now want to go further with that. The Inform website holds hundreds of extensions going back several years, but some of those are out of date, and many will contain deprecated phrases now removed from the language. So the rule is that the Public Library will contain only those extensions from the website which comply with the guidelines and which work properly on the 2014 Inform - we don’t want new users, especially, to download obsolete code. Firstly, extensions should always use Responses to reply to the player’s commands: this will make them more flexible and easier to translate to natural languages other than English. (At present German IF authors, say, have to “fork” extensions in order to translate them, and we want to avoid the need for that.) Secondly, these responses should where appropriate use adaptive text substitutions so that they will work in any person and tense, and will correctly cope with plural or proper nouns in all situations. An extension which does all this is called “adaptive”. As from this build, all built-in extensions are adaptive, and we hope for quite a rapid takeup from third-party extension writers, too, since there is much to be gained and the changes are quite simple to make. Since adaptive versions of extensions will be incompatible with older builds of Inform, we are making arrangements to keep old non-adaptive versions of extensions online at the Inform website (just as older released builds are always available for download): those won’t be on the Public Library, but they’ll still be available for direct download just as they are now.
Note that a number of existing extensions to provide adaptive text facilities, such as Plurality by Emily Short, will now be redundant. But our build is indebted to this early work, particularly by Aaron Reed and David Fisher.
This new version was basically finalised on 30 April 2014, Inform’s 21st birthday, but has taken a few days to get ready for distribution. It incorporates over 500 bug fixes, and there was a brief period (yesterday) when the Core Inform project on the bug tracker made it all the way down to 0 unresolved issues, though I see that this is back up to 4 today. For a fuller account of what’s new, including an itemised list of bug fixes, see the change log, which is also now available in EPUB form (as is the documentation in general).
Enormous thanks to the very many people who’ve helped this work along, and especially to Emily Short, Andrew Plotkin, Toby Nelson, David Kinder, Philip Chimento, Andrew Hunter, Adam Thornton, Erik Temple, Eric Eve, Dannii Willis, Ron Newcomb, Juhana Leinonen, Mark Musante and Justin de Vesine.