Benchmark exercises full save×load matrix across Python/C/asm plus the mismatch cases (wrong format, truncated input, missing file, corrupt header). Cases that used to segfault or report wrong paths now degrade cleanly. asm (uncommonlisp.s): - (define var) with no value now binds to VOID instead of segfault - portal-resume checks sys_read returned full 48-byte header; sanity- checks heap_size and heap_base before committing r14/r15 restore. Corrupt/truncated portals now return #f cleanly. py (uncommonlisp.py): - file-not-found error inside a nested (load) now reports the actual missing path (via FileNotFoundError.filename) rather than the outer script path. - _load wraps UnicodeDecodeError (binary file loaded as text) into a LispErr with the path; no more raw Python traceback. tests/portal-benchmark.sh: 50-iter benchmark, 4 parts (save / load / cross-process / mismatch-classification). Representative numbers (this laptop, 2026-04-16): setup+save: Python 126ms, C 3ms, asm 0.9ms cross-proc: Py→Py 260ms, C→C 6ms, asm→asm 1.5ms All three test suites still pass: 571 py unit, 131 asm, 189 shared.
43 KiB
Executable file
43 KiB
Executable file