Date: September 17, 2026
Dear All,
We
are happy to announce a new edition of the Dogelog Player:
- Enhanced catch/3:
We noticed that catch/3 causes a friction in '$YIELD'/1. So
we redesigned its implementation by refraining from using
the host programming language stack. The engine now offers an
exception handler stack, and the Prolog interpreter trampolin
unwinds these exception handlers upon a Prolog or host error.
- New call_cleanup/3:
The new predicate call_cleanup/3 supplants the old predicate
once_cleanup/3. Like catch/3 it now features an implementation
that refrains from using the host programming language stack.
Its implementation makes use of a rogue '$CUT'/1 which is
realized by choice point scanning and continuation manipulation.
- Task Channels:
To lower the footprint of the core there are new libraries
library(timer) and library(tasks). The later library offers
a new predicate task_join/1 which is abortable. Further the
library offers predicates chan/1, recv/2 and send/2 to deal
with channels that live in the cooperative multitasking realm.
Have Fun!