{
  "title": "crier \u2014 This Week in Modus",
  "description": "A weekly dispatch on modus-lisp: a personal computer written from scratch in Common Lisp.",
  "home": "https://modus-lisp.github.io/",
  "feed": "https://modus-lisp.github.io/feed.xml",
  "generated_from": "the site's own HTML, by bin/mirror",
  "count": 25,
  "issues": [
    {
      "number": 1,
      "date": "2025-03-15",
      "span": "8\u201314 March 2025",
      "title": "A quick hack, on Movitz",
      "summary": "The first commit is a prototype: 29,000 lines of Modus on 55,000 lines of somebody else's bare-metal Lisp, booting under QEMU into a REPL with TLS and SSH. It was built in silence, shelved for eleven months, and its date hides a fortnight of work that happened in 2026. 1 commit.",
      "commits": 1,
      "repos": 1,
      "url": "https://modus-lisp.github.io/issues/2025-03-15/",
      "markdown": "https://modus-lisp.github.io/issues/2025-03-15/index.md"
    },
    {
      "number": 2,
      "date": "2026-02-28",
      "span": "21\u201327 February 2026",
      "title": "Nine architectures in four commits",
      "summary": "Work resumes after eleven months, and not where it stopped. A 64-bit rewrite with actors and SMP, a kernel that recompiles itself from source it carries inside, and a portable bytecode ISA with nine backends. 4 commits.",
      "commits": 4,
      "repos": 1,
      "url": "https://modus-lisp.github.io/issues/2026-02-28/",
      "markdown": "https://modus-lisp.github.io/issues/2026-02-28/index.md"
    },
    {
      "number": 3,
      "date": "2026-03-07",
      "span": "28 February \u2013 6 March 2026",
      "title": "A Pi with no SD card",
      "summary": "Modus leaves the emulator: real Pi Zero 2 W silicon, booted over USB, reached by SSH across a USB Ethernet gadget it implements itself. The compiler compiles its own 759 functions. 3 commits.",
      "commits": 3,
      "repos": 1,
      "url": "https://modus-lisp.github.io/issues/2026-03-07/",
      "markdown": "https://modus-lisp.github.io/issues/2026-03-07/index.md"
    },
    {
      "number": 4,
      "date": "2026-03-14",
      "span": "7\u201313 March 2026",
      "title": "The Fixpoint of Theseus",
      "summary": "Five SHA-256 comparisons prove the compiler leaves no fingerprint of the machine that ran it: a 32-bit image builds a 64-bit one bit-identical to the 64-bit build. Then Movitz is deleted. 3 commits.",
      "commits": 3,
      "repos": 1,
      "url": "https://modus-lisp.github.io/issues/2026-03-14/",
      "markdown": "https://modus-lisp.github.io/issues/2026-03-14/index.md"
    },
    {
      "number": 5,
      "date": "2026-04-11",
      "span": "4\u201310 April 2026",
      "title": "Somebody else's tests",
      "summary": "Modus stops grading itself and wires up Paul Dietz's ANSI suite, symbols become real objects with identity, the compiler learns to emit Linux binaries, and three documented limitations turn out not to exist. 50 commits.",
      "commits": 50,
      "repos": 1,
      "url": "https://modus-lisp.github.io/issues/2026-04-11/",
      "markdown": "https://modus-lisp.github.io/issues/2026-04-11/index.md"
    },
    {
      "number": 6,
      "date": "2026-04-18",
      "span": "11\u201317 April 2026",
      "title": "Counting what actually ran",
      "summary": "A Common Lisp runtime built in layers, a copying collector in x64 assembly, a reported 99.994% on the ANSI suite \u2014 and then the discovery that 17,587 of those tests had never run. 107 commits.",
      "commits": 107,
      "repos": 1,
      "url": "https://modus-lisp.github.io/issues/2026-04-18/",
      "markdown": "https://modus-lisp.github.io/issues/2026-04-18/index.md"
    },
    {
      "number": 7,
      "date": "2026-04-25",
      "span": "18\u201324 April 2026",
      "title": "Lost: none",
      "summary": "The harness stops losing tests entirely, and the reason so many were crashing turns out to be that closures and symbols had the same shape \u2014 so calling one could call the other. 82 commits.",
      "commits": 82,
      "repos": 1,
      "url": "https://modus-lisp.github.io/issues/2026-04-25/",
      "markdown": "https://modus-lisp.github.io/issues/2026-04-25/index.md"
    },
    {
      "number": 8,
      "date": "2026-05-02",
      "span": "25 April \u2013 1 May 2026",
      "title": "A heuristic is a bug you haven't hit yet",
      "summary": "Tests that pass or fail depending on where the code sits in memory, a fuzzer built to catch them, and three type predicates that had never checked anything \u2014 they had been ruling things out. 159 commits.",
      "commits": 159,
      "repos": 1,
      "url": "https://modus-lisp.github.io/issues/2026-05-02/",
      "markdown": "https://modus-lisp.github.io/issues/2026-05-02/index.md"
    },
    {
      "number": 9,
      "date": "2026-05-09",
      "span": "2\u20138 May 2026",
      "title": "The bug was a docstring",
      "summary": "Two weeks of layout fragility root-caused to docstrings being compiled into function prologues \u2014 and the ANSI suite ported to bare metal, where there is no fork to isolate it with. 62 commits.",
      "commits": 62,
      "repos": 1,
      "url": "https://modus-lisp.github.io/issues/2026-05-09/",
      "markdown": "https://modus-lisp.github.io/issues/2026-05-09/index.md"
    },
    {
      "number": 10,
      "date": "2026-05-16",
      "span": "9\u201315 May 2026",
      "title": "Every wedge root-caused",
      "summary": "The bare-metal harness removes every one of its pre-stamped failure ranges by bisecting each wedge to its cause \u2014 1,602 passing to 5,529, and no band-aids left. 111 commits.",
      "commits": 111,
      "repos": 1,
      "url": "https://modus-lisp.github.io/issues/2026-05-16/",
      "markdown": "https://modus-lisp.github.io/issues/2026-05-16/index.md"
    },
    {
      "number": 11,
      "date": "2026-05-23",
      "span": "16\u201322 May 2026",
      "title": "An object system, and a number system",
      "summary": "CLOS stops being a set of stubs and becomes a real protocol, and the numeric tower gets IEEE floats, complex numbers and transcendentals computed as exact rationals. 87 commits.",
      "commits": 87,
      "repos": 1,
      "url": "https://modus-lisp.github.io/issues/2026-05-23/",
      "markdown": "https://modus-lisp.github.io/issues/2026-05-23/index.md"
    },
    {
      "number": 12,
      "date": "2026-05-30",
      "span": "23\u201329 May 2026",
      "title": "The suite, unmodified",
      "summary": "Enough runtime macro machinery to load the ANSI files as they are rather than as rewritten \u2014 and on AArch64, the discovery that NIL and the fixnum zero had been the same bit pattern. 111 commits.",
      "commits": 111,
      "repos": 1,
      "url": "https://modus-lisp.github.io/issues/2026-05-30/",
      "markdown": "https://modus-lisp.github.io/issues/2026-05-30/index.md"
    },
    {
      "number": 13,
      "date": "2026-06-06",
      "span": "30 May \u2013 5 June 2026",
      "title": "A Lisp that loads",
      "summary": "Modus becomes an image that reads Lisp rather than a compiler that emits a program. Symbols learn which package they belong to, integers lose their size limit, and the layout cascade stops reproducing. 173 commits.",
      "commits": 173,
      "repos": 1,
      "url": "https://modus-lisp.github.io/issues/2026-06-06/",
      "markdown": "https://modus-lisp.github.io/issues/2026-06-06/index.md"
    },
    {
      "number": 14,
      "date": "2026-06-13",
      "span": "6\u201312 June 2026",
      "title": "The frontier is a form number",
      "summary": "Modus starts loading real ASDF one form at a time and treats where it stops as the thing to improve, while five garbage-collector roots turn out never to have been scanned. 113 commits.",
      "commits": 113,
      "repos": 1,
      "url": "https://modus-lisp.github.io/issues/2026-06-13/",
      "markdown": "https://modus-lisp.github.io/issues/2026-06-13/index.md"
    },
    {
      "number": 15,
      "date": "2026-06-20",
      "span": "13\u201319 June 2026",
      "title": "Zero divergence",
      "summary": "A from-scratch Bitcoin consensus engine agrees exactly with Core's own compiled library on the taproot vectors, and Modus builds a collector that can let foreign code hold a pointer into the heap. 227 commits.",
      "commits": 227,
      "repos": 3,
      "url": "https://modus-lisp.github.io/issues/2026-06-20/",
      "markdown": "https://modus-lisp.github.io/issues/2026-06-20/index.md"
    },
    {
      "number": 16,
      "date": "2026-06-27",
      "span": "20\u201326 June 2026",
      "title": "A node, and something to keep it in",
      "summary": "cl-consensus becomes a whole Bitcoin node with a wallet, pagetree arrives and is its UTXO store nine hours later, and Modus rebuilds the numeric tower around real float types. 124 commits.",
      "commits": 124,
      "repos": 4,
      "url": "https://modus-lisp.github.io/issues/2026-06-27/",
      "markdown": "https://modus-lisp.github.io/issues/2026-06-27/index.md"
    },
    {
      "number": 17,
      "date": "2026-07-04",
      "span": "27 June \u2013 3 July 2026",
      "title": "Build the oracle first",
      "summary": "Ten repositories appear \u2014 a web engine that finishes at Acid3 100/100, a JavaScript engine at 88% of test262, a text rasterizer with hinting \u2014 and every one of them starts by building the thing that will grade it. 437 commits.",
      "commits": 437,
      "repos": 14,
      "url": "https://modus-lisp.github.io/issues/2026-07-04/",
      "markdown": "https://modus-lisp.github.io/issues/2026-07-04/index.md"
    },
    {
      "number": 18,
      "date": "2026-07-11",
      "span": "4\u201310 July 2026",
      "title": "Two things deleted",
      "summary": "Modus removes its tree-walking evaluator and keeps the bytecode one; cl-tor removes OpenSSL, five days after seal was born, and starts hosting an onion service. 233 commits.",
      "commits": 233,
      "repos": 11,
      "url": "https://modus-lisp.github.io/issues/2026-07-11/",
      "markdown": "https://modus-lisp.github.io/issues/2026-07-11/index.md"
    },
    {
      "number": 19,
      "date": "2026-07-18",
      "span": "11\u201317 July 2026",
      "title": "Ten repositories in seven days",
      "summary": "glass, cairn, conch, natrium, cram, cabinet, operandi and three more are created in one week \u2014 and immediately start depending on each other. 291 commits.",
      "commits": 291,
      "repos": 19,
      "url": "https://modus-lisp.github.io/issues/2026-07-18/",
      "markdown": "https://modus-lisp.github.io/issues/2026-07-18/index.md"
    },
    {
      "number": 20,
      "date": "2026-07-25",
      "span": "18\u201324 July 2026",
      "title": "Modus compiles Modus",
      "summary": "The SBCL-free self-hosting cycle closes, held up at the last by one uninitialised counter. weft lands 256 spec sections, a VNC drag goes from 18 fps to 76, and a Lisp desktop appears in a browser tab. 414 commits.",
      "commits": 414,
      "repos": 14,
      "url": "https://modus-lisp.github.io/issues/2026-07-25/",
      "markdown": "https://modus-lisp.github.io/issues/2026-07-25/index.md"
    },
    {
      "number": 21,
      "date": "2026-08-01",
      "span": "25\u201331 July 2026",
      "title": "629 bytes of desktop",
      "summary": "A VP8 encoder written from the RFC goes from its first entropy coder to Safari decoding a live Lisp desktop, in twenty-three hours. Also a PDF renderer, three audio decoders, and Acid3 at 100/100. 294 commits.",
      "commits": 294,
      "repos": 16,
      "url": "https://modus-lisp.github.io/issues/2026-08-01/",
      "markdown": "https://modus-lisp.github.io/issues/2026-08-01/index.md"
    },
    {
      "number": 22,
      "date": "2026-08-08",
      "span": "1\u20137 August 2026",
      "title": "Speech, both ways",
      "summary": "A text-to-speech engine, a speech recognizer, and a desktop that types what it hears into whichever window has focus. Underneath, the JIT stops falling back to the interpreter. 218 commits.",
      "commits": 218,
      "repos": 15,
      "url": "https://modus-lisp.github.io/issues/2026-08-08/",
      "markdown": "https://modus-lisp.github.io/issues/2026-08-08/index.md"
    },
    {
      "number": 23,
      "date": "2026-08-15",
      "span": "8\u201314 August 2026",
      "title": "Two packages, one variable",
      "summary": "Nine of Modus's name-keyed registries turn out to be blind to packages, one of them mis-dispatching in silence; the build starts checking itself; and alexandria finishes at 230/230. 273 commits.",
      "commits": 273,
      "repos": 13,
      "url": "https://modus-lisp.github.io/issues/2026-08-15/",
      "markdown": "https://modus-lisp.github.io/issues/2026-08-15/index.md"
    },
    {
      "number": 24,
      "date": "2026-08-22",
      "span": "15\u201321 August 2026",
      "title": "The stack learns to leave home",
      "summary": "kiln and glass-sdl appear, the CL stack runs a REPL on real Pi Zero silicon, one HTTP client replaces four, and half a dozen repos stop assuming whose home directory they are in. 136 commits.",
      "commits": 136,
      "repos": 23,
      "url": "https://modus-lisp.github.io/issues/2026-08-22/",
      "markdown": "https://modus-lisp.github.io/issues/2026-08-22/index.md"
    },
    {
      "number": 25,
      "date": "2026-08-29",
      "span": "22\u201329 August 2026",
      "title": "The Pi Zero answers the doorbell",
      "summary": "A real OpenSSH client logs in to bare-metal Modus on Pi Zero 2 W silicon, then downloads a library and runs it \u2014 and the desktop above it learns its own name and its own resolution. 97 commits.",
      "commits": 97,
      "repos": 7,
      "url": "https://modus-lisp.github.io/issues/2026-08-29/",
      "markdown": "https://modus-lisp.github.io/issues/2026-08-29/index.md"
    }
  ]
}
