Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #197901 > unrolled thread
| Started by | Mild Shock <janburse@fastmail.fm> |
|---|---|
| First post | 2026-08-30 15:02 +0200 |
| Last post | 2026-09-17 15:08 +0200 |
| Articles | 3 — 1 participant |
Back to article view | Back to comp.lang.python
ANN: Dogelog Player 2.2.6 (π-WAM if-then-else) Mild Shock <janburse@fastmail.fm> - 2026-08-30 15:02 +0200
5 Minutes Implementation of Prolog catch/3 and throw/1 (Re: Dogelog in the Park: A Barriered Statechart Simulator) Mild Shock <janburse@fastmail.fm> - 2026-09-14 19:26 +0200
A rogue '$CUT'/1 for Dogelog Player (Was: 5 Minutes Implementation of Prolog catch/3 and throw/1) Mild Shock <janburse@fastmail.fm> - 2026-09-17 15:08 +0200
| From | Mild Shock <janburse@fastmail.fm> |
|---|---|
| Date | 2026-08-30 15:02 +0200 |
| Subject | ANN: Dogelog Player 2.2.6 (π-WAM if-then-else) |
| Message-ID | <11719ko$1cctk$2@solani.org> |
Dear All, We are happy to announce a new edition of the Dogelog Player: - User Time: Our π-WAM channels are still pounding 1μ ping pong roundtrip between JavaScript workers, thanks to SharedArrayBuffer and Atomic.wait(). But while workers are busy with each other Dogelog Player main worker will wait. Therefore we introduced a new statistics "user" and time/1 shows user percentage for non-wait main. - Hack Instructions: What a π-WAM worker will drive, is the Hack VM an alternative to the Dogelog VM. Our first version of Hack VM instruction set had 10-bit jump operand and 10-bit arithmetic operand. This made it difficult to run larger CLP(Z) examples. So we redesigned the instuction set to have one 24-bit operand. - Hack Compilation: There is a new library(hack), which houses the emulator and a new disassembler by the predicate instructions/1, the later taking a goal argument. The Hack VM compiler can now emit jump and link instructions for disjunction. It can also digest '$MARK'/1 and '$CUT'/1 from the Dogelog Player surface translation, and therefor it is now able to compile if-then-else. Have Fun! Jan Burse, August 30, 2026, https://www.herbrand.ai/
[toc] | [next] | [standalone]
| From | Mild Shock <janburse@fastmail.fm> |
|---|---|
| Date | 2026-09-14 19:26 +0200 |
| Subject | 5 Minutes Implementation of Prolog catch/3 and throw/1 (Re: Dogelog in the Park: A Barriered Statechart Simulator) |
| Message-ID | <1189aom$6r7i$3@solani.org> |
| In reply to | #197901 |
Hi, Dogelog Player is a Prolog system for the JavaScript, Python and Java target, mostly written in 100% Prolog itself. Since it runs in cooperative multitasking enviroments, it features a ‘$YIELD’/1. We noticed that catch/3 causes some friction and we found a simple remedy. The friction was caused by a switch from Prolog, to Host Language and to Prolog so that ‘$YIELD’/1 had to create choice points. We eleminated both. The new catch/3 realization can easily scale to millions of nestings, since it has become independent of the native stack. Bye See also: 5 Minutes Implementation of Prolog catch/3 and throw/1 https://medium.com/2989/dc662b85fcb2 Mild Shock schrieb: > Hi, > > In 1984 David Harel wrote a charming paper > about statecharts to visualize complex system > state and behaviour. After a $80 million > acquisition and the expiry of patents. The > 2015 W3C XML standard for statecharts has > an appendix D showing a reference implementation. > > Unlike the W3C appendix D take, the simulator > is a homomorphism of next/3, with an intercept > for cancellations. By using maplist/3 and > not concurrent_maplist/3 we added a barrier. > We can now let the little dog play fetch in > some nature park, just like in the > Stately AI demo page. > > Bye > > See also: > > Dogelog in the Park: A Barriered Statechart Simulator > https://medium.com/2989/a50682d1fde8 > > Mild Shock schrieb: >> Dear All, >> >> We are happy to announce a new edition >> of the Dogelog Player: >> >> - User Time: >> Our π-WAM channels are still pounding 1μ ping >> pong roundtrip between JavaScript workers, >> thanks to SharedArrayBuffer and Atomic.wait(). >> But while workers are busy with each other >> Dogelog Player main worker will wait. Therefore >> we introduced a new statistics "user" and time/1 >> shows user percentage for non-wait main. >> >> - Hack Instructions: >> What a π-WAM worker will drive, is the Hack VM >> an alternative to the Dogelog VM. Our first >> version of Hack VM instruction set had 10-bit >> jump operand and 10-bit arithmetic operand. >> This made it difficult to run larger CLP(Z) >> examples. So we redesigned the instuction >> set to have one 24-bit operand. >> >> - Hack Compilation: >> There is a new library(hack), which houses >> the emulator and a new disassembler by the >> predicate instructions/1, the later taking a >> goal argument. The Hack VM compiler can now >> emit jump and link instructions for disjunction. >> It can also digest '$MARK'/1 and '$CUT'/1 from >> the Dogelog Player surface translation, and >> therefor it is now able to compile if-then-else. >> >> Have Fun! >> >> >> Jan Burse, August 30, 2026, https://www.herbrand.ai/ >
[toc] | [prev] | [next] | [standalone]
| From | Mild Shock <janburse@fastmail.fm> |
|---|---|
| Date | 2026-09-17 15:08 +0200 |
| Subject | A rogue '$CUT'/1 for Dogelog Player (Was: 5 Minutes Implementation of Prolog catch/3 and throw/1) |
| Message-ID | <118goo5$bt0o$1@solani.org> |
| In reply to | #198008 |
Hi, Dogelog Player is a Prolog system for the JavaScript, Python and Java target, mostly written in 100% Prolog itself. So far we only provided once_cleanup/2 to deal with resource managment. It turns out we could secure a call_cleanup/2 through a simple mechanism. Drawing on a phrasing in a BIM Prolog document from 1984, we could implement the post-N215 semantics of call_cleanup/2. Since we had eliminated the native stack use from catch/3, we could again apply patterns of continuation manipulation for events in the continuation. Bye See also: A rogue ‘$CUT’/1 for Dogelog Player https://medium.com/2989/f41c71265331 Mild Shock schrieb: > Hi, > > Dogelog Player is a Prolog system for the > JavaScript, Python and Java target, mostly > written in 100% Prolog itself. Since it runs in > cooperative multitasking enviroments, it features a > ‘$YIELD’/1. We noticed that catch/3 causes some > friction and we found a simple remedy. > > The friction was caused by a switch from Prolog, > to Host Language and to Prolog so that ‘$YIELD’/1 > had to create choice points. We eleminated both. > The new catch/3 realization can easily scale to > millions of nestings, since it has become > independent of the native stack. > > Bye > > See also: > > 5 Minutes Implementation of Prolog catch/3 and throw/1 > https://medium.com/2989/dc662b85fcb2
[toc] | [prev] | [standalone]
Back to top | Article view | comp.lang.python
csiph-web