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)

From Mild Shock <janburse@fastmail.fm>
Newsgroups comp.lang.javascript
Subject Gap Buffers for Dogelog Player (Re: Jaffar's Unification in Dogelog Player)
Date 2025-10-02 14:09 +0200
Message-ID <10blq27$dhod$1@solani.org> (permalink)
References <10877t8$cm50$3@solani.org> <10auacq$qjhg$2@solani.org>

Show all headers | 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