Ladies, gentlemen, and miscellaneous! It’s been a full year in the making, but at last:
Dialog 1a/01 is released!
If you go to https://github.com/Dialog-IF/dialog/, you should see a new entry in the “Releases” section on the right.
That leads to Release release-1a01-1.1.0 · Dialog-IF/dialog · GitHub, where you can download the whole thing as a big ZIP file: the compiler source, prebuilt binaries for Windows, Mac, and Linux, and the new standard library version 1.1.0.
Changelog
This is the first release handled by the community, and per Linus’s wishes, we’re bumping the major version for the first time! We’re also taking this opportunity to unify the version numbers between the compiler, library, and manual.
Backend: color and background-color properties are now supported on Z-machine backend.
Backend: display:none is now tentatively supported on Z-machine backend, though spacing it properly can be difficult.
Backend: styles can be stacked on Z-machine backend, allowing for (for example) bold italics, or monospace reverse-video. Spans are also allowed inside status bars as a result.
Backend: fixed a bug that would crash the Z-machine if too many dictionary words were included in a wordmap, pushing the wordmap datatables past address $8000.
Backend: lists containing punctuation marks will now print with proper spacing on Z-machine during tracing.
Backend: Unicode characters are now allowed in dictionary words on Z-machine backend.
Backend: generated Å-machine files now include the names of style classes instead of only the numbers, which interpreters may use to improve their output.
Backend: resources can no include option strings on Å-machine backend; the meaning of these is left to the interpreter.
Backend: the Z-machine backend can more effectively calculate the screen dimensions, even in certain buggy interpreters.
Debugger: a new --numbered option shows the depth of the call stack with numbers instead of graphics during tracing. This makes the output significantly easier to understand with a screen reader.
Language: fixed a bug when unifying a list containing multiple instances of a new variable, like ($Y = [$X $X]).
Language: inline style predicates like (bold) are now deprecated. They’re still supported for now, but may be removed in a future release.
Language: new (current div width), (current div height), and (status bar $ with height $) predicates allow better control of status bar layout on Z-machine.
Compiler: the compiler now shows how close a project is to various limits, both backend-specific (like addressable memory on the Z-machine) and universal (the compiler architecture imposes a limit of $1e00 objects on any backend).
Compiler: the compiler now accepts JPEG files as well as PNG files for cover art.
Compiler: in projects that include a library, objects used in rules but never declared as topics (the * syntax) will produce a warning. This can be disabled on the command line.
Library: a new (gender-neutral $) trait will use the pronoun “they”, but without forcing plural verb endings as (plural $) does.
Library: serial commas in phrases like GET X, Y, AND Z are now properly understood. Previously, this would be parsed as GET X followed by TELL Y TO AND Z, which would generally produce an error.
Library: “meta” text (that is, text like “enabling score notifications” that comes from the program itself, rather than from the game) is now always wrapped in a (div @meta), which the author is free to style as they like.
Library: the program will backtrack to free heap memory before the final question, so that complicated parsing or status bars will no longer cause an overflow.
Library: a new (startup) predicate is exhausted before printing the (intro). Library extensions can use this for computations that need to run at the start of play.
Library: a default (appearance $) rule for pristine objects delegates to (initial appearance $), if defined.
The manual is included in the download, but you can also read it online. Check the version in the bottom left corner to make sure you’re looking at 1a/01; this site will maintain a separate copy of the manual for each significant release, so you can always check the right documentation for your copy.
Highlights:
- Use large numbers of synonyms on Z-machine without your game crashing!
- Use foreground and background colors, and format your text even in the status bar!
- Control and measure the exact size of the status bar, letting you draw fancy centered automaps!
- Put Unicode characters in closures without crashing the compiler!
- See how close your game comes to the backend’s limits, even before you exceed them!
- Parse serial commas in commands like TAKE X, Y, AND Z!
- Include gender-neutral characters who will display as “X is…” but “they are…”!
And more! Most projects should be able to get all the benefits of this new compiler with no changes to their code, but be careful when upgrading the library if you’ve made any local changes.
Have fun! If you find bugs or typos in the docs, or have ideas about how Dialog could be better, let us know and we’ll try and fold them into the next release—plus, we’re always looking for more contributors! Take a look at the issues, and feel free to add more, or try to tackle the ones already there. Or just tell us here, and we’ll take note.
