lumbda/tests
russell@unturf.com 99b0622520 asm: values + call-with-values + #(...) reader + exit + vector equal?
Closes the remaining asm-side gaps from ticket 0005's follow-up
discussion. Every test in tests/cl-compat.lsp and tests/ursa.lsp
now runs unmodified on default asm (Scheme port) and asm-full (full
CL path) — no more commented-out tests or shim syntax.

Landed (all in default asm — useful beyond cl-compat):

  * (values . xs) / (call-with-values producer consumer). values
    packs a tagged pair (mval_marker . xs) when multiple; a lone arg
    passes through unchanged so legacy single-value code is
    undisturbed. call-with-values invokes the producer, destructures
    the multi-value packet if present, applies consumer positionally.
    The marker is a gensymed symbol interned once at init, so no
    user-constructed pair can masquerade as a multi-value packet.

  * (exit [code]) builtin. Default code is 0 when called with no
    args. Passes through to the SYS_EXIT syscall.

  * #(...) vector literal in the reader. .sr_hash now dispatches on
    '(' as a vector literal alongside 't' and 'f'. list_to_vector_
    reader is a standalone helper callable from the reader (separate
    from bi_listtovec which uses the GETARG builtin convention).
    Matches R7RS vector literal syntax. Existing vector builtins
    already handled construction; this just teaches the reader.

  * deep_equal extended to vectors. equal? now descends into vectors
    (length + elementwise recursive compare), matching R7RS.
    Previously only strings and pairs were handled; vectors fell
    through to shallow pointer compare which only matched identical
    heap objects.

Test file reverts (picking up the new capabilities):

  * tests/cl-compat.lsp — multiple-value-bind test restored
    (previously commented out because asm lacked values /
    call-with-values).
  * tests/ursa-scheme.lsp — #(1 0 1 0 1 0) literal restored
    (previously worked around with (vector->list (digits ...)));
    (exit 1) failure trailer restored (previously removed because
    asm had no exit builtin).
  * tests/ursa.lsp — same digits literal restoration.

Verified:
  * asm regression: 158/158.
  * asm-full regression: 158/158.
  * Zoë-favorites across Python + C + asm + asm-full: all suites
    green with native reader syntax and multi-value tests.
  * make test-all stays green.
2026-04-24 12:38:47 -04:00
..
bench-3way.sh rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
bench-gc-adaptive.sh rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
bench-gc-arena.sh rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
bench-gc-http.sh rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
bench-gc-memory.sh rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
bench-hashset.sh rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
bench-lumbda-www.sh lumbda-www: asm-gc static file server for lumbda.com + caddy race 2026-04-19 12:12:59 -04:00
bench-proof.sh rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
bench-www-race.sh lumbda-www: sendfile(2) primitive + adaptive preload — matches caddy throughput at 9x less RSS 2026-04-19 12:41:40 -04:00
cl-compat.lsp asm: values + call-with-values + #(...) reader + exit + vector equal? 2026-04-24 12:38:47 -04:00
functional.lsp portal-rng: add (random-seed-from-os!) across all three tiers 2026-04-20 15:50:26 -04:00
portal-benchmark.sh rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
portal-cross-load.lsp asm/c/py: add (load), ports, write-file/file->string — full cross-impl parity 2026-04-16 16:37:40 -04:00
portal-cross-save.lsp asm/c/py: add (load), ports, write-file/file->string — full cross-impl parity 2026-04-16 16:37:40 -04:00
portal-cross-test.sh portal-rng: asm xoshiro256** + cross-impl tests + default seed=0 2026-04-20 11:11:47 -04:00
portal-exchange.lsp rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
portal-formats.lsp rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
portal-rng-cross-test.sh portal-rng: 9-cell cross-impl stream matches independent Python baseline 2026-04-23 20:19:16 -04:00
portal-rng-load.lsp portal-rng: asm xoshiro256** + cross-impl tests + default seed=0 2026-04-20 11:11:47 -04:00
portal-rng-save.lsp portal-rng: asm xoshiro256** + cross-impl tests + default seed=0 2026-04-20 11:11:47 -04:00
rpc-chain-bench.sh rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
ursa-scheme.lsp asm: values + call-with-values + #(...) reader + exit + vector equal? 2026-04-24 12:38:47 -04:00
ursa.lsp asm: values + call-with-values + #(...) reader + exit + vector equal? 2026-04-24 12:38:47 -04:00
web-benchmark.sh rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
zoe-favorites-test.sh zoe-favorites-test: cover all four tiers (Python + C + asm + asm-full) 2026-04-24 12:27:51 -04:00