Inform 7 v10.1.0 is now open-source

This is an incredible achievement. Thank you, Dr. Nelson.

And I’m very happy to see that the new Inform 7 bug tracker includes the old Mantis bugs, now un-disappeared from the Memory Hole!

Simple example without a project:

$ cd inform/resources/Sample\ Projects/Disenchantment\ Bay
$ mkdir ext
$ mkdir tmp
$ ../../../inform7/Tangled/inform7 -no-index -no-progress -log nothing -external ext -transient tmp -internal ../../..//inform7/Internal -source Disenchantment\ Bay.i7 -o dis.inf
Inform 7 v10.1.0 has started.
I've now read your source text, which is 1412 words long.
I've also read Basic Inform by Graham Nelson, which is 7691 words long.
I've also read English Language by Graham Nelson, which is 2328 words long.
I've also read Standard Rules by Graham Nelson, which is 32130 words long.
I've also read Locksmith by Emily Short, which is 4116 words long.

  The 1412-word source text has successfully been translated. There were 2
    rooms and 24 things.
Inform 7 has finished.
$ ../../../inform6/Tangled/inform6 -E2SDwG dis.inf dis.ulx
Inform 6.36 for Linux (24th January 2022)
In:  1 source code files             99779 syntactic lines
 86051 textual lines               2545071 characters (ISO 8859-1 Latin1)
Allocated:
  9501 symbols                     3009977 bytes of memory
Out:   Glulx story file 1.220429 (712K long):
    23 classes                          65 objects
   232 global vars                   89867 variable/array space
    99 verbs                           379 dictionary entries
   195 grammar lines (version 2)       281 grammar tokens (unlimited)
   104 actions                          37 attributes (maximum 56)
    39 common props (maximum 253)       33 individual props (unlimited)
145520 characters used in text      113253 bytes compressed (rate 0.778)
     0 abbreviations (maximum 64)     3397 routines (unlimited)
 85439 instructions of code          48503 sequence points
124416 bytes writable memory used   604160 bytes read-only memory used
728576 bytes used in machine    1073013248 bytes free in machine
Compiled with 3507 suppressed warnings
Completed in 1.00 seconds

Now you have a playable Glulx file in dis.ulx.

6 Likes

I like you post here all these news. I only saw this wasn’t working for me. Since I use a tablet to internet navigation, this could have been an issue only for my system or not. The link was very new one. No angry mood at all.

For people who are a bit dismayed by all the infrastructure in the project and wondering how much of it they actually need to cart around to get a working toolchain, here’s a way to make a smaller pre-built distribution. Assuming you followed the directions in the documentation and cloned the three git repos to work/inweb, work/intest and work/inform, create a text file called work/make-integration-settings.mk with the following contents:

# Not sure what this does, apparently it's necessary?
INTEGRATION=1

# Where to install the compiler tools, relative to the work/inform directory
BUILTINCOMPS=../Distribution/

# Install the runtime data where inform7 will find it
INTERNAL=$(BUILTINCOMPS)/Internal/

# Install the tools with their regular, default names
INBLORBNAME=inblorb
INFORM6NAME=inform6
INFORM7NAME=inform7
INTESTNAME=intest

# Install the documentation into the distribution directory too,
# for completeness
BUILTINHTML=$(BUILTINCOMPS)/Documentation/
BUILTINHTMLINNER=$(BUILTINHTML)

# Put "Writing with Inform" and "The Inform Recipe Book" in the same place
INDOCOPTS=-to $(BUILTINHTML) website

To build the distributable version:

cd inform
make forceintegration

Now the work/Distribution/ directory should contain:

Documentation/
inblorb
inform6
inform7
Internal/
intest

You can zip up that directory and copy it to another computer, and you should be good to go.

11 Likes

A momentous occasion for Interactive Fiction and beyond.

I have been waiting for this day since Dr. Graham’s first announcement.

Now to dive in.

Thank you!

4 Likes

I’ve done that, but ran into problems with it, seems that the internal extensions aren’t correctly used.

stuart@sslaxxworks-amd:~/tmp$ ./inform7 -project /home/stuart/Documents/Projects/Code/Inform/Projects/Template.inform
Inform 7 v10.1.0 has started.
I've now read your source text, which is 764 words long.
I've also read Basic Inform by Graham Nelson, which is 7691 words long.
I've also read English Language by Graham Nelson, which is 2328 words long.
I've also read Standard Rules by Graham Nelson, which is 32130 words long.
++ 5% (Analysing sentences)
++ 15% (Drawing inferences)
++ 20% (Binding rulebooks)
++ 23% (Binding rulebooks)
++ 26% (Binding rulebooks)
++ 29% (Binding rulebooks)
++ 32% (Binding rulebooks)
++ 35% (Binding rulebooks)
++ 38% (Binding rulebooks)
++ 41% (Generating code)
++ 44% (Generating code)
++ 47% (Generating code)
++ 50% (Generating code)
++ 53% (Generating code)
++ 56% (Generating code)
++ 59% (Generating code)
++ 62% (Generating code)
++ 65% (Generating code)
++ 68% (Generating code)
++ 71% (Generating code)
++ 74% (Generating code)
++ 77% (Generating code)
++ 80% (Generating code)
++ 83% (Generating code)
++ 86% (Generating code)
++ 89% (Generating code)
++ 92% (Generating code)
++ 95% (Generating code)
++ 98% (Generating code)
I've also read Basic Help Menu by Emily Short, which is 2371 words long.
I've also read Basic Screen Effects by Emily Short, which is 2223 words long.
I've also read Complex Listing by Emily Short, which is 3410 words long.
I've also read Glulx Entry Points by Emily Short, which is 2682 words long.
I've also read Glulx Image Centering by Emily Short, which is 265 words long.
I've also read Glulx Text Effects by Emily Short, which is 2182 words long.
I've also read Inanimate Listeners by Emily Short, which is 415 words long.
I've also read Locksmith by Emily Short, which is 4116 words long.
I've also read Menus by Emily Short, which is 2001 words long.
I've also read Punctuation Removal by Emily Short, which is 906 words long.
I've also read Skeleton Keys by Emily Short, which is 641 words long.
  >--> You wrote 'Lock-fitting relates various things to various things' (/home/stuart/tmp/Internal/Extensions/Emily
    Short/Skeleton Keys.i7x, line 19): but that relation already exists, and
    cannot have its definition amended now.
  >--> You wrote 'The verb to unlock (it unlocks, they unlock, it unlocked, it
    is unlocked) means the lock-fitting relation' (/home/stuart/tmp/Internal/Extensions/Emily
    Short/Skeleton Keys.i7x, line 20), but in another sentence 'The verb to
    unlock means the lock-fitting relation' (the Standard Rules, line 268): but
    this gives us two definitions of what appears to be the same verb, or at
    least has the same infinitive form.
I've also read Epistemology by Eric Eve, which is 1500 words long.
I've also read Approximate Metric Units by Graham Nelson, which is 6289 words long.
I've also read Metric Units by Graham Nelson, which is 5340 words long.
I've also read Rideable Vehicles by Graham Nelson, which is 1819 words long.
I've also read Unicode Character Names by Graham Nelson, which is 28385 words long.
I've also read Unicode Full Character Names by Graham Nelson, which is 118364 words long.
++ Ended: Translation failed: 2 problems found
Inform 7 has finished.

The debug log has a lot of these errors but I am doubtful they’re connected to this issue.

I've also read Basic Help Menu by Emily Short, which is 2371 words long.
{expected to close tag span (22050), but actually closed td}
Tag error: closed HTML tag which wasn't open
{expected to close tag td (22049), but actually closed tr}
Tag error: closed HTML tag which wasn't open
{expected to close tag tr (22046), but actually closed table}
Tag error: closed HTML tag which wasn't open
{expected to close tag table (22045), but actually closed blockquote}
Tag error: closed HTML tag which wasn't open
{expected to close tag span (22077), but actually closed td}
Tag error: closed HTML tag which wasn't open

It only seems(?) to do it the first time I attempted compilation, after that it appears to work as expected.

2 Likes

It does that when it tries to update the list of installed extensions. Try with --no-census-update when invoking inform7.

2 Likes

I had exactly those problems trying to build the included sample projects (Onyx and Disappointment Bay) as projects. However, building them as single files (say, -source inform/resources/Sample\ Projects/Onyx/Onyx.i7 -o onyx.i6) works just fine, and a random Inform7 project I had lying around since 2006 works fine with -project. Or at least, it doesn’t complain in that particular way, it complains about language changes in the past decade and a half.

I can’t seem to find any documentation on the expected structure of project bundles as used with the -project option.

1 Like

The new docs are very detailed, but I’m finding them quite hard to navigate. There’s no search or index unfortunately.

I wonder if Inweb could be interfaced to something like Sphinx docs so that those features could be supported

2 Likes

Congratulations to everyone involved on the release!

I had a bit of trouble compiling it on Windows, but I managed to do it with Cygwin. If someone’s got a better way, it would be nice.

In other news, we already started to look if updating the French translation was possible. After a bit of trial and error, we got something working!

inform7-french

It’s still rough and there are still quite a lot of things missing. There’s also no guarantee that we won’t encounter a blocking issue. (And we uncovered some bugs in Inform, too.)

I don’t really know about the state of the other translations (mainly Italian and Spanish), but I’d gladly help once the dust settles.

13 Likes

I have a work in progress of integrating this into the IDE for Linux, on the new branch of ptomato/inform7-ide: GitHub - ptomato/inform7-ide at new

It’s runnable and can build projects with the new compiler, the make-integration-settings.mk can be found in build-aux.
Unfortunately I’m offering it strictly as-is, no support, you’re on your own until I’m ready to make a release :smile: I’m still trying various ways to integrate the Inform build process into the IDE’s build process, so any instructions or documentation I wrote might quickly become obsolete.

9 Likes

I don’t really know about the state of the other translations (mainly Italian and Spanish), but I’d gladly help once the dust settles.

I’m going to work on the italian translation, but I’m still struggling to compile on Windows (Linux vension on Win11 subsystem works fine anyway). I’ll try with cygwin (if you have any suggestions, they are welcome).

If anyone else is working on the italian translation, let me know to join our efforts. Thank you!

3 Likes

Concur and agree. For example, what REALLY matters day-to-day (WI & RB) is deep in the directory tree and need to be build… not difficult, after all.

OTOH, once grasped what is what, all is easy. I have already restarted all those WIP stale since the increased instability of ni under Linux, and I can serenely wait the v10 version of gnome-inform next month… :slight_smile:

Best regards from Italy,
dott. Piergiorgio.

2 Likes

Bene !!! but don’t expect releases from me… Even without the heavy usage of dictionaries from Internet Archive (following Infocom’s lesson, I use english threasures & italian-english dictionaries for weeding out anachronicism (do you know that prior of WWII “computer” actually refers to people ?) ) I’m very slow in dev time (I think if I release a certain pair of WIPs, those easily beat by far Final Fantasy vXIII/XV in the lenght of dev time…)

Best regards from Italy,
dott. Piergiorgio.

2 Likes

Those will no doubt be exported for use in the IDEs and on the inform7.com website like they are now. I meant more obscure things like the Neptune language for defining kinds in kits - it is now documented, but it’s not easy to locate.

4 Likes

On Windows, when installing Cygwin, you need to make sure that you install the make and mingw-clang packages. After that, you can compile as indicated in the readmes using the Cygwin terminal.

To launch the tests with intest, you also need to use the Cygwin console because they assume some Unix commands are available. But after that you can use PowerShell if you copy the cygwin1.dll file from your Cygwin installation (usually found in C:\cygwin64\bin\) next to the various compiled executables (inform7, inform6, inblorb…)


Regarding the translations, there are quite a lot of things to change (such as converting part of the extension into a kit), and workarounds involved. And I still have to figure out some things that no longer work. If interested, I can create a new thread not to flood this one.

2 Likes

Regarding the translations, there are quite a lot of things to change (such as converting part of the extension into a kit), and workarounds involved. And I still have to figure out some things that no longer work. If interested, I can create a new thread not to flood this one.

I’m really interested! I still have to understand the new kits and a thread devoted to language extensions would be very useful to exchange ideas. Thank you!
P.S. I manage to recompile on Windows through cygwin. Thank you for the suggestion.

1 Like

Alright! If you can wait until tomorrow, I’ll try to write a small guide to get translations started.

2 Likes

Alright! If you can wait until tomorrow, I’ll try to write a small guide to get translations started.

I can’t wait, but take your time :wink:

1 Like

Hi all, really excited to see this finally happen, diving into the Inform source for the first (well, second, if you consider some of the i6 spelunking i did in 2020) time, hoping to port over an old I6 extension I found. One thing that I’m having trouble with is syntax highlighting, or the lack thereof. What’s the easiest or most proper way to configure my editor to highlight .w files correctly? Does such a tool exist? What editors, if any, do the core developers use for editing web files, and do they use syntax highlighting?

1 Like

I have been making do without syntax highlighting for .w files so far. I use Sublime Text and have developed syntax highlighting add-ons for it in the past, so I might do this for Inweb, but it’s not sufficiently annoying me yet to be very high on my priority list.

3 Likes