ANN: Dogelog Player 2.3.1 (Task Channels)

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!