Projects / Spw Workbench
Spw Workbench
Spw is a small notation I write ideas in. The workbench is where it is kept working: a parser, a runtime, a language server, a command line, and extensions for VS Code, IntelliJ and Neovim. This site mounts it at .spw/_workbench and reads its own .spw files through it.
Spw is brace-first: operators carry what a thing does, containers carry its shape — <channel>, (group), [selection], {scope}. Four packages hold it: spw-seed lexes and parses, spw-runtime runs, spw-lsp answers the editor, and spw-cli gives 40 commands, from census and lint to fingerprint and resolve.
Type Spw into the literal parser and watch it come back as tokens and structure, or load the next-version specimens. The source is public on GitHub.
The workbench is an organelle, not a center: this site owns .spw/, the workbench owns .spw/_workbench, and either can be upgraded or removed without making the other illegible. The site pins it at 3eaab63, dated 2026-09-22.
Time spent
- first commit
- 2026-01-08
- last commit
- 2026-09-22
- commits
- 506
- active days
- 69
- busiest month
- February 2026, 146 commits
- longest streak
- 11 days
Read off the repository's history on 2026-09-29. An active day is a date with at least one commit.
What came before
This is not the first Spw parser. spw-client (2020) was an interface for an early Spw; ts-language built grammars; spw-editor was a text editor for the language; spw-js (2021–2024) held the grammar, parser and runtime; spw-parser (2022–2025) rewrote part of it from scratch; parser (2023–2024) put one in the browser. The workbench gathers what those tried into one mountable piece. The longer story is on the website field guide, and every repository is on the projects hub.
What using it taught
This site keeps a report addressed to the workbench: what it learned by using Spw, "measured on a mounted consumer, not theorised." Eight of its findings have been fixed upstream, one of them after a day spent superseded. The rest are still open, most with the probe that found them.
- One character can cost seconds. A single stray backtick took one file from 514 ms to 7,062 ms to parse. Restoring it brought the errors to zero.
- The whole corpus fits in a minute. A bundled parser read all 923 of the site's
.spwfiles, 5.94 MB, in 53.3 seconds: 839 clean, 84 with errors. - Paths can be checked. An integrity walk confirms that 5,166 path references across 373 surfaces resolve, in about 80 seconds.
- One command said something new. The report singles out
spw form --stdinas "the only command that said something countable-by-hand was not already known."