The second community-maintained release is here and ready for action—and this time it comes with a new version of the Å-machine, too!
Get the Dialog compiler and libraries here
What’s new in this version?
Å-machine
- New opcodes have been added and some existing ones extended, rearranged, or removed, in a way that shouldn’t affect anyone except interpreter writers
- The specification has been cleaned up and clarified in many places
- Added a new executable, aamrun, which lets you run Å-machine games without needing Node installed
- aambundle now produces an interpreter_license.txt file so you don’t need to worry about doing that yourself
- The web interpreter’s color scheme is now more versatile through the use of CSS variables
- The web interpreter can embed fonts and audio files
- Various accessibility improvements to the web interpreter, like underlining links on hover and adding an option to disable fonts or increase the text size
Dialog language
- New predicates
(body style $)and(reset body style)change the overall style of the page, outside of any divs and spans - New predicate
(clear status bar)clears status bars while leaving the main text unchanged - New predicate
(transcript active)tests whether transcripting is currently active - New feature tests
(interpreter supports styling),(interpreter supports color), and(interpreter supports text alignment)check if formatting is possible - New escape syntax
\x{3C4}is equivalent to the Unicode character U+03C4 - New predicate
(quit $)acts like(quit)but sets the exit status of the debugger, so you can make Makefiles succeed or fail display: none;is now deprecated on spans. It still works, but it will produce a warning.- EDIT: Almost forgot! New predicate
(nbsp)requests a non-breaking space
Standard library
- Actions
[shout]and[shout to $]have been removed. SHOUT now asks for clarification and SHOUT TO X is[call $]. Calling yourself has a new failure message. - New commands SUPERBRIEF, BRIEF, VERBOSE, and SUPERVERBOSE affect how room descriptions are printed while moving
- > *COMMENTS now produce a warning if transcripting is not active
(tagged name $)provides an equivalent to Inform’s “before/after printing the name of” rules- The default response to hugging or kissing a person no longer claims that you actually hugged or kissed them
Distribution
- The debugger will now use the terminal by default on Windows, like it always did on Linux and Mac. For the old behavior, use
dgdebug_gui. - A new library, unit.dg, supports unit testing
- The license has been updated to clarify Linus’s intent, and has been added in comments at the bottom of each library file, ensuring that things Just Work as much as possible
Manual
- Library reference now includes special syntax like
(elseif),(now), and(global variable $) - Syntax reference now includes cross-references to where each piece of syntax is defined
- All debugging commands are now documented, including
@treeand@dynamic
Bugs fixed
- Strange behavior with closures is fixed
(accumulate $) ... (into 2)no longer crashes the compiler- Negating an access predicate consisting of a single multi-query no longer crashes the compiler
- Not a bug in Dialog, but a workaround has been added for a bug in old versions of Bocfel that did not reset colors after a restart
Compiler improvements
- Warnings and errors about missing IFIDs now suggest a new one, if possible
--override-serialallows overriding the serial number for reproducible builds--word-sepschanges which characters are considered word separators--optimize-alphabetimproves dictionary word resolution for non-Latin writing systems on Z-machine- Improved text compression on Z-machine, making text about 18% smaller
(uppercase)now works with non-ASCII characters on Z-machine- New diagnostics show how close you’re coming to the Z-machine or Å-machine limits, rather than only once you’ve crossed them
(current div width/height $)are now supported on Å-machine and debugger
Debugger improvements
- Text and background color are now supported in a minimal way
--width -1disables word-wrapping--no-headerdisables version information--height -1disables [more] prompts;@moreand@nomorechange this at runtime--tag-linesexplicitly marks requests for line and key input--unit-testmeans--no-header --no-warn-not-topic --quit --height=-1- Fixed-width and colored text are now marked with ANSI escape codes
- Unknown words in a link target are no longer spaced incorrectly
- Terminal width is now measured immediately after startup and respects
$LINESand$COLUMNS
Have fun!