Path: ...!feeds.phibee-telecom.net!weretis.net!feeder8.news.weretis.net!reader5.news.weretis.net!news.solani.org!.POSTED!not-for-mail From: Mild Shock Newsgroups: comp.lang.prolog Subject: Is Rust the culprit? (Was: What about the Holy Grail?) Date: Mon, 22 Jul 2024 22:16:07 +0200 Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Mon, 22 Jul 2024 20:16:06 -0000 (UTC) Injection-Info: solani.org; logging-data="228013"; mail-complaints-to="abuse@news.solani.org" User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0 SeaMonkey/2.53.18.2 Cancel-Lock: sha1:ZViBkyVFhz4PYMAeRLE63FybSrs= In-Reply-To: X-User-ID: eJwNisERACEIxFoSgV2vHFDov4Rj8komrhBcGhzmPWDJ0bwRPJN6S0CyHm9sslm2arxOClvm2ex4utKgn3v+T+cVYg== Bytes: 1899 Lines: 36 Maybe Scryer Prolog is a failure, because Rust is a failure. Building Scryer Prolog on my machine, after a git pull of a small change, did just take this much time: $ time cargo build --release [...] real 6m52.663s user 7m39.043s sys 0m3.241s What did Rust do? And this tabling test case, 2000 shuttle, hangs: /* Scryer Prolog 0.9.4-107 */ ?- use_module(library(tabling)). true. ?- [user]. :- table c/1. c(X) :- c(Y), 0 =< Y, Y < 20000, X is -Y-1. c(X) :- c(Y), -20000 < Y, Y =< 0, X is -Y+1. c(0). ?- time(c(_)). %%% hangs ? %%% It is solved in a blink in SWI-Prolog: /* SWI-Prolog 9.3.8 */ ?- time(c(_)). % 540,077 inferences, 0.047 CPU in 0.051 seconds (92% CPU, 11521643 Lips) true . The test case is from here: https://github.com/JanWielemaker/tabling_benchmarks/tree/master