Dialog Wishlist

So, what’s next on the roadmap? Not a ton; most of the features on the agenda are in 1b/01. But these are the issues I’m currently hoping to tackle in the next month or two.

My top priority is a new feature that I’ve been longing for since Miss Gosling, and I’ll elaborate on it in another post. I’ve needed to come up with workarounds for it on three separate occasions, so at this point I think it should be part of the language proper. (It’s also really easy to implement.)

Beyond that, there are a few separate issues with how divs and status bars are handled on the Z-machine. It’s going to be a headache to deal with, but they need to be fixed at some point. In particular, unsupported inline status bars don’t produce a line break (when it seems like spec-wise they should), and the backend only tracks the number of active spans, not the number of active divs. This causes problems with operations that are illegal inside a div.

There’s also an odd bug with very long literal lists of lists. Dialog chokes if these literals appear in rule heads, but not in rule bodies, which suggests that something is messed up in the initial-value-compiling step. This requires tinkering with parts of the compiler I haven’t worked with before, but it’s clearly a bug, not just an enhancement, so it gets a bump up in priority.

Then, there are a couple things that require changing a bunch of data types. Not hard, just tedious. The debugger only supports 3-bit color, not 24-bit color, but that can be fixed by changing a bunch of uint8_ts to int32_ts. And the compiler’s Unicode handling only supports the BMP, even though the Å-machine can handle astral (non-BMP) characters just fine. Just gotta replace uint16_ts with uint32_ts, and add error messages if astral characters are used on Z-machine.

On the Å-machine side, I’d like to make a few more improvements to the web terp. Right now, specifying both “old-style” and “new-style” colors in a style class will default to the old ones. I’d prefer it default to the new, since they’re more flexible. I’m working on supporting IFComp telemetry recording, but that’s on hold until the IFComp people get back to me (hopefully soon). And of course, I’ve made some accessibility improvements in Å-machine 1.0.0, but only time will tell how well they work. I fully expect those will need to be adjusted once we have real-world data on them.

For the 6502 terp, there are a couple things I’d like to improve, but I’m not confident in my ability to do so. One is supporting display:none divs, just for feature parity with Z-machine. Others have also suggested taking cues from Ozmoo and supporting link navigation. These would be nice to have, but they’re low-priority right now because the effort they’d take is very large compared to the potential benefit.

Finally, there’s a more aspirational change to the Å-machine spec I’d like to make. Currently, the Å-machine uses a game-specific eight-bit character encoding. $00-$19 are control characters, $20-$7E are ASCII, $7F is reserved as an escape code, and $80-$FF are defined by the story file. (We could perhaps consider $20 a control code as well, because it’s needed for the spacing mechanism.)

That’s generally enough for European languages, but not enough for Japanese. I’d like to update the spec to say, if the story file’s character table includes more than 128 entries, then remove ASCII to make room. This will unlock 94 extra codepoints, which should be comfortably enough for Japanese if not for Chinese. This won’t affect existing story files, since none of them will have more than 128 entries in the table. But since it’s a significant change to the spec, I want to discuss it with the community first and talk through the benefits and drawbacks. I’ll make a proper post about this in the Technical Development > Specifications category sometime later.

(In the long term, I also want to update the Å-machine spec to support a 32-bit word size. This will remove basically all the current limits on it. But that’s also a huge change that’s going to take a lot of work—more than I can do alone. So it’s probably not going to be in 1c/01.)

So yeah! That’s my current vision for the future of Dialog and the Å-machine. Like it? Dislike it? Got a different feature you’re hungering for? Post them here; that’s what this thread’s for!