microlisp 0.1.3
Third post-release iteration. Same cold reviewer as round 2, after
re-running on 0.1.2. Two new findings landed.
See CHANGELOG.md for the full inventory.
Added
MICROLISP_ERR_PRINT_DEPTH+microlisp_options::max_print_depth
(defaultMICROLISP_DEFAULT_MAX_PRINT_DEPTH = 1024). The v0.1.x
printer walks pair-car chains recursively; deeply-nested but
finite output (e.g. an accumulator chain(nest n acc) -> (nest (- n 1) (list acc))of depth 200 000) used to exhaust the C
stack and SEGFAULT even though evaluation finished cleanly. The
printer now bails with a controlled error once the cap is
reached. v0.2 will replace the recursive walker with an
iterative one and lift the limit.
Fixed
- Deeply-nested-list output no longer crashes the interpreter.
ASan-confirmed clean; regression test for the 200k-deep case
added.
Changed
SECURITY.mdupdated to reflect thatfuzz_evalruns in CI
(which it has since v0.1.1). The text now correctly describes
both fuzz harnesses and the shell wrapper that maps libFuzzer
OOM / timeout to non-failures for the Turing-complete
fuzz_evaljob.
Source tarball
A deterministic tarball is attached: `microlisp-0.1.3.tar.gz`
plus SHA-256 checksum.
```sh
sha256sum -c microlisp-0.1.3.tar.gz.sha256
tar xzf microlisp-0.1.3.tar.gz
cd microlisp-0.1.3
cmake --preset release
cmake --build --preset release
ctest --test-dir build/release --output-on-failure
```