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
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.
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.
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.
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.
There’s a fairly substantial change to unit.dg in main right now, and I’d love to get it out there before anyone writes unit tests against the old version. Would a 1b/02 release, once the current round of PRs get merged, be a doable thing?
Absolutely! I keep hoping to have a faster release cadence, and then I keep getting sidetracked into new projects…
I’m hopefully going to have one more PR in tonight (fixing the issue with huge lists in rule headers), then leave today’s batch open for a day or two so that people can object or review if they want to. After that, I think we’ll have a nice solid batch of bugfixes in for a 1b/02 release, and we can leave (at most once) open for a while longer to gather more feedback before 1c/01.
(I don’t really expect big objections to (at most once), especially since it’s a feature that already existed in the compiler. But it’s a significant change to the language itself, so I want to make sure people can have their voices heard before it becomes permanent. Plus, I don’t love the current name, so if people have other suggestions, I’m open to them.)
So once #273, #274, #275, and (with any luck) the “big lists in rule heads” PR have been open for a day or two, I say go ahead and merge them, then do a release! Make a PR that updates all the version numbers (readme.txt, src/Makefile, manual/antora.yml, stdlib.dg), merge it, hit “add a new release” on Github, give it the tag release-1b02-1.2.0 or whatever, and we should be good to go. Having another person be comfortable with the release process is also good for the project’s bus number.
(Warning: once the release is finalized, the project will immediately start throwing errors. You’ll need to make a second pull request that updates all the version numbers in the main branch to 1b/03-dev, because Antora can’t deal with a release and main having the same version number. I want to fix this at some point, but I haven’t figured out how.)