Path: csiph.com!news.swapon.de!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: Dogelog Player: Heap Pressure for Garbage Collection (Was: The implementation of dif/2 with Open Trees) Date: Fri, 16 Oct 2026 00:38:39 +0200 Message-ID: <11arklf$1gf4f$2@solani.org> References: <119dhjt$eoj6$3@solani.org> <11a2aam$tjgk$2@solani.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Thu, 15 Oct 2026 22:38:39 -0000 (UTC) Injection-Info: solani.org; logging-data="1588367"; mail-complaints-to="abuse@news.solani.org" User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Firefox/140.0 SeaMonkey/2.53.24 Cancel-Lock: sha1:dnsEOn7/nWw3lBCce5lnR8b9Lrg= X-User-ID: eJwNycEBwCAIA8CVQAjCOCpk/xHa+x4sNN72QDgI8uaDzelhALe753mn1mwMqapuJTdL1vknlwmtdW0RT5Z8hO4VxQ== In-Reply-To: <11a2aam$tjgk$2@solani.org> Xref: csiph.com comp.lang.javascript:124488 Hi, Dogelog Player is a Prolog system for the JavaScript, Python and Java targets. It is mostly written in 100% Prolog. Our garbage collector already used GC frequency autotuning via user_time. We added a GC generation choice autotuning feature using user_memory. The heuristic is to use 75% of max_memory as a limit for user_memory to trigger an emergency major mark & sweep. The Dogelog Player can now run loop/1 indefinitely. Less welcome is the performance drop from 30 to 10 MLips. SWI-Prolog does not show the same degradation. Bye See also: Dogelog Player: Heap Pressure for Garbage Collection https://medium.com/2989/5791ef8834d5 Mild Shock schrieb: > Hi, > > In the following we show that P(purity) has > currently almost zero probability, i.e that a > Prolog system will provide the first pillar of > purity, i.e. the dif/2 constraint. Even if a > Prolog system can deal with a large number of > dif/2 constraints, it might still fail > the reclamation test. > > Testing Ulrich Neumerkels maplist(dif) problem > with a time limit of 1000 ms, we found Trealla > Prolog, EyeProlog and Scryer Prolog only > approached N=1000. While SWI-Prolog and Dogelog > Player climbed above N=1000000. Further a garbage > collection test was only survived by > Dogelog Player. > > Bye > > See also: > > The implementation of dif/2 with Open Trees > https://medium.com/2989/6e2914596a0f > > Mild Shock schrieb: >> Dear All, >> >> We are happy to announce a new >> edition of the Dogelog Player: >> >> - Ehanced common: >> Triggered by SWI-Prologs new built-ins, >> we did a revision of library(cyclic) now >> exposing term_minimal/2 and term_decompose/2. >> Turns out we could also speed-up distinct/1 >> and aggregate/3, by using term_minimal/2 >> alone in the deduplication phase. And >> then for aggregate/3 deploying a Schwartzian >> Transform with term_decompose/2 in >> the sorting phase. >> >> - Enhanced top-level: >> We also did a revision of the top-level. >> For example answer substitutions are now >> shown more compact, so that a query X = f(A,Y), >> Y = f(B,X) can keep its shape. Further >> the debugger now uses the visibility rules >> of listing/[0,1]. Even overriding the >> provenance of goals arguments and only >> prompting in case they branch back >> into user clauses. >> >> - New undo/1: >> Realizing the analogue to our recent rogue >> '$CUT'/1 for cleanup goals, this time not >> scanning the choice points but the variable >> trail to find undo goals, we could arrive >> at a undo/1. Because of atomicity concerns, >> its not directly exposed, and subsequently >> the user facing API has now new set_arg/3 >> and setup_undo/2 only. >> >> Have Fun! >> >> Jan Burse, September 28, 2026, https://www.herbrand.ai/ >