{"id":27238143,"url":"https://github.com/dialog-if/dialog","last_synced_at":"2026-01-19T04:00:47.859Z","repository":{"id":269441771,"uuid":"907392761","full_name":"Dialog-IF/dialog","owner":"Dialog-IF","description":"The community-maintained fork of the Dialog programming language for interactive fiction.","archived":false,"fork":false,"pushed_at":"2026-01-18T04:29:07.000Z","size":3855,"stargazers_count":21,"open_issues_count":31,"forks_count":6,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-01-18T15:37:36.307Z","etag":null,"topics":["interactive-fiction"],"latest_commit_sha":null,"homepage":"https://dialog-if.github.io/manual","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Dialog-IF.png","metadata":{"files":{"readme":"readme.txt","changelog":null,"contributing":"contributing.md","funding":null,"license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-12-23T13:30:51.000Z","updated_at":"2026-01-18T15:13:34.000Z","dependencies_parsed_at":"2026-01-19T04:00:31.277Z","dependency_job_id":null,"html_url":"https://github.com/Dialog-IF/dialog","commit_stats":null,"previous_names":["dialog-if/dialog"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Dialog-IF/dialog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dialog-IF%2Fdialog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dialog-IF%2Fdialog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dialog-IF%2Fdialog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dialog-IF%2Fdialog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dialog-IF","download_url":"https://codeload.github.com/Dialog-IF/dialog/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dialog-IF%2Fdialog/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28561593,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T03:31:16.861Z","status":"ssl_error","status_checked_at":"2026-01-19T03:31:15.069Z","response_time":67,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["interactive-fiction"],"created_at":"2025-04-10T19:00:02.120Z","updated_at":"2026-01-19T04:00:47.847Z","avatar_url":"https://github.com/Dialog-IF.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"This repository contains the Dialog compiler and interactive\ndebugger, bundled with documentation and the Dialog Standard\nLibrary.\n\nDirectory structure:\n\n\treadme.txt\tThis file.\n\n\tlicense.txt\tLicense and disclaimer.\n\n\tsrc\t\tComplete source code for the Dialog compiler and\n\t\t\tinteractive debugger.\n\n\tprebuilt\tBinaries for Linux (i386, x86_64) and Windows.\n\n\tdocs\t\tDocumentation for the programming language and library.\n\n\tstdlib.dg\tThe Dialog standard library.\n\n\tstddebug.dg\tThe Dialog standard debugging extension.\n\nBuilding the software under Linux (requires a C compiler and make):\n\n\tcd src\n\tmake\n\n\t(this will produce two executable files called dialogc and dgdebug)\n\nCross-compiling the Windows version of the software under Linux (requires\nmingw32):\n\n\tcd src\n\tmake dialogc.exe dgdebug.exe\n\nProject website:\n\n\thttps://github.com/Dialog-IF/dialog/\n\nRelease notes:\n\n\t1a/01, Lib 1.1.1:\n\t\n\t\tThis is the first release handled by the community, and per\n\t\tLinus's wishes, we're bumping the major version for the first\n\t\ttime! We're also taking this opportunity to unify the version\n\t\tnumbers between the compiler, library, and manual.\n\t\t\n\t\tBackend: color and background-color properties are now supported\n\t\ton Z-machine backend.\n\t\t\n\t\tBackend: display:none is now tentatively supported on Z-machine\n\t\tbackend, though spacing it properly can be difficult.\n\t\t\n\t\tBackend: styles can be stacked on Z-machine backend, allowing\n\t\tfor (for example) bold italics, or monospace reverse-video.\n\t\tSpans are also allowed inside status bars as a result.\n\t\t\n\t\tBackend: fixed a bug that would crash the Z-machine if too many\n\t\tdictionary words were included in a wordmap, pushing the\n\t\twordmap datatables past address $8000.\n\t\t\n\t\tBackend: lists containing punctuation marks will now print with\n\t\tproper spacing on Z-machine during tracing.\n\t\t\n\t\tBackend: Unicode characters are now allowed in dictionary words\n\t\ton Z-machine backend.\n\t\t\n\t\tBackend: generated Å-machine files now include the names of\n\t\tstyle classes instead of only the numbers, which interpreters\n\t\tmay use to improve their output.\n\t\t\n\t\tBackend: resources can no include option strings on Å-machine\n\t\tbackend; the meaning of these is left to the interpreter.\n\t\t\n\t\tBackend: the Z-machine backend can more effectively calculate\n\t\tthe screen dimensions, even in certain buggy interpreters.\n\t\t\n\t\tDebugger: a new --numbered option shows the depth of the call\n\t\tstack with numbers instead of graphics during tracing. This\n\t\tmakes the output significantly easier to understand with a\n\t\tscreen reader.\n\t\t\n\t\tLanguage: fixed a bug when unifying a list containing multiple\n\t\tinstances of a new variable, like ($Y = [$X $X]).\n\t\t\n\t\tLanguage: inline style predicates like (bold) are now deprecated.\n\t\tThey're still supported for now, but may be removed in a future\n\t\trelease.\n\t\t\n\t\tLanguage: new (current div width), (current div height), and\n\t\t(status bar $ with height $) predicates allow better control of\n\t\tstatus bar layout on Z-machine.\n\t\t\n\t\tCompiler: the compiler now shows how close a project is to\n\t\tvarious limits, both backend-specific (like addressable memory\n\t\ton the Z-machine) and universal (the compiler architecture\n\t\timposes a limit of $1e00 objects on any backend).\n\t\t\n\t\tCompiler: the compiler now accepts JPEG files as well as PNG\n\t\tfiles for cover art.\n\t\t\n\t\tCompiler: in projects that include a library, objects used in\n\t\trules but never declared as topics (the * syntax) will produce\n\t\ta warning. This can be disabled on the command line.\n\t\t\n\t\tLibrary: a new (gender-neutral $) trait will use the pronoun\n\t\t\"they\", but without forcing plural verb endings as (plural $)\n\t\tdoes.\n\t\t\n\t\tLibrary: serial commas in phrases like GET X, Y, AND Z are now\n\t\tproperly understood. Previously, this would be parsed as GET X\n\t\tfollowed by TELL Y TO AND Z, which would generally produce an\n\t\terror.\n\t\t\n\t\tLibrary: \"meta\" text (that is, text like \"enabling score\n\t\tnotifications\" that comes from the program itself, rather than\n\t\tfrom the game) is now always wrapped in a (div @meta), which\n\t\tthe author is free to style as they like.\n\t\t\n\t\tLibrary: the program will backtrack to free heap memory before\n\t\tthe final question, so that complicated parsing or status bars\n\t\twill no longer cause an overflow.\n\t\t\n\t\tLibrary: a new (startup) predicate is exhausted before printing\n\t\tthe (intro). Library extensions can use this for computations\n\t\tthat need to run at the start of play.\n\t\t\n\t\tLibrary: a default (appearance $) rule for pristine objects\n\t\tdelegates to (initial appearance $), if defined.\n\n\t0m/03, Lib 0.46 (Manual revision 31):\n\n\t\tLibrary: Changed how darkness is handled: Unlit objects are now\n\t\treachable, and a #darkness object is added to the scope.\n\t\tUpdated the visibility, reachability, and scope rules\n\t\taccordingly.\n\n\t\tLibrary: Added support for clothes worn underneath other\n\t\tclothes. Updated the visibility, reachability, and scope rules\n\t\taccordingly.\n\n\t\tLibrary: Added '(wearing $ removes $)', '(wearing $ covers $)',\n\t\tand '($ goes underneath $)' for specifying how wearable objects\n\t\tinteract with each other.\n\n\t\tLibrary: '(look $)' now falls back on '(descr $)' by default.\n\n\t\tLibrary: Searching animate objects is now prevented by default.\n\n\t\tCompiler: Improved typo detection. A warning is printed for\n\t\teach predicate that appears in just one of the following roles:\n\t\tAs a rule definition, as a query, and as an interface\n\t\tdeclaration.\n\n\t\tCompiler: Don't include the standard library in the total\n\t\tlinecount when deciding whether to warn about missing metadata.\n\n\t\tAa-backend: Print a better error message when the output isn't\n\t\ta regular file.\n\n\t\tDocumentation: Updated the section on light and darkness.\n\t\tUpdated the section on reachability, visibility, and scope.\n\t\tAdded a section about clothing.\n\n\t\tDocumentation: Added a note about how the compiler looks for\n\t\t'(library version)' to identify the library.\n\n\t0m/02, Lib 0.45 (Manual revision 30):\n\n\t\tLibrary: SWITCH now only redirects to SWITCH ON if the object\n\t\tis switchable (and off).\n\n\t\tLibrary: EXITS now properly prints the name of an inherently\n\t\tdark room that is lit up by an object.\n\n\t\tLibrary: The output of '(list objects $ $)' no longer includes\n\t\tthe current player.\n\n\t\tLibrary: Cleaned up the grammar rules to avoid ambiguous\n\t\tparsing of e.g. GET OUT as both '[leave]' and '[leave $]'.\n\n\t\tLibrary: Added PROFFER as a synonym for GIVE.\n\n\t\tLibrary: Added HEY as a synonym for GREET.\n\n\t\tLibrary: Asterisk-prefixed input is now consistently ignored,\n\t\talso when typed in response to disambiguation questions and in\n\t\tthe game-over menu.\n\n\t\tCompiler: Improved the code for detecting cyclic access\n\t\tpredicates.\n\n\t\tDebugger: Improved the algorithm for matching select statements\n\t\twhen updating a running program.\n\n\t\tDebugger: Fixed an inconsistency in the interaction between\n\t\t'(uppercase)' and hyperlinks.\n\n\t\tManual: Added clarifications on how to use '(plural name $)'\n\t\tand '(plural dict $)' and fixed the corresponding example in\n\t\tthe section on identical objects.\n\n\t\tManual: Miscellaneous improvements to Part I.\n\n\t0m/01, Lib 0.44 (Manual revision 29):\n\n\t\tLanguage: Added '(clear old)' to clear, from the main area, any\n\t\ttext that the player has had a chance to read. Interpreters may\n\t\tignore it.\n\n\t\tLanguage: Added '(clear div)' to clear, hide, or fold away the\n\t\tcurrent div. Interpreters may ignore it.\n\n\t\tLanguage: Added '(inline status bar $) ...' for redirecting\n\t\toutput to a separate status area that appears as an ordinary\n\t\tdiv inside the main area. The inline status bar is removed from\n\t\tdisplay when a new one appears. Interpreters do not have to\n\t\tsupport status areas.\n\n\t\tLanguage: Added '(interpreter supports status bar)' and\n\t\t'(interpreter supports inline status bar)' to check for these\n\t\tfeatures at runtime.\n\n\t\tLibrary: Certain actions (commands and '[inventory]' by\n\t\tdefault) now preserve the current implicit action as set up by\n\t\t'(asking for object in $)' or '(asking for direction in $)'.\n\n\t\tLibrary: The definition of takable has changed so that TAKE ALL\n\t\tno longer includes items inside a held container.\n\n\t\tLibrary: Changed '(narrate undoing)' to '(narrate undoing $)',\n\t\twhere the parameter is the player input being undone, as a list\n\t\tof words. The default rule prints this.\n\n\t\tLibrary: Now uses noun heads to disambiguate when the grammar\n\t\tcalls for any object (e.g. for FIND).\n\n\t\tLibrary: Close doors before locking them.\n\n\t\tLibrary: Fixed a bug that affected EXCEPT/BUT when parsing\n\t\tlists of objects.\n\n\t\tLibrary: Added '[takable child]' grammar token, used for TAKE\n\t\tALL FROM.\n\n\t\tLibrary: It is now deemed unlikely to put something where it\n\t\talready is.\n\n\t\tLibrary: Refactored some rules, e.g. '(location headline)'.\n\n\t\tFrontend: Don't report more than ten interface violation\n\t\twarnings.\n\n\t\tFrontend: Increased maximum size of word-to-object maps.\n\n\t\tAll backends: '(split word $ into $)' and '(get key $)' now\n\t\treturn digits as numbers.\n\n\t\tZ-backend: Unicode bullet falls back on '*'.\n\n\t\tAa-backend: Improved performance thanks to new Aa-machine 0.5\n\t\tfeatures.\n\n\t(There is no language version 0l, for reasons of typography.)\n\n\t0k/06, Lib 0.43 (Manual revision 28):\n\n\t\tLibrary: Added a default perform-rule saying \"You can't\"\n\t\tfollowed by the action description. No more blank responses.\n\n\t\tLibrary: Changed '($ is opaque)' to '(opaque $)' and removed\n\t\tthe alias '($ is transparent)'.\n\n\t\tLibrary: Changed the output of \"exits\" to make compass\n\t\tdirections clickable if library links are enabled, and to use\n\t\t\"the\" instead of \"a\" for doors.\n\n\t\tLibrary: No longer understands \"open\" as any open object when\n\t\tdefault actions are enabled. This prevents \"open door\" from\n\t\tbeing ambiguously understood as '[open #door]' and '[examine\n\t\t#door]' when the door is open.\n\n\t\tLibrary: Added \"hug\" as a separate action from \"kiss\". Hug\n\t\tredirects to kiss by default, for backwards compatibility.\n\n\t\tLibrary: The default rules for NPC actions, '(let $NPC ...)',\n\t\tnow invoke '(notice $NPC)' to set the pronouns.\n\n\t\tLibrary: Make object names clickable when enumerating a complex\n\t\taction (if library links are enabled).\n\n\t\tLibrary: When printing a group of fungible objects with\n\t\t'(the $)', don't create a hyperlink.\n\n\t\tLibrary: Prevent cycles in the object tree when the player\n\t\tattempts to pick up an object that is their ancestor, such as a\n\t\tseat.\n\n\t\tLibrary: The default rules for climb and enter now use\n\t\t'(move player to $ $)'.\n\n\t\tLibrary: No longer redraws the status bar twice when flowing\n\t\tbetween nodes in choice mode.\n\n\t\tLibrary: Miscellaneous bugfixes and optimizations.\n\n\t\tDebugger: Imposed a limit of 50 undo steps, to conserve memory.\n\n\t\tManual: Added a section about creating custom grammar tokens.\n\n\t\tManual: Updated an example in the Items chapter.\n\n\t0k/05, Lib 0.42 (Manual revision 27):\n\n\t\tLibrary: Added support for group actions.\n\n\t\tLibrary: The parser now deals properly with 'and' and ','\n\t\tinside object names, so that e.g. 'take black and white\n\t\tphotograph' does not result in two separate attempts to take\n\t\tthe same object.\n\n\t\tLibrary: '(The $)' and friends now list fungible objects with a\n\t\tdefinite article, i.e. 'the N items' instead of 'N items'.\n\n\t\tLibrary: Improved memory performance when working with fungible\n\t\tobjects.\n\n\t\tDebugger: An informative message is printed when attempting to\n\t\tdisplay memory statistics from within the debugger.\n\n\t\tDebugger: Fixed a bug that would occasionally crash the\n\t\tdebugger when querying a dynamic flag for a new object.\n\n\t\tCompiler: Fixed a bug in the part of the optimizer that\n\t\tconverts predicates to static flags.\n\n\t\tZ-backend: Now triggers a paragraph break after updating the\n\t\tstatus bar, which is consistent with other backends.\n\n\t\tZ-backend: Fixed a bug where '(no space)' would be ignored\n\t\timmediately after a unicode character.\n\n\t\tZ-backend: Fixed an off-by-one error in the progress bar.\n\n\t0k/04, Lib 0.41 (Manual revision 26):\n\n\t\tLibrary: Fixed a bug where objects immediately inside a closed\n\t\topaque visibility ceiling weren't considered visible.\n\n\t\tLibrary: Open a closed container before stepping out of it.\n\n\t\tLibrary: Don't describe contents when opening a box from the inside.\n\n\t\tLibrary: Added '(Its $)'.\n\n\t\tCompiler: Warn if the last filename on the commandline does not\n\t\trefer to a library, i.e. a file that defines a rule for\n\t\t'(library version)'.\n\n\t\tCompiler: Allow '(now)' together with a double-negated flag,\n\t\tsuch as in '(now) ~($Obj is on)' when '@($ is on)' is an access\n\t\tpredicate for '~($ is off)'.\n\n\t\tDebugger: Improved support for cursor keys in TTY driver.\n\n\t\tManual: Removed wrongly formatted CSS comments.\n\n\t0k/03, Lib 0.40 (Manual revision 25):\n\n\t\tLibrary: Printing the name of each object when expanding a\n\t\tcomplex action, rather than spelling out the entire action.\n\n\t\tLibrary: Understanding DOWN, UP, and OUT as ambiguously\n\t\treferring to '[leave $]' and '[go $]' when the player is\n\t\trespectively on a supporter, in or on a seat, or in a\n\t\tcontainer.\n\n\t\tLibrary: '(them $)' can now deal with a list argument.\n\n\t\tLibrary: Allowing '(from $ go $ to room $)' to be invoked with\n\t\tjust the first parameter bound, to backtrack over all exits.\n\n\t\tLibrary: '(perform [leave $])' now uses '(move player to $ $)'\n\t\tinstead of setting the location of the player object directly.\n\n\t\tLibrary: Updating the environment around the player (the cache\n\t\tvariables) before drawing the status line.\n\n\t\tDebugger: Reimplemented and simplified the algorithm for\n\t\tmatching select statements when updating a running program.\n\n\t\tDebugger: No longer crashes when encountering output boxes\n\t\twhile collecting words.\n\n\t\tAa-backend: Picking shorter opcodes in some situations.\n\n\t0k/02, Lib 0.39 (Manual revision 24):\n\n\t\tCompiler: Fixed a bug that prevented per-object variables from\n\t\tbeing initialized to complex values.\n\n\t0k/01, Lib 0.39 (Manual revision 24):\n\n\t\tLanguage: Structural matching of access predicate heads.\n\n\t\tLanguage: (accumulate $) ... (into $)\n\n\t\tLanguage: Added builtin '(fully bound $)' to check if a value\n\t\tis bound and, in case of a list, contains only fully bound\n\t\telements.\n\n\t\tLanguage: The '(split $ by $ into $ and $)' built-in predicate\n\t\tnow accepts a single keyword as its second parameter (or a list\n\t\tof keywords, as before).\n\n\t\tLanguage: The character '+' may now be used in the source-code\n\t\tnames of objects and local variables.\n\n\t\tLanguage: Added special keypress words @\\u, @\\d, @\\l, @\\r, @\\n,\n\t\t@\\s, and @\\b. Removed '(word representing up $)' and friends.\n\n\t\tLibrary: Simplified grammar rules, i.e. '(grammar $ for $)' as\n\t\ta complement to '(understand $ as $)'.\n\n\t\tLibrary: Remove duplicates from the list of choices in\n\t\tchoice-mode.\n\n\t\tLibrary: Added intermediate action [switch $] that delegates to\n\t\t[switch on $] or [switch off $].\n\n\t\tLibrary: Relation objects (#on etc.) no longer have dictionary\n\t\twords. They appear directly inside action grammar rules\n\t\tinstead, e.g. [put [held] on/onto [single]].\n\n\t\tManual: Rewrote large parts of \"Understanding player input\".\n\n\t\tManual: Clarified the use of conditional labels in choice mode.\n\n\t\tManual: Reorganized some material, e.g. Debugging has moved to\n\t\tthe \"Input and output\" chapter, and '(spell out $)' is now\n\t\tunder \"Miscellaneous features\".\n\n\t\tCompiler: Bugfixes and improvements to the optimizer.\n\n\t0j/04, Lib 0.38 (Manual revision 23):\n\n\t\tLibrary: Undo is performed as an action, [undo], and reported\n\t\tvia '(narrate undoing)'. It is still parsed as a special case.\n\n\t\tLibrary: When the player types an object name in response to a\n\t\tdirect question (e.g. \"To whom?\"), don't understand it as a\n\t\trequest to perform the default action (e.g. examine).\n\n\t\tCompiler: Fixed a bug that disallowed @-prefixed words in\n\t\tslash-expressions.\n\n\t\tCompiler: Several improvements to the optimizer.\n\n\t0j/03, Lib 0.37 (Manual revision 22):\n\n\t\tLibrary: Choice mode.\n\n\t\tLibrary: Added hooks that are queried early and late on every\n\t\ttick.\n\n\t\tLibrary: Undo now operates at the level of commandlines, rather\n\t\tthan complex actions. \"UNDO\" must now be typed on a line of its\n\t\town, but behaves in a less surprising way.\n\n\t\tLibrary: Before entering a closed container, try opening it.\n\n\t\tCompiler: Fixed rare bug related to variables bound inside\n\t\tif-statements.\n\n\t\tCompiler: Minor optimization of collect-into.\n\n\t\tDebugger: Removed spurious blank line when entering a status\n\t\tbar environment.\n\n\t0j/02, Lib 0.36 (Manual revision 21):\n\n\t\tDebugger: Removed stray warnings about singleton variables when\n\t\tmerging changes to the running program.\n\n\t\tLibrary: Visibility is now recomputed after updating the\n\t\tcurrent room variable and moving any floating objects.\n\n\t0j/01, Lib 0.35 (Manual revision 21):\n\n\t\tLanguage: '(link)' can now be followed by any kind of\n\t\tstatement, not just a plain list of words.\n\n\t\tLanguage: A new builtin, '(clear links)', turns old hyperlinks\n\t\tinto plain text, which is useful when the scope changes\n\t\tdrastically, e.g. when moving to a different room.\n\n\t\tLanguage: Added spans as an inline complement to divs.\n\n\t\tLanguage: There are new builtins for splitting and joining\n\t\twords, and for checking if a word is listed in the game\n\t\tdictionary.\n\n\t\tLanguage: The word-separating characters are now \". , ; * ( )\"\n\t\tand double-quote. These characters are treated as individual\n\t\twords during input parsing, and from now on also during\n\t\t'(collect words)' operations, even when they appear as part of\n\t\tlarger words in the source code. When these single-character\n\t\twords are printed back as values, whitespace is inhibited\n\t\tbefore \". , ; )\" and after \"(\".\n\n\t\tLanguage: '(append $A $B $AB)' is now built into the language,\n\t\trather than defined by the library, for performance reasons.\n\n\t\tLanguage: Added support for interface declarations.\n\n\t\tLibrary: Added OOPS command, for fixing typos.\n\n\t\tLibrary: Fixed a bug in how reachability is determined.\n\n\t\tLibrary: Fixed a bug where understand-as-any-object didn't take\n\t\tthe specified policy into account.\n\n\t\tCompiler: Added warnings about singleton variables.\n\n\t\tCompiler: Improved ability to trace unbound values, and warn\n\t\tabout potential interface violations.\n\n\t\tAa-backend: Improved performance thanks to new Aa-machine 0.4\n\t\tfeatures.\n\n\t\tManual: Moved the section about the pristineness of nested\n\t\tobjects to the end of the Items chapter.\n\n\t0i/03 Lib 0.34 (Manual revision 20):\n\n\t\tCompiler: Fixed a bug where, under very specific circumstances,\n\t\ta register could get overwritten by an else-clause.\n\n\t\tAa-backend: Fixed a bug where text containing non-ASCII\n\t\tcharacters would occasionally be converted to lowercase.\n\n\t\tDebugger: Fixed a bug in how UTF-8 input is divided into words.\n\n\t\tManual: Added a clarification about the pristineness of nested\n\t\tobjects, including the initial possessions of the player.\n\n\t0i/02 Lib 0.34 (Manual revision 19):\n\n\t\tLibrary: Fixed a bug in how the visibility ceiling was\n\t\tcomputed.\n\n\t\tDebugger: Removed spurious extra \"Query succeeded\" after each\n\t\tinteractive query. Proper reporting of interactive queries to\n\t\taccess predicates.\n\n\t\tManual: Added missing multi-query asterisks to the fungibility\n\t\texamples.\n\n\t0i/01 Lib 0.33 (Manual revision 18):\n\n\t\tLanguage: The initial values for ($ has parent $) are derived\n\t\tfrom a compile-time multi-query.\n\n\t\tLanguage: New syntax: (link) { ... } for simple lists of words.\n\n\t\tLanguage: (log) { ... } for printing text in a different\n\t\tcolour, and only when running in the interactive debugger.\n\n\t\tLibrary: The library defines no rewrite-rules anymore.\n\n\t\tLibrary: Short form of appearance, '(appearance $)'. Objects\n\t\tare noticed if the appearance predicate is queried succesfully.\n\n\t\tLibrary: New standard action: '[talk to $Obj about $Topic]'.\n\t\tAsk/tell redirect to it by default, and it in turn redirects to\n\t\t'[talk to $Obj]' by default.\n\n\t\tLibrary: Added '(list objects $ $)'.\n\n\t\tLibrary: Fixed several cases of a hardcoded \"is\" where\n\t\tplural-sensitivity was required.\n\n\t\tLibrary: Rewrote some of the code dealing with unlikely\n\t\tactions.\n\n\t0h/05 Lib 0.32 (Manual revision 17):\n\n\t\tLibrary: Facilities for implementing moving NPCs.\n\n\t\tLibrary: Topic objects. The unrecognized topic.\n\n\t\tLibrary: Added '(after $)' stage to action handling.\n\n\t\tLibrary: Disallow taking other people's clothing and\n\t\tpossessions.\n\n\t\tLibrary: Narration callbacks for holding or wearing nothing.\n\n\t\tLibrary: New predicates for understanding words as any object\n\t\t(which must be located in a visited room, and not marked as\n\t\thidden).\n\n\t\tLibrary: Made it possible to use '(from $ go $ to room $)'\n\t\tbackwards, i.e. to specify the current and neighbouring rooms,\n\t\tand obtain the direction.\n\n\t\tLibrary: Adverbs for directions (e.g. above/below), and a\n\t\tpredicate for obtaining the opposite of a direction.\n\n\t\tLibrary: Utility predicate to select a random element from a\n\t\tlist.\n\n\t\tLibrary: Hook for inserting additional banner text.\n\n\t\tLibrary: Disambiguation will consider '(dict $)' synonyms.\n\n\t\tLibrary: Refinements to the path-finding algorithm. Added\n\t\t'(first step from $ to $ is $)', for when the complete path\n\t\tisn't needed.\n\n\t\tManual: Documentation of the new library features, including a\n\t\tnew NPC chapter.\n\n\t\tManual: Brief mention of the Aa-machine 6502 interpreter, and\n\t\tan updated chart in the Software chapter.\n\n\t\tZ-backend: Now correctly enables auto-whitespace after a word\n\t\tthat ends with a unicode character.\n\n\t\tDebugger: Properly deals with Delete and some other special\n\t\tkeys.\n\n\t0h/04 Lib 0.31 (Manual revision 16):\n\n\t\tLibrary: Rewrote shortest-path algorithm to reduce memory\n\t\tfootprint.\n\n\t\tLibrary: Reduced heap usage during nested disambiguation\n\t\tquestions.\n\n\t\tCompiler: Improved information about unbound variables in -vvv\n\t\toutput.\n\n\t\tCompiler: Added support for '(now) ~($ has parent $)', for\n\t\tcompleteness.\n\n\t\tCompiler: Reduced temporary register usage. Added a check to\n\t\treport an error if we're running out of registers.\n\n\t\tCompiler: Improved optimization of if-statements.\n\n\t\tCompiler: Fixed additional corner-case bugs discovered through\n\t\tfuzzing.\n\n\t\tZ-backend: Allows dynamic predicates to be unset for\n\t\tnon-objects (nothing happens).\n\n\t\tAa-backend: Generates smaller and faster code.\n\n\t\tAa-backend: Collecting into a value (e.g. a list expression)\n\t\tnow works properly.\n\n\t\tAa-backend: Fixed a compiler error due to e.g. '(#a = $X)'.\n\n\t\tDebugger: Allows dynamic predicates to be unset for non-objects\n\t\t(nothing happens).\n\n\t\tDebugger: Now handles auxiliary heap overflow gracefully.\n\n\t\tDebugger: Correct handling of undo inside div, e.g. from the\n\t\truntime error handler.\n\n\t\tDebugger: Fixed a bug related to single-digit input.\n\n\t0h/03 Lib 0.30 (Manual revision 16):\n\n\t\tCompiler: No longer crashes when trying to generate a zblorb\n\t\tthat lacks certain metadata.\n\n\t0h/02 Lib 0.30 (Manual revision 16):\n\n\t\tDebugger: Results from interactive queries to *(split $ by $\n\t\tinto $ and $) are displayed properly.\n\n\t\tDebugger: Attempts to define closures interactively are\n\t\trejected, but no longer crash.\n\n\t\tAa-backend: Improved code generation.\n\n\t0h/01 Lib 0.30 (Manual revision 15):\n\n\t\tLanguage: Added support for resources, such as pictures and\n\t\texternal links. This includes two new syntactic elements,\n\t\t'(define resource $)' and '(link resource $)', and two built-in\n\t\tpredicates, '(embed resource $)' and '(interpreter can\n\t\tembed $)'. This feature is primarily intended for use with the\n\t\taa-machine backend.\n\n\t\tLanguage: Added runtime check '(interpreter supports quit)'.\n\n\t\tLibrary: The game-over menu is displayed differently, and the\n\t\t'quit' item only appears if '(interpreter supports quit)'\n\t\tsucceeds. The normal 'quit' verb is still handled as before.\n\n\t0g/06 Lib 0.29 (Manual revision 14):\n\n\t\tLibrary: In the before-rules for eating and drinking, only\n\t\tattempt to pick up the indicated object if it is edible or\n\t\tpotable.\n\n\t\tLibrary: Treat \"X, tell me about Y\" as \"ask X about Y\".\n\n\t\tLibrary: Fixed a bug where '(describe topic $)' couldn't deal\n\t\twith ambiguity.\n\n\t\tCompiler: Fixed a bug related to the optimization of nested\n\t\tdisjunctions.\n\n\t0g/05 Lib 0.28 (Manual revision 14):\n\n\t\tLibrary and documentation: Added '(heads $)'.\n\n\t\tDebugger: Commandline option -L to disable hyperlinks in the\n\t\toutput. This also affects '(interpreter supports links)'.\n\n\t\tAa-backend: Now obeys the -s option for stripping away internal\n\t\tobject names (hash tags) from the story file.\n\n\t\tCompiler: The quadruple-verbose output (-vvvv) now includes a\n\t\tlist of all the words the story might print. With a bit of\n\t\tscripting, these can be sent to an external spell checker.\n\n\t\tCompiler: Fixed a bug where '(determine object $)' didn't\n\t\taccept integers in the input.\n\n\t\tLibrary: If parsing fails when default actions are enabled,\n\t\tdon't assume that a default action was intended.\n\n\t\tCompiler: Fixed several corner-case bugs discovered through\n\t\tfuzzing.\n\n\t0g/04 Lib 0.27 (Manual revision 13):\n\n\t\tDebugger and aa-machine backend: Improved support for Unicode\n\t\tcharacters, including case conversion.\n\n\t\tAa-backend bugfix: Non-ASCII characters are now treated\n\t\tproperly during string encoding.\n\n\t\tLibrary: Added a new '(game over option)' predicate, for adding\n\t\tcustom options to the game over menu.\n\n\t\tCompiler: Rephrased a confusing warning message.\n\n\t\tDocumentation: Clarifications and minor updates.\n\n\t0g/03 Lib 0.26 (Manual revision 12):\n\n\t\tZ-machine backend: Added support for selecting the fixed-width\n\t\tfont using CSS (font-family: monospace).\n\n\t\tCompiler bugfix: '(determine object $)' would sometimes return\n\t\tthe same object twice.\n\n\t\tDebugger bugfix: '(uppercase)' followed by '(link $)' now works\n\t\tcorrectly.\n\n\t\tZ-machine backend: Bugfix in '(progress bar $ of $)'.\n\n\t\tDocumentation: Minor updates.\n\n\t0g/02 Lib 0.26 (Manual revision 11):\n\n\t\tRe-release of 0g/01, including several files that were missing.\n\n\t0g/01 Lib 0.26 (Manual revision 11):\n\n\t\tCompiler: Aa-machine backend. Hyperlinks.\n\n\t\tLibrary: Hyperlink-related features.\n\n\tLibrary bugfix release 0.25:\n\n\t\tWhen parsing commands to a non-player character, understand\n\t\tnouns based on their relation to the actor rather than the\n\t\tplayer.\n\n\t0f/07 Lib 0.24 (Manual revision 10):\n\n\t\tDocumentation: Added predicate index. Various minor\n\t\timprovements and clarifications.\n\n\t\tLibrary: Style class definitions use em and ch properly.\n\n\t\tLibrary bugfix: With fungibility enabled, under certain\n\t\tcircumstances, object appearances didn't get printed.\n\n\t\tZ-machine backend: ASCII fallbacks for en-dash, em-dash, and\n\t\tthree kinds of fancy quotes.\n\n\t0f/06 Lib 0.23 (Manual revision 9):\n\n\t\tBugfix: Removed a case where the Z-machine backend would\n\t\tattempt to set an undefined style bit.\n\n\t0f/05 Lib 0.23 (Manual revision 9):\n\n\t\tDebugger: Fixed crashing bug when hot-reloading code with\n\t\tclosures.\n\n\t0f/04 Lib 0.23 (Manual revision 9):\n\n\t\tBugfix related to certain if-conditions.\n\n\t0f/03 Lib 0.23 (Manual revision 9):\n\n\t\tCompiler: Fixed a bug in the Z-machine backend where, under\n\t\tcertain conditions, long dictionary words didn't get truncated\n\t\tat compile-time.\n\n\t0f/02 Lib 0.23 (Manual revision 9):\n\n\t\tCompiler: Fixed a bug that caused heavily nested conditional\n\t\texpressions to compile very slowly.\n\n\t\tDocumentation: Removed two obsolete entries from the quick\n\t\treference.\n\n\t0f/01 Lib 0.23 (Manual revision 8):\n\n\t\tIntroduction of closures. Related changes in the standard\n\t\tlibrary.\n\n\t\tIntroduction of '(div $)' and style classes. Added '(unstyle)'.\n\t\tDiv-based control of the status bar area. Added '(progress bar\n\t\t$ of $)'.\n\n\t\tRemoved built-in predicates: '(par $)', '(status bar width $)',\n\t\t'(cursor to row $ column $)'.\n\n\t\tRemoved '(unbound $)'. Added '(bound $)' with opposite\n\t\tsemantics.\n\n\t\tCorresponding changes to the documentation.\n\n\t\tBugfix: The transcript builtins are working again.\n\n\t\tMinor bugfixes and optimizations.\n\n\t0e/03 Lib 0.22 (Manual revision 7):\n\n\t\tCompiler: Internal restructuring and cleanup, as well as new\n\t\toptimizations.\n\n\t\tLibrary: Added '(them $)' for object pronouns (them, her, it,\n\t\tand so on).\n\n\t\tDebugger: Bugfix related to select and undo.\n\n\t0e/02 Lib 0.21 (Manual revision 6):\n\n\t\tLibrary: In object-based disambiguation, the answer is now\n\t\tmatched against '(the full $)'.\n\n\t\tLibrary: Object-based disambiguation can now be undone with a\n\t\tsingle undo.\n\n\t\tLibrary: Scope is now computed on the fly, whereas the current\n\t\tvisibility is represented with global variables. Query\n\t\t'(recompute visibility)' to update them. The new representation\n\t\thas better performance due to the changes in 0e/01.\n\n\t\tLibrary: All objects around the perimeter of a room (not just\n\t\tdoors) are attracted to the room.\n\n\t\tLibrary: Objects around the perimeter of a room are no longer\n\t\tin scope if the player is unable to see them.\n\n\t\tBugfixes and performance improvements in the internals of\n\t\t'(determine object $)'.\n\n\t\tBugfix related to certain multi-queries in tail position.\n\n\t\tBugfix: Reporting a number of syntax errors instead of\n\t\tasserting.\n\n\t0e/01 Lib 0.20 (Manual revision 5):\n\n\t\tLong-term heap for complex values stored in global and\n\t\tper-object variables. Removed the syntax for declaring a global\n\t\tvariable with a maximum size.\n\n\t\tRemoved '(collect words) / (and check $)'. Added\n\t\t'(determine object $) / (from words) / (matching all of $)'.\n\n\t\tAdded support for dictionary words with essential and optional\n\t\tparts. Removed '(get raw input $)'.\n\n\t\tLibrary: Removed '(print raw input $)'. Added '(print words $)'\n\t\tand '(Print Words $)'. Adapted the parser to the new\n\t\t'(determine object $)' syntax.\n\n\t\tVarious bugfixes in the debugger and compiler.\n\n\t0d/02 Lib 0.19 (Manual revision 4):\n\n\t\tA couple of bugfixes in the debugger.\n\n\t0d/01 Lib 0.19 (Manual revision 4):\n\n\t\tIntroduced the Interactive Debugger, with corresponding\n\t\tmodifications to the documentation.\n\n\t\tAdded '(breakpoint)' built-in predicate.\n\n\t\tLibrary: Added '(actions on)', '(actions off)', and '(scope)'\n\t\tpredicates to be queried from the debugger. The corresponding\n\t\tplayer-accessible commands remain in the debugging extension.\n\n\t\tLibrary: Modified the treatment of UNDO and AGAIN, to better\n\t\tsupport the interactive debugger.\n\n\t\tLibrary: Minor improvements.\n\n\tLibrary release 0.18:\n\n\t\tAdded '(print raw input $)'.\n\n\t0c/05 Lib 0.17 (Manual revision 3):\n\n\t\tAdded support for the .z5 output format.\n\n\t\tBugfix: '(uppercase)' now works properly with dictionary words.\n\n\t\tLibrary: Improved a few default responses. Added '(narrate\n\t\tfailing to look $Dir)'.\n\n\t0c/04 Lib 0.16 (Manual revision 2):\n\n\t\tBugfix related to the allocation of a temporary register in a\n\t\t'has parent' optimization.\n\n\t\tBugfix related to nested stoppable environments.\n\n\t\tLibrary: Added a synonym ('toss' for 'throw').\n\n\t0c/03 Lib 0.15 (Manual revision 2):\n\n\t\tImproved disambiguation: Now the library will ask the player to\n\t\tchoose from a list of objects, if that makes all the\n\t\tdifference. For more complicated situations, it falls back on a\n\t\tnumbered list of actions.\n\n\t\tMiscellaneous compiler bugfixes.\n\n\t0c/02 Lib 0.14 (Manual revision 2):\n\n\t\tCompiler bugfix related to '(status bar width $)'.\n\n\t0c/01 Lib 0.14 (Manual revision 2):\n\n\t\tAdded slash expressions, for specifying alternatives in rule\n\t\theads. In the standard library, most synonyms are now handled\n\t\tdirectly by the understand-rules instead of being rewritten.\n\n\t\tAdded a mechanism for infinite loops, '(repeat forever)'.\n\t\tBackends are no longer required to support tail-call\n\t\toptimizations (the Z-machine backend still does, of course, but\n\t\ta future debugging backend might not).\n\n\t\tAdded stemming support for non-English games. During parsing,\n\t\tif a word isn't found in the dictionary, Dialog will attempt to\n\t\tremove certain word endings (typically declared by the library)\n\t\tand try again.\n\n\t\tMade it possible to specify the initial values of complex\n\t\tglobal variables.\n\n\t\tAdded built-in predicate '(interpreter supports undo)'. The\n\t\tlibrary can now avoid suggesting UNDO in the game over menu\n\t\twhen undo is not available.\n\n\t\tBugfix: FIND deals correctly with (not here $) objects.\n\n\t\tAdditional compiler optimizations.\n\n\t\tRemoved overly restrictive feature-test macros.\n\n\tLibrary bugfix release 0.13:\n\n\t\tBugfix: Made it possible to (try [look]) from within (intro).\n\n\t\tBugfix: Made it possible to drive vehicles from room to room.\n\n\t0b/01 Lib 0.12 (Manual revision 1):\n\n\t\tThis is the first public release of Dialog.\n\n\t\tDialog is currently in its beta stage, which means that the\n\t\tlanguage may still undergo significant changes. It also means\n\t\tthat you, dear potential story author, still have a substantial\n\t\tchance to influence what those changes will be.\n\n\t\tThe source code for the compiler is currently rather messy, and\n\t\tI'm planning a major clean-up. However, it should be portable,\n\t\tand it works according to the language specification (as far as\n\t\tI know).\n\nHappy authoring!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdialog-if%2Fdialog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdialog-if%2Fdialog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdialog-if%2Fdialog/lists"}