Repository navigation
Add Mach programming language - #653
Merged
Merged
Conversation
Collaborator
|
Thanks @octalide! |
Collaborator
|
Hi @octalide, The Mach programming language has also been added to Programming-Language-DataBase#47. Kind Regards, |
kaby76
pushed a commit
to kaby76/pldb
that referenced
this pull request
Oct 4, 2026
Owner
|
not sure if this went live yet because of deploy bug, but just verified its live now: https://pldb.io/concepts/mach.html |
kaby76
added a commit
that referenced
this pull request
Oct 29, 2026
* Fix Windows/MSYS2 build compatibility
This commit fixes several issues that prevented the PLDB build from
working on Windows with MSYS2:
Path handling fixes:
- code/measures.parsers: Use regex to match both forward and backslashes
when stripping /concepts from paths
- code/conceptPage.scroll: Use path.resolve() to ensure absolute paths
- lists/*.scroll & code/generateFeaturePages.scroll: Use path.resolve()
with particle.root.filePath for cross-platform path resolution
Bootstrap fixes in Computer.js:
- getLanguageTemplate(): Handle missing concepts gracefully during bootstrap
- get measures(): Return empty array if measures.json doesn't exist yet
- makeATag(): Return placeholder link instead of throwing for missing files
- get features(): Guard against empty features array
Build configuration:
- code/conceptPage.scroll: Add buildHtml directive so concept pages generate HTML
Data:
- pldb.json: Include complete generated database (5144 languages) for
build bootstrapping since pldb.io is no longer available
Note: The scroll-cli package also requires a patch to node_modules for
Windows compatibility (Utils.posix.basename -> require("path").basename
in parsers/root.parsers) which is not included in this commit.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Update readme with complete build instructions
- Document the multi-step build process with proper order
- Add feature page generation step (was undocumented)
- Add Windows/MSYS2 compatibility instructions for scroll-cli patch
- Note that npm run build may not work on all platforms
- Add instructions for running local server
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Fix path resolution for replaceNodejs/runNodejs contexts
The `particle` variable is only available in evalNodeJs context, not in
replaceNodejs/runNodejs contexts which run as separate Node.js scripts.
Changed lists/*.scroll and code/generateFeaturePages.scroll to use
process.cwd() instead of particle.root.filePath for path resolution.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Document build order dependencies in readme
- Note that creators must be built before lists
- Note that feature scroll files must be generated before building features
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Add in build and run server, update instructions.
* Force add.
* Add server deployment script and documentation
- Add setup-pldb.sh for automated deployment to Ubuntu servers
- Update readme.scroll with deployment instructions
The script handles Node.js installation, swap space creation,
building, and systemd service configuration for auto-start on reboot.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Add antlr grammar cross-references for 122 concepts.
- Add antlr entries for ~110 new concepts linking to grammars-v4
- Fix 12 existing antlr URLs (correct nested paths, blob->tree format)
- Part of grammars-v4 #4742
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update pldb.json
* Add antlr grammar cross-references for 172 concepts.
- Add antlr entries for ~155 new concepts linking to grammars-v4
- Fix 17 existing antlr URLs (correct nested paths, blob->tree format)
- Part of grammars-v4 #4742
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update Computer.js
* Fix null reference errors in Computer.js for missing concept data
Add null-safe access for leachim6 examples without example sub-particles,
writtenIn references to unknown concept IDs, and inbound links to
unloaded concepts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update pldb.json
* Decouple pldb.json and add maintenance page during build
Make pldb.json loading resilient so the build works whether pldb.json
is missing, empty, or complete. Replace the bare require() class field
with a try/catch getter that defaults to [].
When using --serve, start the server immediately with a self-refreshing
maintenance page before the build begins. The real site appears
automatically once the build completes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix CRLF line endings in javascript.scroll and antlr.scroll
The scroll parser doesn't strip \r, so CRLF files produced ids like
"javascript\r" causing ENOENT errors during build. Convert both files
to LF and add eol=lf to .gitattributes for *.scroll to prevent
recurrence. Regenerate pldb.json with clean data.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Show maintenance page during remote server rebuild
Stop the existing PLDB service before rebuilding, then serve a
temporary maintenance page on port 80 while the clone and build
run. The page auto-refreshes so browsers see the real site once
the build finishes and the systemd service restarts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Serve maintenance page for all URL paths during rebuild
Add --single flag to npx serve so all routes return the maintenance
page instead of 404.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Build on GitHub Actions and deploy pre-built artifact to server
Add a GitHub Actions workflow that builds the site on push to main
and publishes the result as a GitHub Release tarball. Update
setup-pldb.sh to download the pre-built artifact instead of cloning
and building on the server, removing the need for swap space on
low-memory droplets.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix tar 'file changed as we read it' by writing tarball to /tmp
The tarball was being created inside the directory being archived,
causing tar to detect the directory changing mid-read.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix maintenance server not fully killed before starting PLDB service
The npx serve process spawns a child node process, and killing only the parent PID left the child holding port 80. Now kills the entire process group and uses fuser as a safety net.
* Update readme docs for GitHub Actions build and deploy workflow
Document the new workflow: push to main triggers a GitHub Actions build, then setup-pldb.sh downloads the pre-built artifact instead of building on the server.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix badge status.
* Replace https://pldb.io with http://pldb.info across all files
Update all URL references in scroll, markdown, parsers, explorer, and SVG files to point to the new pldb.info domain.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Replace functional pldb.io references with pldb.info
Update editBaseUrl folderName params, issues subdomain, and feedback email to use pldb.info domain.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update readme.md
* Update readme.md
* Fix missing Monaco editor by using full npm install on server
The site serves monaco-editor directly from node_modules/ at runtime, but monaco-editor is listed as a devDependency. Using npm install --production skipped it, leaving the monacoContainer empty on concept pages.
Change npm install --production back to npm install so all dependencies (including monaco-editor) are installed on the server.
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com
Yes, Kenny found this and solution.
* Update pldb.io -> pldb.info
Update remaining links across the repo.
* Update builds on PR merges.
* Update Email Address
PLDB Admins (Google Groups)
* Fix workflow to not overwrite latest release on PRs
Gate release steps on push-to-main only. PRs now upload an ephemeral
artifact (site-pr-{number}, 7-day retention) instead of touching the
latest release. Also add --cleanup-tag to the delete step so the git
tag is removed before recreating, preventing "tag already exists" failures.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Add test-local.sh for serving pre-built artifacts locally
Downloads and serves either the latest release from main or a
specific PR artifact (--pr <number>), with optional --repo and
--port overrides. Repo is auto-detected from git remote origin.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
And yes — if you want to revert the setup-pldb.sh changes, just leave it unstaged in GitHub Desktop. Do you want me to revert it
back to the original, or leave the --pr support in there for potential future use?
* Add npm install step to test-local.sh after extracting tarball
node_modules is excluded from the tarball (same as production), so
npm install is needed to restore dependencies like the Monaco editor.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Add Top TIOBE Languages section to homepage
Fetches the TIOBE top 10 at build time (npm run build) and renders
them on the index page beneath Top Languages, with PLDB concept links
and a "(Fetched YYYY-MM-DD)" timestamp inline with the heading.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Fix problem raised by copilot.
* Fix TIOBE fetch error handling per PR review
- Reject on non-2xx HTTP status (drain response to free socket)
- Add error listener on response stream to prevent unresolved promise
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Require at least 10 TIOBE matches before resolving fetch
A partial parse (e.g. from an HTML structure change) would previously
succeed silently. Now reject if fewer than 10 languages are found.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Patch scroll-cli copy button to work in non-HTTPS contexts
Add patchScrollCliCopyButton() to build.js that replaces the
navigator.clipboard early-return guard with a fallback using
document.execCommand("copy"), so the copy icon appears when
viewing pages over HTTP or as local file:// URLs.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Fix copy button patch and heap OOM in build
- Update quote escaping in patchScrollCliCopyButton to match scroll-cli's current minified output (plain quotes instead of escaped)
- Increase Node.js heap to 8GB via NODE_OPTIONS to prevent OOM crash on large builds
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Add npm run clean script to remove build artifacts
Adds clean.js and a "clean" script in package.json that removes all files
generated by "npm run build:serve" without touching source files or
in-progress work. Also unblocks clean.js from .gitignore's *.js rule.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Guard clean.js against running outside repo root; document in readme
Adds a check that exits with an error if clean.js is not run from the
top-level repository directory. Also adds npm run clean to the readme's
NPM Scripts table.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Add weekly automated TIOBE rebuild and server auto-update
- Schedule GitHub Actions to rebuild every Monday at 06:00 UTC, publishing
a fresh site.tar.gz with updated TIOBE data to GitHub Releases
- Update setup-pldb.sh to install a server-side update script and cron job
that pulls the new release and hot-swaps the site directory at 09:00 UTC,
with automatic rollback if the service fails to restart
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Fix crash in feature page generation when particle is undefined
getParticle() returns undefined for concepts that don't have the
feature particle directly in their scroll file. Use optional chaining
to guard both the .length check and .subparticlesToString() call.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Address Copilot review feedback on weekly rebuild PR
- build.yml: add concurrency group to prevent push/schedule races on
the latest release
- setup-pldb.sh: normalize repo URL to HTTPS before saving; change
log() to append directly to avoid duplicate lines from cron redirect;
fail fast if backup mv fails; use explicit if/else around systemctl
restart so set -e does not skip rollback on failure
- Computer.js: cache getConceptFile/getParticle result to avoid
redundant lookups in filter+map
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Fix cron job not being installed when server has no existing crontab
With set -e active inside the ENDSSH heredoc, grep -v exits 1 when
given empty input (no existing crontab), causing the subshell to abort
before the echo runs. crontab - then receives empty stdin and installs
nothing. Adding || true prevents the early exit.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Add latest PL news section
Fetches recent articles from arXiv cs.PL, lobste.rs/t/plt, Lambda the
Ultimate, and Hacker News during each build. Includes disambiguation
logic to avoid false positives for ambiguous language names (C, R, Go).
Adds a "News on Programming Languages" link on the homepage and a full
article listing at /news.html.
Also fixes test-local.sh npm install --prefix failure on MSYS2/Windows.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Add ACM Digital Library as a news source
Fetches from PACMPL (covers POPL, ICFP, OOPSLA) and TOPLAS feeds.
Also fixes RSS 1.0 parser to not match <items> container element.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Fix styling.
* Fix double-escaped ampersand in ACM DL section heading
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Add Medium as a news source
Fetches articles tagged 'programming-languages' and 'programming-language'
from Medium's RSS feeds. Deduplication handles the overlap between the two tags.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Rename news section and fix Medium duplicate articles
- Rename "News on Programming Languages" to "Research and News on
Programming Languages" in both the homepage widget and news page
- Fix Medium deduplication by stripping query strings before comparing
URLs (both tag feeds return the same articles with different ?source=
parameters)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Add news.scroll to .gitignore (generated file)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Fix link.
* Fix links.
* Updates.
* Replace ACM DL with DBLP and IEEE TSE
ACM DL started returning 403. Replaced with:
- DBLP Computer Science Bibliography (JSON API, no key, covers all PL
venues; filtered to current year and prior year)
- IEEE Transactions on Software Engineering (RSS, no auth required)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Address Copilot review feedback on DBLP fetcher
- Normalize DBLP titles with decodeEntities() to prevent double-escaping
- Handle info.ee being an array by picking the first URL
- Guard author extraction against non-object entries
- Fix comment to accurately describe sort behavior (relevance then year)
- Use consistent full name "IEEE Transactions on Software Engineering"
in both the section header and the sources line
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Add retry logic (5 attempts, 20s timeout) to all news feed fetchers
Each source fetcher now uses fetchWithRetry instead of fetchUrl directly,
retrying up to 5 times with a 2s delay and 20s per-attempt timeout to
handle transient failures (e.g. DBLP timeouts).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Fix subdirectory pages having wrong baseUrl due to settings.scroll override
root header.scroll imported settings.scroll (baseUrl http://pldb.info/),
which overrode subdirectory-specific baseUrl settings (blog/, lists/,
features/, pages/) since it was always imported last. This caused canonical
URLs, OG image URLs, and "Continue reading" links to point to the root
instead of the correct subdirectory path.
Fix by removing settings.scroll from header.scroll and placing it in
rootHeader.scroll (used only by root-level pages) and 404.scroll (the
only root-level file that imports header.scroll directly).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Fix snippet links pointing to wrong path when URL lacks trailing slash
printSnippetsParser and printTitleParser generated relative links
(e.g. chrisLattner.html) which break when a directory page is served
without a trailing slash (e.g. /blog instead of /blog/) — the browser
resolves the link against the parent path, stripping the /blog/ prefix.
Patch scroll-cli at build time to use root-relative paths derived from
scrollProgram.absoluteLink (e.g. /blog/chrisLattner.html) instead of
the bare permalink. This makes all snippet and title links work
regardless of whether the URL includes a trailing slash.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Address Copilot review feedback
- Add null guard to snippets.parsers patch: _absLink may be undefined,
so check (_absLink && _absLink.includes("://")) consistently with the
title.parsers patch
- Add comment noting that root-relative links require a local server and
do not work under file://
- Fix 404.scroll: change bare 'replace BASE_URL' to 'replace BASE_URL .'
to be explicit and consistent with other root-level pages
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Updates.
* Fix snippet links pointing to wrong path when URL lacks trailing slash
printSnippetsParser and printTitleParser generated relative links
(e.g. chrisLattner.html) which break when a directory page is served
without a trailing slash (e.g. /blog instead of /blog/) — the browser
resolves the link against the parent path, stripping the /blog/ prefix.
Also fixes inline links (HTML/TXT) and images inside snippet body
content that had the same relative-path problem.
Patch scroll-cli at build time:
- snippets.parsers makeSnippet: adds a _fixRelativePaths helper that
converts ALL relative href/src attributes in snippet HTML to
root-relative paths (e.g. /blog/chrisLattner.html, /blog/ages.png).
Covers "Continue reading", inline links, and images in both the
endSnippet and full-snippet code paths.
- title.parsers printTitle: uses root-relative permalink derived from
scrollProgram.absoluteLink.
Note: root-relative links require a local server; they do not work
under file://.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Address Copilot review feedback: merge snippet patches into single atomic replacement
Merges the two separate patchFile calls for snippets.parsers into one atomic
replacement covering the entire makeSnippet body, so the _fixRelativePaths
definition and its usage are always patched together.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Improve news page formatting and navigation
- Indent news section headings 1.5em and list items an additional 1.5em
- Link section headings and Sources line to each source's main website
- Center the "Updated:" metadata line
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Escape URL in news section heading href attribute
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Make Sources line jump to sections instead of external links
The "Sources:" links in the header now scroll to the corresponding
section heading on the page. The headings themselves retain the
external links to each source website.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Add GQL (Graph Query Language) concept page
Adds concepts/graph-query-language.scroll for ISO/IEC 39075:2024 GQL,
the first new ISO database query language standard since SQL in 1987.
Named graph-query-language since gql.scroll is already taken by a 1980
Birkbeck College language. Includes description, keywords, language
features, influenced-by links (sql, cypher, gsql, pgql, sparql),
ANTLR grammar reference, and Wikipedia metadata.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Add weekly DBLP update for GQL concept page
- code/updateDblpGql.js: fetches DBLP publications for GQL (ISO 39075)
and SQL/PGQ from the last 5 years and writes them into the `dblp`
block of concepts/graph-query-language.scroll
- build.js: calls updateDblpGql as Step 2.7, so it runs on every build
(both the weekly Monday schedule and normal push/PR builds)
- concepts/graph-query-language.scroll: initial dblp block with 14
publications (2021–2026) from two DBLP queries: "GQL graph" and
"SQL/PGQ"
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Move DBLP GQL update to a separate Tuesday workflow
- Remove updateDblpGql call from build.js (no longer runs on every build)
- Add .github/workflows/update-dblp-gql.yml: runs every Tuesday at 06:00
UTC, fetches fresh DBLP data, commits the updated scroll, and pushes
(which then triggers the Monday build.yml on the next push to main)
- Also supports manual dispatch via workflow_dispatch
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Update DBLP GQL publications (weekly)
* Update DBLP GQL publications (weekly)
* Update DBLP GQL publications (weekly)
* Update DBLP GQL publications (weekly)
* Update DBLP GQL publications (weekly)
* Update DBLP GQL publications (weekly)
* Proposed CWL updates
Hello, I'm one of the CWL project co-founders and the CWL Project Leader.
I guessed at the syntax based upon other entries; my apologies if I got something wrong.
* Update DBLP GQL publications (weekly)
* Update DBLP GQL publications (weekly)
* fixes and github pages workflow
* Add NOVA programming language
NOVA is a constraint-native programming language unifying object-capability
security and row-typed effect systems. Authority to touch the outside world
is an unforgeable token passed explicitly rather than granted by import, and
a function's effects are checked as part of its type signature, so a
closure cannot silently launder a captured capability into a context that
expects a pure function.
Repository: https://github.com/ieeecsopen/NOVA
License: Apache-2.0
0.2 research preview — the frontend type/effect/capability checker and a
reference interpreter are implemented and tested (49-case conformance
suite); a first-order native C backend covers a subset of the language.
* Add Conflate programming language entry
* Format Conflate entry with Scroll
* Add FuncSug programming language
* Add Morloc language (#652)
Morloc composes functions across languages under a common type
system. CLIs, APIs and MCP models are generated directly from the
functions. Recursion (with tail-call optimization), recursive types, sum
types, typeclasses, pattern matching, guards and all other good things
are supported across languages.
* Add Mach programming language (#653)
* Create ussr.scroll
* Canonicalize 7 duplicate creator names (#654)
Fold 7 people who were credited under two spellings onto the
spelling PLDB's creators/ directory already uses.
- John George Kemeny -> John G. Kemeny
- Daniel Weinreb -> Dan Weinreb
- Dave Moon -> David A. Moon
- Mary Fernandez -> Mary Fernández
- Leon Bottou -> Léon Bottou
- Yann Le Cun -> Yann LeCun
- John Cowan -> John W. Cowan
* Deploy upstream release artifacts to production after successful builds
* Align deployment health checks and configuration with production HTTPS
* Adds Tint, a statically typed UI language (#656)
* Adds Tint, a statically typed UI language
* Update Tint latestVersion to 0.3.0
* Document consolidation validation and runtime handover
* Record agreed squash merge and history preservation
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Liam OBrien <celtic-coder@users.noreply.github.com>
Co-authored-by: root <root@DESKTOP-DL44R7B.localdomain>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Michael R. Crusoe <1330696+mr-c@users.noreply.github.com>
Co-authored-by: Breck Yunits <breck7@gmail.com>
Co-authored-by: Hesara Perera <hesarap3@gmail.com>
Co-authored-by: 12_Parsec <134395522+Hacker-lot@users.noreply.github.com>
Co-authored-by: cl4cnam <40176886+cl4cnam@users.noreply.github.com>
Co-authored-by: Zebulun Arendsee <trepanger@proton.me>
Co-authored-by: octalide <ereynolds@briar.systems>
Co-authored-by: IDDQD <40695473+notlibrary@users.noreply.github.com>
Co-authored-by: Alvaro Franco Martins <alvarought@gmail.com>
Co-authored-by: Mark <114660522+hawerz@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds
concepts/mach.scrollfor Mach, a self-hosted systems language. The compiler, code generators and linker are written in Mach and have no external dependencies.The example builds and runs with mach 5.10, and every feature flag is checked against the language reference. This comes from the language's author.