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.