Path: csiph.com!weretis.net!feeder8.news.weretis.net!reader5.news.weretis.net!news.solani.org!.POSTED!not-for-mail From: Mild Shock Newsgroups: comp.lang.python Subject: =?UTF-8?Q?A_rogue_'$CUT'/1_for_Dogelog=c2=a0Player_=28Was:_5_Minute?= =?UTF-8?Q?s_Implementation_of_Prolog_catch/3_and_throw/1=29?= Date: Thu, 17 Sep 2026 15:08:21 +0200 Message-ID: <118goo5$bt0o$1@solani.org> References: <11719ko$1cctk$2@solani.org> <117elhd$1lppc$5@solani.org> <1189aom$6r7i$3@solani.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Thu, 17 Sep 2026 13:08:21 -0000 (UTC) Injection-Info: solani.org; logging-data="390168"; mail-complaints-to="abuse@news.solani.org" User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Firefox/140.0 SeaMonkey/2.53.24 Cancel-Lock: sha1:0NOXE5eYUmX+sUPkGQAhbvpgSEA= X-User-ID: eJwNyMEBwCAIA8CVBBKEcRBl/xHaex7NxXvD6eBwDIWu+/SxFHn0+SCyJWLnmYyeZpqU3Xv/D0gaV2GPhy5+YrAVUg== In-Reply-To: <1189aom$6r7i$3@solani.org> Xref: csiph.com comp.lang.python:198012 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