lumbda/asm
russell@unturf.com 9e54c7aaf1 asm-gc portal v1: explicit version header + resume-side version check
GC-build portal files now start with ";; lumbda-portal v1\n". The
line is a Scheme comment the reader already skips, so loading a
v1 file via bi_load works unchanged. What's new is that
portal-resume actively validates the header before delegating to
bi_load:

  file starts with ";; lumbda-portal v1\n"   -> load normally
  file starts with ";;" but different text   -> return #f (rejected)
  file does not start with ";;" at all       -> load as legacy (back-compat)

The check reads the first 32 bytes of the file, compares the
first two bytes against ";;", and on match compares the full
20-byte v1 prefix. Closes the versioning-friction concern a SEW
reviewer raised after reading §7.4.1: we can now add a v2 format
with new syntax (complex numbers, records, whatever) without
older consumers silently parsing new files into garbage — they
will cleanly return #f.

Verified:
  v1 portal -> resume loads all bindings, returns #<void>
  v2 portal -> resume returns #f without evaluating any forms
  legacy portal (no ;; header) -> resume loads normally
  missing file -> resume returns #f

The deeper framing worth writing down: this is a migration format
for handoff across process / tier / machine, not an archive format.
If archival becomes a real use case it earns its own format with
proper schema evolution and a builtin-rename table. The v1 tag is
the minimum hook that lets v2 happen cleanly when someone needs it.

137 asm no-GC + 137 asm GC still pass. §6.6.4 HTTP cells still
green at 10K: GC + no-snapshot at 543 req/s, peak 1.1 MB, 972 KB
growth (one chunk, steady state).
2026-04-19 09:43:15 -04:00
..
Makefile asm: naive stop-the-world mark-sweep GC as a control group 2026-04-18 09:34:51 -04:00
test.sh asm: naive stop-the-world mark-sweep GC as a control group 2026-04-18 09:34:51 -04:00
uncommonlisp asm-gc Fix 2: S-expression portal for the GC build 2026-04-18 19:41:52 -04:00
uncommonlisp-gc asm-gc portal v1: explicit version header + resume-side version check 2026-04-19 09:43:15 -04:00
uncommonlisp-gc.o asm-gc portal v1: explicit version header + resume-side version check 2026-04-19 09:43:15 -04:00
uncommonlisp.o asm-gc Fix 2: S-expression portal for the GC build 2026-04-18 19:41:52 -04:00
uncommonlisp.s asm-gc portal v1: explicit version header + resume-side version check 2026-04-19 09:43:15 -04:00