From f7a9041eb095cb03a8b7e8e40ed0dd6dc0c8b551 Mon Sep 17 00:00:00 2001 From: Matt Parrett Date: Wed, 22 Jul 2026 09:25:12 -0700 Subject: [PATCH 1/2] =?UTF-8?q?docs:=20credit=20Norman=20Nunley=20?= =?UTF-8?q?=E2=80=94=20correct=20lineage=20across=20tour,=20logs,=20and=20?= =?UTF-8?q?README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per feedback from the project's creator: this FMPL descends from an EBNF he extracted from the original FMPL sources in the late 1990s, and its syntax is only lightly similar to the 1992 original. The docs previously framed the project as a faithful revival of "FMPL, created in 1992 by Jon Blow" with no mention of Nunley. - Tour/landing deks: lead with Nunley; "grown from the grammar of" a 1992 MUD-server language, not "revived" - Tour §1: new credit paragraph — EBNF provenance, lightly-similar caveat, cool++/CoolMUD lineage (Stephen White -> MOO -> LambdaMOO) - Rehab log: names Nunley as the one who set up and steered "ralph"; field log: names him as the reviewer behind the IndexedDB direction - README/DEV/project.md: lineage rewritten, late-90s extraction added to the timeline - fmpl.ebnf: provenance header Co-Authored-By: Claude Fable 5 --- DEV.md | 12 ++++++------ README.md | 19 ++++++++++++++----- docs/fmpl-field-log.html | 2 +- docs/fmpl-rehab-log.html | 4 ++-- docs/fmpl-tour.html | 9 +++++---- docs/index.html | 4 ++-- fmpl.ebnf | 9 +++++++++ project.md | 5 +++-- 8 files changed, 42 insertions(+), 22 deletions(-) diff --git a/DEV.md b/DEV.md index edf3047..e76e345 100644 --- a/DEV.md +++ b/DEV.md @@ -15,11 +15,11 @@ capabilities, and durable state: - **Fjall-backed persistence** for live image and streaming overflow - **Pattern matching via `@` operator** for parsing and data transformation -**Historical note**: FMPL ("of Accardi") was created in 1992 by Jon Blow at UC -Berkeley's Experimental Computing Facility — a MUD server language in the -LambdaMOO / ColdMUD tradition. This repository is a Rust revival adding modern -streaming and agent capabilities. See [`README.md`](README.md) and -[`project.md`](project.md). +**Historical note**: this FMPL is Norman Nunley's descendant of the original +FMPL ("of Accardi", UC Berkeley XCF, c. 1992, interpreter by Jon Blow) — seeded +from an EBNF grammar Nunley extracted from the original sources in the late +1990s, with new syntax and semantics beyond it. See [`README.md`](README.md) +and [`project.md`](project.md). ## Workspace layout @@ -70,7 +70,7 @@ comments): - `fmpl-core/src/parser_epoch.rs` — generator epoch; read its bump policy before changing codegen - `fmpl-core/src/error.rs` — Unified error types with `thiserror` - `fmpl-core/src/object.rs` — Prototype-based object system (spawn, facets) -- `fmpl.ebnf` — Language grammar (reference only, not used by the parser) +- `fmpl.ebnf` — Language grammar (reference only, not used by the parser; descends from Nunley's late-1990s extraction of the original FMPL grammar) ## Test organization diff --git a/README.md b/README.md index 7569d94..f45d5ec 100644 --- a/README.md +++ b/README.md @@ -17,11 +17,20 @@ or try the **[browser REPL](https://mparrett.github.io/fmpl/repl.html)** ## Lineage -FMPL ("of Accardi") was created in 1992 by Jon Blow at UC Berkeley's -Experimental Computing Facility — a MUD server language in the LambdaMOO / -ColdMUD tradition. This is a 2025-present revival as a Rust implementation, -combining that MUD heritage with modern streaming, first-class PEG grammars, and -capability security. See [`project.md`](project.md) for the full north star. +The original FMPL ("of Accardi") came out of UC Berkeley's Experimental +Computing Facility around 1992 — a MUD server language in the LambdaMOO / +ColdMUD tradition, with an interpreter written by Jon Blow. + +This FMPL was created by [Norman Nunley, Jr.](https://github.com/nnunley) and +is a descendant of the original, not a restoration of it. Nunley extracted an +EBNF grammar from the original FMPL sources in the late 1990s; decades later +that grammar (see [`fmpl.ebnf`](fmpl.ebnf)) seeded this project. The syntax is +only lightly similar to the 1992 language, and everything beyond the grammar — +the streaming model, first-class PEG grammars, the indexed-RPN VM, capability +security, the metacircular bootstrap — is new design. The MUD lineage is +first-hand: Nunley also co-wrote cool++, a C++ rewrite of Stephen White's +CoolMUD (White created MOO, from which LambdaMOO was forked). See +[`project.md`](project.md) for the full north star. ## A taste diff --git a/docs/fmpl-field-log.html b/docs/fmpl-field-log.html index 2290795..ec2c267 100644 --- a/docs/fmpl-field-log.html +++ b/docs/fmpl-field-log.html @@ -398,7 +398,7 @@

Closing the Loop, in three moves

§3

The VM in a browser tab

Issue #3’s opening assumption — that wasm would need a no_std campaign — died in the first hour, pleasantly. wasm32-unknown-unknown ships full std (threads and files trap at runtime rather than failing to compile), so the real blockers were exactly four native-only dependencies: curl, fjall, stacker, and tokio’s multi-threaded runtime. Target- and feature-gating those got fmpl-core compiling for wasm32 with the native build untouched.

-

The gating surfaced a wrong assumption worth recording: fjall was not all behind the fjall-persistence feature flag. Stream overflow spill, parse-state save, and the persistence envelope are live in default native builds — so the wasm exclusion had to be cfg(not(target_arch = "wasm32")) seams at each touchpoint, not a feature toggle. Those seams are now the documented slot-in points if a persistent browser image (IndexedDB-backed) ever becomes a goal — a direction the upstream author raised in review.

+

The gating surfaced a wrong assumption worth recording: fjall was not all behind the fjall-persistence feature flag. Stream overflow spill, parse-state save, and the persistence envelope are live in default native builds — so the wasm exclusion had to be cfg(not(target_arch = "wasm32")) seams at each touchpoint, not a feature toggle. Those seams are now the documented slot-in points if a persistent browser image (IndexedDB-backed) ever becomes a goal — a direction the project’s creator, Norman Nunley, raised in review.

The deploy fork point: commit the built .wasm to the repo (simple, binary-in-git) or switch GitHub Pages to Actions-based deploys that rebuild it from source on every push. We chose Actions — the binary never lands in git, and the live REPL can’t drift from main. That choice quietly paid off in §4: when the parser changed, the browser REPL picked it up on the next push with zero extra work.

diff --git a/docs/fmpl-rehab-log.html b/docs/fmpl-rehab-log.html index 7f6db96..e424418 100644 --- a/docs/fmpl-rehab-log.html +++ b/docs/fmpl-rehab-log.html @@ -362,7 +362,7 @@

The Revival, Revived, in four tiers

$ just build && just test-- after four tiers and a publish pass, 2026-07-21: 1,390 passed / 0 failed / 185 ignored — each with a written reason -

This log is the prequel to Closing the Loop and the making-of behind the engineering tour. FMPL itself is a Rust revival of a 1992 MUD language; this is the log of reviving the revival.

+

This log is the prequel to Closing the Loop and the making-of behind the engineering tour. FMPL itself is Norman Nunley’s Rust-built descendant of a 1992 MUD language; this is the log of reviving his revival.