Risks of building/testing on glulx and releasing on z-machine?


I have a work for IFComp that is close to needing Glulx in debug mode, though for release, it’s well under the threshold.

I’m wondering if there are any known risks if I choose to run tests on Glulx but release on z-code (I’ve run lots of z-code tests already and things seem stable, and any changes I make shouldn’t be super-technical). Also I’m wondering if it’s a bad idea in general.

(Note: I have a work-around where I could still compile as z-code in debug. It relies on having two different hint extensions. One will go in the release. The other, for debug mode, would reduce the hint rules, which take up a relatively large amount of space for relatively little testable functionality, to stubs, giving me more than enough space. This obviously risks missing a chunk of hint functionality in the final release, but I think I have enough safeguards to avoid that even if I am making final-day changes.)

Are you using any I6 inclusions, or using extensions that contain I6 inclusions? And are you doing any fancy visual effects?

In general, there shouldn’t be any significant difference between the functionality on Z-machine and Glulx. If there is, it’s a bug in Inform.

The main exceptions to this are text styling (which works completely differently on the two platforms) and certain types of wizardry implemented in I6, which have to be done differently on the two platforms or only work on one of them. The I6-using extensions built into Inform go to great lengths to ensure they work as well as possible on both Z-machine and Glulx, but extensions written by other people may have odd bugs and oversights. I’m sure some of mine do.

(There are a few other core-Inform things that work differently between platforms due to inherent limitations—for example, the Z-machine removes casing from the input before passing it to the program. But these are niche enough that most people never encounter them.)

1 Like

In this case it’s all pretty straightforward. IIRC boxed text like Trinity’s is a lot trickier on Glulx, and the only I6 is a relatively trivial change. There’s nothing where I tinker with #IFDEF Glulx, which (with my limited I6 knowledge) I understand is the sort of thing that would cause tests to diverge in z-machine vs. glulx.

So it looks like any risks are minimal, with the stipulation that there are always grey areas where I get stung, and this seems like a small enough risk for me.

1 Like

From the command line, You can also use the powerful I6 OMIT_UNUSED_ROUTINES switch, whose should give you some more .z8 elbow space, even with debug enabled.

Best regards from Italy,
dott. Piergiorgio.