Skip to content

v1.4.3

Latest

Choose a tag to compare

@github-actions github-actions released this 05 Aug 08:41
· 4 commits to main since this release
v1.4.3
7581f72

Added

  • cl-prolog/callgraph: generic call-graph analysis, extracted from
    cl-cc's prolog-tools with zero cl-cc dependency. Provides
    reachability, dead-code and mutually-recursive-pair detection, FD-constraint
    graph coloring, and a small textual edge notation ("main -> helper") built
    on a DCG grammar. build-call-graph-from-edges takes a plain list of names
    and (caller . callee) conses, so any caller can feed it without walking a
    specific AST.
  • Nix flake: aarch64-darwin is declared again alongside x86_64-linux.

Changed

  • Tabling is now scoped to rulebase revisions. One table session (plus a
    new prolog-succeeds-p success cache) is shared per revision instead of
    rebuilt on every query, and is invalidated on the next assert/retract/
    etc. retract/retractall/abolish also compact a rulebase's dead entries
    once their backlog crosses a threshold and no top-level engine call is
    active on the stack, bounding growth under hot retract-and-reassert
    workloads. Semi-naive delta-answer evaluation was added for linear
    left-recursive tabled predicates.
  • CHANGELOG.md has been removed from the repository; the GitHub Release
    description is now the only changelog.

Removed

  • BREAKING: cl-prolog/callgraph:call-graph-p is no longer exported. It
    was the defstruct-generated predicate for call-graph, unused anywhere in
    this codebase; the struct type call-graph and its accessors
    (call-graph-rulebase, call-graph-defined, call-graph-entry-points) are
    unaffected. Before: (cl-prolog/callgraph:call-graph-p x). After:
    (typep x 'cl-prolog/callgraph:call-graph).

Fixed

  • First-argument predicate indexing now hashes atoms by their text (equal)
    instead of by the raw interned symbol (eq), matching this project's atom
    text/symbol bijection invariant. This closes the door on a clause silently
    missing its index bucket if an atom's symbol identity ever diverged from
    another atom sharing the same text.