• ANN: Dogelog Player 1.1.3 (Tuning Trilogy)

    From Mild Shock@janburse@fastmail.fm to comp.lang.prolog on Wed Nov 8 23:36:00 2023
    From Newsgroup: comp.lang.prolog

    Dear All,

    We are happy to announce a new edition of
    the Dogelog player:

    - Monomorphic Cache:
    New episode in creating a Prolog system with no
    atom table and no datatype string, only atoms. Like
    formerly Jekejeke Prolog our Dogelog player has only
    a provables table and inline caches, whereas we
    didn't need polymorphic, only monomorphic.

    - Neck Forms:
    We allow the Prolog system to treat neck deterministic
    built-ins in a special way so as to avoid the costly
    creation of sub-goals. Intriguingly even more speed-up
    can be gained in that the built-ins decide on their
    own how to interpret the Albufeira code arguments.

    - AST-Machine:
    We abandoned the idea that Albufeira code is an
    array of op-codes. The result is a a data structure
    which is a chimera of PLM molecules and WAM structures.
    Judging from our bechmark suite, this is the final
    killing blow to formerly Jekejeke Prolog.

    For more details: Dogelog

    Have Fun!
    Jan Burse, 08.11.2023, http://www.xlog.ch/
    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Mild Shock@janburse@fastmail.fm to comp.lang.prolog on Thu Nov 9 14:57:55 2023
    From Newsgroup: comp.lang.prolog


    Raymond Smullyan posed the Lion and the Unicorn riddle
    inspired by a story about Alice from Lewis Carroll.
    A Prolog solution was given in a Paper from 1986 about
    VM/Prolog. The paper discussed theorem proving versus
    logic programming with Prolog. We give a variant of
    this solution and discuss the involved meta predicates.

    We presented a solution based on a user defined meta
    predicate contrary/2. Differences in negation of
    failure made us curious how other Prolog systems
    perform. Dogelog Player with a simple strategy for
    meta predicates without sacrificing ISO core standard
    compatibility, lands in the middle. Hence we could
    demonstrate that one can have the cake and eat it too.

    See also:

    The Lion and the Unicorn met Dogelog https://twitter.com/dogelogch/status/1722612860306821386

    The Lion and the Unicorn met Dogelog
    https://www.facebook.com/groups/dogelog

    Mild Shock schrieb:
    Dear All,

    We are happy to announce a new edition of
    the Dogelog player:

    - Monomorphic Cache:
      New episode in creating a Prolog system with no
    atom table and no datatype string, only atoms. Like
    formerly Jekejeke Prolog our Dogelog player has only
    a provables table and inline caches, whereas we
    didn't need polymorphic, only monomorphic.

    - Neck Forms:
      We allow the Prolog system to treat neck deterministic
    built-ins in a special way so as to avoid the costly
    creation of sub-goals. Intriguingly even more speed-up
    can be gained in that the built-ins decide on their
    own how to interpret the Albufeira code arguments.

    - AST-Machine:
      We abandoned the idea that Albufeira code is an
    array of op-codes. The result is a a data structure
    which is a chimera of PLM molecules and WAM structures.
    Judging from our bechmark suite, this is the final
    killing blow to formerly Jekejeke Prolog.

    For more details: Dogelog

    Have Fun!
    Jan Burse, 08.11.2023, http://www.xlog.ch/

    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Mild Shock@janburse@fastmail.fm to comp.lang.prolog on Wed Nov 22 13:22:29 2023
    From Newsgroup: comp.lang.prolog

    Dogelog Player is a Prolog system 100% written
    in Prolog itself. We recently extended the Dogelog
    Player to not only support JavaScript and Python,
    but also Java as its target platform. For JavaScript
    and Java, Dogelog Player approaches Prolog
    atoms via wobbly Unicode.

    We treat wobbly code points as first class citizen
    and see to it that a conversion from wobbly pairs
    to a steady points automatically happens, but the
    reverse road is blocked. The results are encouraging
    but support in other Prolog systems such as
    SWI-Prolog is lacking.

    See also:

    Wobbly Unicode in Dogelog Player https://twitter.com/dogelogch/status/1727300173968162983

    Wobbly Unicode in Dogelog Player
    https://www.facebook.com/groups/dogelog
    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Mild Shock@bursejan@gmail.com to comp.lang.prolog on Wed Nov 22 05:11:43 2023
    From Newsgroup: comp.lang.prolog


    My thoughts and prayers to Prolog systems that
    have under the hood UTF-8. This is a nasty test case
    to a certain approach of surrogate pairs:
    ?- X = 'The \uD83D', Y = '\uDE02 dog', atom_concat(X, Y, Z).
    X = 'The \ud83d', Y = '\ude02 dog', Z = 'The 😂 dog'.
    Could mean 3 bytes UTF-8 at the end of the first Prolog
    atom and 3 bytes UTF-8 at the start of the second Prolog
    atom are converted into 4 bytes UTF-8.
    See also:
    The WTF-8 encoding
    WTF-8 (Wobbly Transformation Format − 8-bit)
    Simon Sapin, Mozilla - 23 February 2022
    https://simonsapin.github.io/wtf-8/
    Mild Shock schrieb am Mittwoch, 22. November 2023 um 13:22:31 UTC+1:
    Dogelog Player is a Prolog system 100% written
    in Prolog itself. We recently extended the Dogelog
    Player to not only support JavaScript and Python,
    but also Java as its target platform. For JavaScript
    and Java, Dogelog Player approaches Prolog
    atoms via wobbly Unicode.

    We treat wobbly code points as first class citizen
    and see to it that a conversion from wobbly pairs
    to a steady points automatically happens, but the
    reverse road is blocked. The results are encouraging
    but support in other Prolog systems such as
    SWI-Prolog is lacking.

    See also:

    Wobbly Unicode in Dogelog Player https://twitter.com/dogelogch/status/1727300173968162983

    Wobbly Unicode in Dogelog Player
    https://www.facebook.com/groups/dogelog
    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Mild Shock@janburse@fastmail.fm to comp.lang.prolog on Wed Nov 22 14:36:15 2023
    From Newsgroup: comp.lang.prolog


    My thoughts and prayers to Prolog systems that
    have under the hood UTF-8. This is a nasty test case
    to a certain approach of surrogate pairs:

    ?- X = 'The \uD83D', Y = '\uDE02 dog', atom_concat(X, Y, Z).
    X = 'The \ud83d', Y = '\ude02 dog', Z = 'The 😂 dog'.

    Could mean 3 bytes UTF-8 at the end of the first Prolog
    atom and 3 bytes UTF-8 at the start of the second Prolog
    atom are converted into 4 bytes UTF-8.

    See also:

    The WTF-8 encoding
    WTF-8 (Wobbly Transformation Format − 8-bit)
    Simon Sapin, Mozilla - 23 February 2022
    https://simonsapin.github.io/wtf-8/


    Mild Shock schrieb:
    Dogelog Player is a Prolog system 100% written
    in Prolog itself. We recently extended the Dogelog
    Player to not only support JavaScript and Python,
    but also Java as its target platform. For JavaScript
    and Java, Dogelog Player approaches Prolog
    atoms via wobbly Unicode.

    We treat wobbly code points as first class citizen
    and see to it that a conversion from wobbly pairs
    to a steady points automatically happens, but the
    reverse road is blocked. The results are encouraging
    but support in other Prolog systems such as
    SWI-Prolog is lacking.

    See also:

    Wobbly Unicode in Dogelog Player https://twitter.com/dogelogch/status/1727300173968162983

    Wobbly Unicode in Dogelog Player
    https://www.facebook.com/groups/dogelog

    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Mild Shock@janburse@fastmail.fm to comp.lang.prolog on Sun Nov 26 13:24:32 2023
    From Newsgroup: comp.lang.prolog

    Dogelog Player is a Prolog system for the
    JavaScript, Python and Java platform. We
    were facing some test cases that created
    huge amounts of Prolog terms and in the
    same time had a failure driven loop removing
    them at once again. Can our garbage collector
    deal with that?

    Tri-color can be used to identify old and
    new variables. We went on and implemented a
    variant of David Ungars generation scavenging.
    We could gain various benefits with a new
    gc_minor() routine, and the winner was a
    backtracking friendly heuristic when to
    call it or not.

    See also:

    Generational GC for Dogelog Player https://twitter.com/dogelogch/status/1728641232413307092

    Generational GC for Dogelog Player
    https://www.facebook.com/groups/dogelog

    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Mild Shock@janburse@fastmail.fm to comp.lang.prolog on Thu Nov 30 00:46:03 2023
    From Newsgroup: comp.lang.prolog


    Dogelog Player is a Prolog system 100% written
    in Prolog itself. To enable SAT solvers we
    gave it a generational garbage collector and
    saw performance gain Java 42%, JavaScript 51%
    and Python 61%. We compare here with a few
    ther Prolog systems.

    There are some pratical examples, such as a
    half-adder, that take less space in Read-Muller
    expansion than in Boolean expansion. The test
    suite contains 4 satisfiablity and 4 counting
    test cases. Interestingly Dogelog Player for Java
    is not last thanks to the performance gain.

    See also:

    SAT Solvers for Dogelog Player https://twitter.com/dogelogch/status/1730006702936772841

    SAT Solvers for Dogelog Player
    https://www.facebook.com/groups/dogelog

    Mild Shock schrieb:
    Dogelog Player is a Prolog system for the
    JavaScript, Python and Java platform. We
    were facing some test cases that created
    huge amounts of Prolog terms and in the
    same time had a failure driven loop removing
    them at once again. Can our garbage collector
    deal with that?

    Tri-color can be used to identify old and
    new variables. We went on and implemented a
    variant of David Ungars generation scavenging.
    We could gain various benefits with a new
    gc_minor() routine, and the winner was a
    backtracking friendly heuristic when to
    call it or not.

    See also:

    Generational GC for Dogelog Player https://twitter.com/dogelogch/status/1728641232413307092

    Generational GC for Dogelog Player
    https://www.facebook.com/groups/dogelog


    --- Synchronet 3.20a-Linux NewsLink 1.114