Inform 7 v10.1.0 is now open-source

I have a guilty feeling that I come across as the moustache-twirling villain in this part of the thread, but perhaps I could just note that it’s not the intention for the I6-syntax-to-Inter part of the “building” module of “inter” to replicate the Inform 6 language in every detail. I6 is not quite as bad as Perl (about which it is famously said that “only Perl can parse Perl”), but still, it contains some real oddities. To replicate those would end up complicating the I7 compiler for no convincing gain.

In the end, dropping down into I6 to implement things is intended to be a last resort. A better goal is to make I7 more expressive so that people do not need it; I didn’t restrict the use of Include (- … -) to make an ideological point (it had to be restricted in order for the Inter transition to be possible) but, honestly, if a side-effect of these restrictions in 10.1 is that we end up with code more cleanly separating I7 and I6, that’s to my mind a good thing.

Anyway, these oddball I6 issues we’re seeing now mostly arise from old extensions which already needed a small amount of cleanup to work with 10.1, so that cleaning up their use of I6 syntax at the same time doesn’t seem unreasonable. Well - that’s what I think for now, anyway.

As Zed noted, the glk() built-in function is not supported, but there is now a better problem message to cover it than just reporting that no such function exists at linking time.

It’s true that at present we don’t support undeclared properties in I6 inclusions. Daniel’s right that this is potentially a compromise on the Z-machine, if it forces extensions to use up the limited supply of properties available. It might be possible to provide some slightly modified syntax to the Property declaration to declare a property, so that it does work in the world of Inter, but force it to be “individual” in I6 terms. I’m in two minds: depends how much people genuinely need this. In the end, the Z-machine hasn’t been the default target for Inform for quite a long time now, and any project needing multiple complicated extensions is probably going to be Glulx anyway. But do people disagree?

4 Likes