HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
mthom
scryer-prolog
Rust2018–2026
mthom / scryer-prolog

scryer-prolog

A modern Prolog implementation written mostly in Rust.

20Distinct people
81Mentions
2Explicit recommenders
2.5KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A modern Prolog implementation written mostly in Rust.

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

(Will be continued in Part 13) It will take me to read this book, but I love it! I'll be following along in https://github.com/mthom/scryer-prolog (written in Rust) so one…

sitkack used a recommendation phrase. 2 indexed comments match. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year81 dated mentions

Observed mentions: 2018-02-26 18:34:13 UTC to 2026-08-05 20:11:30 UTC.

0510152018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 8 mentions; 1 submissions, 7 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 14 mentions; 0 submissions, 14 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 8 mentions; 2 submissions, 6 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 5 mentions; 2 submissions, 3 comments20222023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 10 mentions; 5 submissions, 5 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 16 mentions; 7 submissions, 9 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 13 mentions; 5 submissions, 8 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC211
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC817
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC14014
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC826
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC523
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC1055
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC1679
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC1358
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC514

What Hacker News says

81 sources
Awesome work, thank you a lot Javier for making this available, and for the Scryer Prolog improvements that make this possible! I see that almost all of the changes mentioned on the page are in fact already filed for inclusion: https://github.com/mthom/scryer-prolog/pull/3379 https://github.com/mthom/scryer-prolog/pull/3383 https://github.com/mthom/scryer-prolog/pull/3387 https://github.com/mthom/scryer-prolog/pull/3390 If anyone is interested in contributing to Scryer Prolog and getting these changes included, please have a look and participate in the accompanying discussions, thank you a lot! For everyone interested in Prolog and its applications, please also consider attending the Scryer Prolog Meetup 2026 on Oct. 24th and 25th in Vienna: https://www.digitalaustria.gv.at/wissenswertes/events/scryer... I hope to see several of you there
Read the rest
!
In Sula: A Gemini protocol server written in Scryer Prolog
I think this is very well phrased, and I would argue the same holds for Prolog too. In my opinion, a key difference between Prolog and other languages in that regard is one of degree, not kind: Compared to other languages, addressing performance problems in Prolog engines tends to have far greater effects on Prolog programs, because so much is implicit (i.e., left to the engine). If the performance problem is not in the engine, but in the program itself, then we will face the same questions with Prolog as with other languages: How to formulate the program better, is there a better approach altogether? For example, earlier today an interesting question regarding performance was posted in the Scryer discussions: https://github.com/mthom/scryer-prolog/discussions/3341 The comparison in this case is between Gecode and Scryer on a seemingly si
Read the rest
mple but nontrivial combinatorial task. What is the problem here? Most likely the Scryer engine itself can be improved. And also very likely, there are better ways to model the task, and also better search strategies, and these tend to have far greater performance impact than the base language, and these questions remain also if we change the base language. In my opinion, these questions regarding different kinds of formulations tend to be more frequently associated with Prolog than with other languages because Prolog is more frequently used for complex tasks where it is not a priori clear how to even approach the problem.
In Prolog Basics Explained with Pokémon
Very nice! In the Scryer Prolog discussions, Alex has shared a few ideas and considerations for possible improvements to the Prolog code, including the use of metaprogramming to automatically generate more general relations: https://github.com/mthom/scryer-prolog/discussions/3221 I hope for an interesting followup article! Another very interesting Prolog program by Alex is factgraph.pl: https://github.com/alexpetros/factgraph.pl It's a Prolog implementation of the IRS Fact Graph, an application of Law as Code.
In Prolog Basics Explained with Pokémon
Speaking of funny shebangs, I came up with this to shell execute prolog .pl files, but it should work for any scripting language that has /**/-comments but doesn't support #-comments or #! shebangs specifically: /*usr/bin/env scryer-prolog "$0" "$@" ; exit #*/ From my original comment https://github.com/mthom/scryer-prolog/issues/2170#issuecomm... : > The way this works is that this test.pl is both a valid shell file and prolog file. When executing as shell the first line finds and executes /usr/bin/env after searching for the glob pattern /*usr/bin/env. env then executes scryer-prolog "test.pl" which runs the prolog file as a module and halts; of course prolog ignores the first line as a comment /* ... */. Then the shell continues and executes the next command after ; which is exit which stops execution so the rest of the file (whic
Read the rest
h is not valid shell) is ignored. The # makes the shell evaluator ignore prolog comment closer */ to prevent it from printing an error. This may be the best and worst thing I have ever created.
In Using uv as your shebang line
Respectfully have to disagree. Prolog has the best features for abstraction of any language I've used, I suspect it may be near an optimal fixed point for metaprogramming expression[3]. I will say the other side of that wall is breathtaking. Also not sure what you mean, CLP is a first class consideration in many Prologs, esp Scryer Prolog. Check these crazy demos out: [1] https://youtu.be/h5Xy4YjCZxM [2] https://youtu.be/5KUdEZTu06o Just look at this Sudoku solver code (see [2] for explanation): sudoku(Rows) :- length(Rows, 9), maplist(same_length(Rows), Rows), append(Rows, Vs), Vs ins 1..9, maplist(all_distinct, Rows), transpose(Rows, Columns), maplist(all_distinct, Columns), Rows = [As,Bs,Cs,Ds,Es,Fs,Gs,Hs,Is], blocks(As, Bs, Cs), blocks(Ds, Es, Fs), block
Read the rest
s(Gs, Hs, Is). blocks([], [], []). blocks([N1,N2,N3|Ns1], [N4,N5,N6|Ns2], [N7,N8,N9|Ns3]) :- all_distinct([N1,N2,N3,N4,N5,N6,N7,N8,N9]), blocks(Ns1, Ns2, Ns3). I have yet to see more elegant code in a general purpose language. [3]: https://github.com/mthom/scryer-prolog/discussions/2347#disc...
In The Simplicity of Prolog

Showing the 15 most recent of 81 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.