Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.prolog > #15795
| From | Mild Shock <janburse@fastmail.fm> |
|---|---|
| Newsgroups | comp.lang.prolog |
| Subject | Summer Challenge: libSQL = Prolog+Modes [VDBE versus π-WAM] (Was: Actor/Erlang is dead, no Thread and Mailbox conflation [golang channels]) |
| Date | 2026-07-30 11:22 +0200 |
| Message-ID | <114f54s$lao5$1@solani.org> (permalink) |
| References | <107cdg8$3ok7g$1@solani.org> <10p44s1$16ps$1@solani.org> <114cv6j$kb0c$1@solani.org> <114cvub$kbhu$1@solani.org> |
Hi,
Woa! Thats a very sad and non fitting statement:
"This was before I was indoctrinated into
ISO Prolog and the ways of monotonic logic
programming. Shen Prolog has many semantic
and syntactic limitations that Scryer Prolog
does not. Also, I now know constraints are a
much better, purer solution to the problems
mode declarations were meant to address"
https://github.com/mthom/scryer-prolog/issues/3410#issuecomment-5030471183
Ok, here is the summer challenge, thats the easy one:
SQL --> Prolog --> WAN
Here come two variations, slightly mindboggling maybe?
SQL --> AST --> VDBE
SQL --> Prolog+Modes --> π-WAM
Bye
BTW: What is VDBE? Some abstract machine, that can
be used to run SQL, following some ideas here:
Database Co-Design With Asynchronous I/O
https://penberg.org/papers/penberg-edgesys24.pdf
Or to run Doom:
Doom on the Turso VDBE
https://github.com/tursodatabase/turso-vdbe-doom-example
What if we would run Doom with π-WAM, an a GPU,
using multiple shaders. We could add some ray tracing.
Mild Shock schrieb:
> Hi,
>
> Mostlikely for high performance computing à la,
> the Actor/Erlang model is dead, they might rely
> on MPMC (Multiple Producer, Multiple Consumer)
>
> queue entities separate from the threads. The
> ISO Prolog multi-threading support had also such
> threads. But besides that was also Actor/Erlang
>
> leaning in practice, like SWI, where threads
> have some default queues:
>
> > KOAN/Fortran-S was an early 1990s research programming
> > system for distributed-memory multiprocessors . Developed
> > at ENS Lyon in the early 1990s . Often listed alongside
> > other historical parallel programming efforts.
> >
> > The Message Passing: The research explicitly
> > compared the SVM approach against message passing
> > on the same hardware . The finding was that SVM
> > could achieve good performance without the low-level
> >
> > complexity of managing explicit messages, though
> > the best results often came from a hybrid approach (sic!)
>
> So an actor is basically a Thread and Mailbox
> conflation. While a MPMC queue is a kind of
> separate Mailbox, where multiple "actors" can
>
> read from and write from. A kind of localized
> Linda Tuple store. Which Programming language did
> adopted the non-Actor pi-calculus model?
>
> Right golang with its channels.
>
> Bye
>
> Mild Shock schrieb:
>> Hi,
>>
>> Usual question:
>>
>> > Why implement both pre-emptive threading
>> AND cooperative tasks/engines?
>>
>> I had implemented the ISO proposal in formerly Jekejeke
>> Prolog, you find the ISO proposal here:
>>
>> ISO/IEC DTR 13211–5:2007
>> Prolog multi-threading support
>> https://logtalk.org/plstd/threads.pdf
>>
>> But the ISO proposal doesn't match modern WebGPU APIs,
>> where your logical threads can live remotely in a dedicated GPU
>>
>> in the VRAM there, and where you would have launch
>> parameters that say: Hey please run 4096 compute
>>
>> shaders for me, that have independet thread state. Using
>> cooperative multi-tasking as the orchestrator works well.
>>
>> Bye
>>
>> Mild Shock schrieb:
>>> Hi,
>>>
>>> How would we do a reverse sorted map?
>>>
>>> I find in Java:
>>>
>>> TreeMap(Comparator<? super K> comparator)
>>> Constructs a new, empty tree map, ordered
>>> according to the given comparator.
>>> https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html
>>>
>>> Or in Dogelog Player:
>>>
>>> tree_new(T):
>>> tree_new(T, F):
>>> The predicate succeeds in R with a new red-black tree.
>>> The binary predicate allows specifying a term compare F.
>>> https://www.dogelog.ch/typtab/doclet/book/12_lang/05_libraries/03_util/06_tree.html
>>>
>>>
>>> Here is an example, using the destructive API. But
>>> the same constructor works also for the non-destructive API.
>>>
>>> ?- tree_new(_T), tree_add(_T, 0rInf, foo),
>>> tree_add(_T, 0rNaN, bar), tree_pairs(_T, L).
>>> L = [0rNaN-bar, 0rInf-foo].
>>>
>>> And now using a comparator modifier, aggregate with a comparator,
>>> as a closure. Some Joy of Higher Order logic programming:
>>>
>>> reverse(C, R, X, Y) :- call(C, R, Y, X).
>>>
>>> ?- tree_new(_T,reverse(compare)), tree_add(_T, 0rInf, foo),
>>> tree_add(_T, 0rNaN, bar), tree_pairs(_T, L).
>>> L = [0rInf-foo, 0rNaN-bar].
>>>
>>> ?- tree_new(_T,reverse(reverse(compare))), tree_add(_T, 0rInf, foo),
>>> tree_add(_T, 0rNaN, bar), tree_pairs(_T, L).
>>> L = [0rNaN-bar, 0rInf-foo].
>>>
>>> Just toying around with my new NaNs.
>>>
>>> Have Fun!
>>>
>>> Bye
>>>
>>> Mild Shock schrieb:
>>>> Hi,
>>>>
>>>> Functional requirement:
>>>>
>>>> ?- Y = g(_,_), X = f(Y,C,D,Y), term_singletons(X, L),
>>>> L == [C,D].
>>>>
>>>> ?- Y = g(A,X,B), X = f(Y,C,D), term_singletons(X, L),
>>>> L == [A,B,C,D].
>>>>
>>>> Non-Functional requirement:
>>>>
>>>> ?- member(N,[5,10,15]), time(singletons(N)), fail; true.
>>>> % Zeit 1 ms, GC 0 ms, Lips 4046000, Uhr 11.08.2025 01:36
>>>> % Zeit 3 ms, GC 0 ms, Lips 1352000, Uhr 11.08.2025 01:36
>>>> % Zeit 3 ms, GC 0 ms, Lips 1355333, Uhr 11.08.2025 01:36
>>>> true.
>>>>
>>>> Can your Prolog system do that?
>>>>
>>>> P.S.: Benchmark was:
>>>>
>>>> singletons(N) :-
>>>> hydra2(N,Y),
>>>> between(1,1000,_), term_singletons(Y,_), fail; true.
>>>>
>>>> hydra2(0, _) :- !.
>>>> hydra2(N, s(X,X)) :-
>>>> M is N-1,
>>>> hydra2(M, X).
>>>>
>>>> Bye
>>>
>>
>
Back to comp.lang.prolog | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
VIP0909: VibeCore Improvement Proposal Mild Shock <janburse@fastmail.fm> - 2025-08-11 11:35 +0200
VIP0111: Does a Map have a Constructor? (Was: VIP0909: VibeCore Improvement Proposal) Mild Shock <janburse@fastmail.fm> - 2026-03-14 18:11 +0100
100% Prolog Hash map beats SWI C Trie (Was: VIP0111: Does a Map have a Constructor?) Mild Shock <janburse@fastmail.fm> - 2026-03-17 04:07 +0100
AI Accelerators and ISO Prolog multi-threading (Was: VIP0111: Does a Map have a Constructor?) Mild Shock <janburse@fastmail.fm> - 2026-07-29 15:28 +0200
Actor/Erlang is dead, no Thread and Mailbox conflation [golang channels] (Was: AI Accelerators and ISO Prolog multi-threading) Mild Shock <janburse@fastmail.fm> - 2026-07-29 15:41 +0200
Summer Challenge: libSQL = Prolog+Modes [VDBE versus π-WAM] (Was: Actor/Erlang is dead, no Thread and Mailbox conflation [golang channels]) Mild Shock <janburse@fastmail.fm> - 2026-07-30 11:22 +0200
Work slicing can simulate AbortController (Was: Summer Challenge: libSQL = Prolog+Modes [VDBE versus π-WAM]) Mild Shock <janburse@fastmail.fm> - 2026-08-01 13:23 +0200
Introducing an asm/1 statement in a Prolog system (Was: AI Accelerators and ISO Prolog multi-threading) Mild Shock <janburse@fastmail.fm> - 2026-08-09 20:21 +0200
Introducing an asm/1 statement in a Prolog system (Re: AI Accelerators and ISO Prolog multi-threading) Mild Shock <janburse@fastmail.fm> - 2026-08-09 20:25 +0200
csiph-web