Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ANN: Dogelog Player 1.1.3 (Tuning Trilogy)

36 views
Skip to first unread message

Mild Shock

unread,
Nov 8, 2023, 5:36:02 PM11/8/23
to
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/

Mild Shock

unread,
Nov 9, 2023, 8:57:58 AM11/9/23
to

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:

Mild Shock

unread,
Nov 22, 2023, 7:22:31 AM11/22/23
to
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

Mild Shock

unread,
Nov 22, 2023, 8:11:45 AM11/22/23
to

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

unread,
Nov 22, 2023, 8:36:17 AM11/22/23
to

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:

Mild Shock

unread,
Nov 26, 2023, 7:24:34 AM11/26/23
to
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

Mild Shock

unread,
Nov 29, 2023, 6:46:06 PM11/29/23
to

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:
0 new messages