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.python Subject: Goal Outlining for Dogelog Player (Re: Just-in-Time Indexing in Dogelog Player) Date: Thu, 9 Apr 2026 12:52:17 +0200 Message-ID: <10r80d0$f1q$3@solani.org> References: <10pk091$8ek8$4@solani.org> <10qhhoh$1057b$3@solani.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Thu, 9 Apr 2026 10:52:16 -0000 (UTC) Injection-Info: solani.org; logging-data="15418"; 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.23 Cancel-Lock: sha1:RBef93dcb51HSi+LmCZZUmuH9pE= X-User-ID: eJwFwYkBwEAEBMCWvItyyNF/CZlxBeMLg8P8/MKbUo/f2FPXusEW7Z5RylGuMqQj+ith5E7KDvvUU2kp/E5NFTo= In-Reply-To: <10qhhoh$1057b$3@solani.org> Xref: csiph.com comp.lang.python:197763 Hi, The handling of cyclic terms inside Dogelog Player is relatively young, it only arrived end of 2025, almost 4 years after the inception of the Prolog system. We found a leftover subsumes_term/2. Making it fit for cyclic terms triggered an interesting venture into negation as failure. We found a charming implementation, not extremly fast failure capable, but easy to bootstrap from built-ins such as term_variables/2, (=)/2 and (==)/2. To overcome some (\+)/1 performance limitation we introduced goal inlining and outline to the clause translation and untranslation. Bye See also: Goal Outlining for Dogelog Player https://medium.com/2989/f589172c7f8e Mild Shock schrieb: > Hi, > > Dogelog Player is a Prolog system for the > JavaScript, Python and Java target that borrows > much of its design from formerly Jekejeke Prolog. > While Dogelog Player shipped only with first > argument indexing for almost 4 years, we now added > multi-argument just-in-time indexing. > > For programs one sees fewer spurious choice > points. For the dynamic database, in queries > one sees a speed-up of almost a factor M, where > M is the size of the index map. For updates the > speed-up materializes less, due to the overhead > of our 100% Prolog written insert operations. > > Bye > > See also: > > Just-in-Time Indexing in Dogelog Player > https://medium.com/2989/69200b90ccec > > Mild Shock schrieb: >> Dear All, >> >> We are happy to announce a new edition >> of the Dogelog Player: >> >> - Enhanced core (0rNaN): >> Special values are numbers, but neither >> integer nor float. We introduced a further >> special value, namely 0rNaN which stands >> for not a number. Unlike the IEEE proposal, >> we didn't extend arithmetic comparisons such >> as max/3, (<)/2, etc... Only parsing/unparsing >> and foreign function interface (FFI) >> support was introduced. >> >> - Precomputed Hashes: >> Java programmers are familiar with the >> hashCode() contract and with the programming >> pattern of a cached hash. We went a step further >> and gave the already existing frozen compounds >> of Dogelog player an additional precomputed >> .hash field. With amazing speed-up for built-ins >> such as term_hash/2, (==)/2, etc.. >> >> - Assertion Sharing: >> Precomputed hashes shine when combined with >> NO-COPY mechanisms in the dynamic database, >> notoriously difficult for WAM machines but >> easy for Heap based Prolog systems such as >> Dogelog Player. So far we provided only >> program sharing (PS), this release also >> features assertion sharing (AS). >> >> Have Fun! >> >> Jan Burse, https://www.herbrand.ai/ , 20.03.2026 >