Dialog 1b/01 (Library 1.2.0, Å-machine 1.0.0) is released!

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 Å-machine here

Get the Dialog compiler and libraries here

Read the manual 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 @tree and @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-serial allows overriding the serial number for reproducible builds
  • --word-seps changes which characters are considered word separators
  • --optimize-alphabet improves 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 -1 disables word-wrapping
  • --no-header disables version information
  • --height -1 disables [more] prompts; @more and @nomore change this at runtime
  • --tag-lines explicitly marks requests for line and key input
  • --unit-test means --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 $LINES and $COLUMNS

Have fun!

16 Likes

Thank you (and everyone on the Dialog team) so much for all of the work you do maintaining and improving Dialog!

3 Likes

I’ll be sure to support this in the version of dialog-tool.

2 Likes

I’ll also look into updating the Homebrew formulae.

1 Like

Oh, I almost forgot in the changelog! A new predicate (nbsp) has been added that requests a non-breaking space. I imagine this will matter to very few people, but it was requested for French—in French, a non-breaking space is standard before certain types of punctuation.

Previously, you could just insert a literal non-breaking space character (U+A0) into your source text. But now U+A0 is considered whitespace (it was causing very confusing errors when people copied and pasted source code from the manual), so we’ve added a proper NBSP mechanism to replace it.

2 Likes

Very nice! I have begun to experiment with a game I have in mind. So far, so good.

Thank you, Jeff

1 Like

i use macs and am temporarily stuck using a windows rig.

the only thing in ‘prebuilt’ is the Glk file that i don’t think we need anymore since the debugger will run in the terminal? is there a pre-build of the new dgdebug, dialogc for win32? i have no idea how to compile these manually in win32 and it’s currently not possible with my current setup anyway.

1 Like

On the github page, select the “Latest” (about half way down on the right) release rather than downloading the “Code” zip file.

The “dialog-1b01-1.2.0.zip file is at the bottom of the page.

Jeff

1 Like

got it. thanks!

1 Like

I’ve updated the dialog Homebrew formula, so brew upgrade will update it to latest.

2 Likes

I’ve also updated dialog extensions, and outside of some slight changes to how ANSI is encoded, nothing broke.

The issue I was seeing about a non-breaking space in dgdebug was also resolved.

I’ll be updating the skein to take advantage of some new features in dgdebug, such as the numbered indent levels, before the next beta.

2 Likes

The formula doesn’t currently install unit.dg to /opt/homebrew/share/dialog-if, and it should.

Having it also install time.dg and time-tests.dg (from test/unit in the Dialog source tree) as an example of how to use unit.dg would be nice, but it’s not strictly necessary.

1 Like

On OS X, using Homebrew, brew install dialog-if/brew/dialog will install this, including (as of this morning) the aamachine 1.0.0 binaries.

I just tried it, and still no unit.dg. This is in the dialog-if/brew/dialog-if formula, yes?

I just pushed a patch for that, so brew reinstall dialog-if/brew/dialog-if.

1 Like

Also useful when text involves units of measurements. It is nice to use a non breaking space between the digits and the symbol in expressions like 3 ft and 50 kg to avoid the number ending up on a different line than the unit.

1 Like

There it is!