Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #124408

Gap Buffers for Dogelog Player (Re: Jaffar's Unification in Dogelog Player)

Path csiph.com!weretis.net!feeder8.news.weretis.net!reader5.news.weretis.net!news.solani.org!.POSTED!not-for-mail
From Mild Shock <janburse@fastmail.fm>
Newsgroups comp.lang.javascript
Subject Gap Buffers for Dogelog Player (Re: Jaffar's Unification in Dogelog Player)
Date Thu, 2 Oct 2025 14:09:43 +0200
Message-ID <10blq27$dhod$1@solani.org> (permalink)
References <10877t8$cm50$3@solani.org> <10auacq$qjhg$2@solani.org>
MIME-Version 1.0
Content-Type text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding 8bit
Injection-Date Thu, 2 Oct 2025 12:09:43 -0000 (UTC)
Injection-Info solani.org; logging-data="444173"; 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:OnMnHymcaZ+1sF5ZgLWHIs5uYHs=
In-Reply-To <10auacq$qjhg$2@solani.org>
X-User-ID eJwFwQkBwDAIA0BL7SBQ5PDFv4TdQexauxpMQbA/vNMqCZ9YN6+0He7NyvLAKPXhKaWOe1PVJWIWmE4e/mTyFj8=
Xref csiph.com comp.lang.javascript:124408

Show key headers only | View raw


Dogelog Player is a Prolog system for the
JavaScript, Python and Java platform. We
recently ventured into cyclic terms, re-
discovering Jaffar’s Unification for
binary operations such as (==)/2, (=)/2,
etc.. . Here we talk about unary operations
such as term_variables/2, ground/2, etc..

While we could already adopt a Peter Deutsch
algorithm for the Dogelog Player garbage
collection, freeing us from native stack
constraints. For performance reasons of unary
operations such as term_variables/2, ground/2,
etc.. gap buffers known from Emacs showed up.

See also:

Gap Buffers for Dogelog Player
https://medium.com/2989/bf3bc861ae04

Mild Shock schrieb:
> 
> We are currently in our third iteration of
> unification for rational trees. What first
> begun as a separate routine inside library(math),
> has now recently become a novel take on the
> host language routine unify() inside the
> Dogelog Player Prolog system.
> 
> We report how we replaced the union find map
> data structure inside unify() by some Prolog
> compound pointer swizzling as suggested by Jaxon
> Jaffar in 1984, arriving at a more competetive
> rational tree unification realization.
> 
> Jaxon Jaffar (1984) already proposed Hydra test
> cases. They take very less memory but are very
> large when written. We conducted according tests
> with Dogelog Player and Scryer Prolog. For
> N = 16'384, 65'536, 261'144 the Rust Prolog
> 
> has a minor advantage over the JavaScript Prolog,
> but interestingly losing it for N = 1'048'576.
> 
> See also:
> 
> Jaffar's Unification in Dogelog Player
> https://qiita.com/j4n_bur53/items/b0b754f02d88680d3249
> 
> Mild Shock schrieb:
>> 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
> 

Back to comp.lang.javascript | Previous | NextPrevious in thread | Find similar


Thread

ANN: Dogelog Player 1.3.6 (Canonical Compare) Mild Shock <janburse@fastmail.fm> - 2025-08-21 15:45 +0200
  Jaffar's Unification in Dogelog Player (Re: ANN: Dogelog Player 1.3.6 (Canonical Compare)) Mild Shock <janburse@fastmail.fm> - 2025-09-23 16:21 +0200
    Gap Buffers for Dogelog Player (Re: Jaffar's Unification in Dogelog Player) Mild Shock <janburse@fastmail.fm> - 2025-10-02 14:09 +0200

csiph-web