Skip to content

microlisp 0.1.3

Choose a tag to compare

@jkindrix jkindrix released this 17 May 02:28
· 3 commits to main since this release

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
    (default MICROLISP_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.md updated to reflect that fuzz_eval runs 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_eval job.

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
```