Date: October 27, 2026
Dear All,
We
are happy to announce a new edition of the Dogelog Player:
- Heap Pressure GC:
The Prolog system got a rework of the garbage collection
scheduling. We now use the metronome minor and major phases,
together with new emergency major phases. The emergency
is driven by statistics(user) which now extends to all target
platforms JavaScript, Python and Java, as well as a new
statistics(maxmem) which can be configured from the outside.
- Term Portraying:
To be able to show attributed variables more comfortably, which
are still realized as plain '$ATTR'/2 compounds with cyclic
terms, we introduced a portray mechanism. While many Prolog
systems define a portray/1 hook for write_term/2, with the
disadvantage of an output stream side effect, we introduced
a term_portraying/2 protocol, similar to term_expansion/2.
- Enhanced Coroutining:
Predicates dif/2 and when/2 were introduced. Calling deref/2 or
unify/2 is currently still required. unify/2 replaces the old
bind/2 for var-term only unfication, and provides both var-term
and var-var unification. The OpenTrees attributed variable state,
inspired by Nievergelt & Reingolds BB-Trees (1972) is speedy
and GC friendly, leaves many other Prolog systems behind.
Have Fun!