Path: csiph.com!weretis.net!feeder8.news.weretis.net!reader5.news.weretis.net!news.solani.org!.POSTED!not-for-mail From: Mild Shock Newsgroups: comp.lang.javascript Subject: ANN: Dogelog Player 1.3.6 (Canonical Compare) Date: Thu, 21 Aug 2025 15:45:16 +0200 Message-ID: <10877t8$cm50$3@solani.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Thu, 21 Aug 2025 13:45:12 -0000 (UTC) Injection-Info: solani.org; logging-data="415904"; mail-complaints-to="abuse@news.solani.org" User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0 SeaMonkey/2.53.21 Cancel-Lock: sha1:oJ1xxlCZC7+3TXNrt83zJm+DizM= X-Mozilla-News-Host: news://news.solani.org:119 X-User-ID: eJwFwQkBACAIA8BKomxIHOTpH8E7HArTlKBiMEbvqdlp2Jt1Fb7GosNhWS9Q2cnFkErcE2zjApr1KFfwAWjFFdg= Xref: csiph.com comp.lang.javascript:124406 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! Jan Burse, http://www.herbrand.ai/ , 21.08.2025