Skip to content

v0.7.0

Choose a tag to compare

@takeokunn takeokunn released this 24 Jul 09:19
v0.7.0
ed657d7

Highlights

Added

  • SLG tabling engine (table-variant.lisp, tabling.lisp): variant-check keys, per-query table sessions, answer tables, and fixpoint iteration, threaded through the proof-state continuation so builtin-dispatched goals inherit the active tabling context
  • Benchmarks harness (benchmarks/): in-process micro-benchmarks and a cross-engine comparison script against SWI-Prolog, Trealla, and Scryer Prolog on a shared, checksum-verified workload
  • CI matrix covering x86_64-linux and aarch64-linux

Correctness / ISO conformance

  • get_code/peek_code track end-of-stream identically to get_char/peek_char per ISO 8.11.3/8.11.4; stream alias validation shared across IO builtins
  • Goal-dispatch and DCG expansion hardened; finite-domain constraint handling refined

Performance

  • Environment indexing in unification uses a bounded overlay over an immutable base table instead of a full rehash on every binding, avoiding an O(n) rebuild per variable binding

Refactor

  • Parser, term/atom builtins, and source-loader split into focused modules (lexer/grammar layers, term-inspect/compare/construct, atom-ops/text-conversion/atom-number-conversion, source-io/directives/registry/rollback) with no behavior change
  • Regression suite reorganized into thematic files with a shared query helper lifted into tests/support/core.lisp

Documentation

  • Architecture, API reference, builtin goals, querying, semantics, development, and troubleshooting guides synced with the module split and the new tabling and benchmarking surfaces

Full changelog: https://github.com/nerima-lisp/cl-prolog/blob/main/CHANGELOG.md