Thanks again for absorbing our long collection of bugfixes.
I am currently trying to figure out the best way to handle the nest of bugs related to the way the kits pick “a” or “an” for an object name, bugs for which there have been three separate extensions written over the years (Article Bug Fix, Indefinite Article Substitution Fix, and Print Stage Detection). I really would like to get this fixed properly in Core Inform.
It has become clear to me that a proper fix requires the ability to dynamically allocate a buffer in a function defined in I6, print to that buffer, and then turn the buffer into a text (all of which can be disposed of at the end of the function – so it could be allocated on the stack).
The problems are that a proper implementation requires that PrefaceArticleBy must be reentrant, which means it cannot use a global buffer (which it currently does); and it should be able to call out to player-defined I7 code, which means I need a way to convert a buffer into text; and that it must not call PSN__ twice (which is easy enough).
At the moment I do not see how to allocate a function-local buffer on the stack or convert it to a text, though it looks like such things are being done by the internals of Inform 7 so it is perhaps possible. This is essentially bugfix material, but rather difficult bugfix material.
Any assistance would be appreciated.
I’m going to ask for some consideration regarding extending the beta status of Inform 10.1 until some more bugfixes and porting issues are resolved.
The other category of core code for which large amounts of extension material has been written to work around bugs is disambiguation. There are several of these extensions, some of which have been heavily used and used in well-known games (such as Scroll Thief), and they involve invasive parser work.
Two of these are Dismabiguation Control by Jon Ingold and Responsive Disambiguation for 6M62, both of which have to replace multiple Parser Letter sections.
These are two of only three remaining unported extensions which worked for 6M62/9.3 which replace Parser Letter sections: the other one is Unified Glulx Input by Andrew Plotkin, which seems not widely used.
One of the sections replaced in Disambiguation Control is described as “reset cobj_flags on reparsing (the library should do this anyway, I think)”, which makes me suspect it might be a bug fix.
These are heavily-used extensions which require substantial porting. I would like the chance to figure out if there’s a way to give them better hooks in Core Inform – because I really don’t like the idea of replacing the entire monolithic Parser routine – and to see if elements of them are actually bugfixes which should just be pushed up into Core Inform.