Skip to content

hash_consing 0.3.0 - #6

Merged
Atry merged 1 commit into
mainfrom
release-0.3.0
Oct 1, 2026
Merged

Atry merged 1 commit into
mainfrom
release-0.3.0

Conversation

@Atry

@Atry Atry commented Oct 1, 2026

Copy link
Copy Markdown
Owner

Release 0.3.0. Merging publishes it: CI tags V0.3.0 and registers the pack.

Changes since 0.2.2

  • The store is a fact of the process instead of two global variables of the loading thread, so threads and engines intern into it with nothing to install. New store_property/1 and a flag hash_consing_store_limit.
  • A per-thread growth budget: store_growth_bounded/1 and the flag hash_consing_growth_budget, which new threads inherit. A thread past its budget raises.
  • Layer positions: rewritten/2 with the option layer_arguments([Skeleton, ...]). It lets a file that opts in call a predicate that hands out or takes the plain layer of a listed constructor. The first argument of represented/2 is a layer position built in.
  • Cheaper unread occurrences: a body occurrence over variables that occur once in the clause is matched by its Id pattern alone, without reading the store. is_id/1 reads the handle directly.
  • The README documents that an interned term is a value, not a cell.

Incompatible changes

These are listed in the README section "Incompatible changes in 0.3.0":

  • code that read hash_consing_store or hash_consing_spellings drops those reads;
  • template lists handed to internalized/3 or declared/1 are kept as written;
  • the first argument of represented/2 is a plain layer.

Tests

86 plunit tests pass at --stack-limit=32m --table-space=32m.

🤖 Generated with Claude Code

@Atry
Atry merged commit 7a627b7 into main Oct 1, 2026
3 checks passed
@Atry
Atry deleted the release-0.3.0 branch October 1, 2026 08:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant