ANN: Dogelog Player 1.3.6 (Canonical Compare)

Dear All,

We are happy to announce a new edition of the Dogelog Player:

- Frozen Terms:
We extended our garbage collector marking bits to Prolog compounds. Unlike Prolog variables, where setting all bits is used to indicate change set membership, we use it to indicate frozen objects. This makes the garbage collector and certain built-ins such as copy_term/2 etc.. aware of program sharing (PS).

- Marking Algorithms:
We now provide native implementations of (==)/2, copy_term/2, etc.. with sharing and cycle detection. We didn't deploy additional marking bits and/or pointers inside the Prolog terms, instead used additional datastructures, leaving the Prolog terms untouched. The compare/3 implementation is not a total order.

- Canonical Compare:
The library(lists) has experimental predicates term_decompose/3 and term_canonical/2, still written in 100% Prolog. We showcase their usage in library(sequence) and library(aggregate). The end-user gets by default a structure compare, but can also have a canonical compare, both being total and natural orders.

Have Fun!