• Goal Outlining for Dogelog Player (Was: Just-in-Time Indexing inDogelog Player)

    From Mild Shock@janburse@fastmail.fm to comp.lang.javascript on Thu Apr 9 12:51:39 2026
    From Newsgroup: comp.lang.javascript

    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


    --- Synchronet 3.21f-Linux NewsLink 1.2