github.com/mthom/scryer-prolog ↗

A modern Prolog implementation written mostly in Rust.

An animated visualization of mthom/scryer-prolog's Git history from October 2016 to December 2020, built by 18 contributors. The codebase reached 5,335 lines, mostly Rust. The video runs 2 minutes 31 seconds.

Render your own repo

Turn any GitHub repository into a video like this — free sample in seconds.

Visualize your own →

Open this visualization on its own page →

Language

Rust

Contributors

18

Lines of Code

5,335

From

2016-10-29

To

2020-12-22

Advertisement

About mthom/scryer-prolog

Scryer Prolog is a modern implementation of ISO Prolog written primarily in Rust. It aspires to be for Prolog what GHC is for Haskell: an industrial-strength, open-source production environment that also serves as a testbed for research in logic and constraint programming. The project passes all conformity tests for ISO Prolog syntax, variable names handling, and the dif/2 constraint predicate.

The implementation is built on the Warren Abstract Machine, a theoretical computational model for Prolog execution, with Phase 1 completing the core WAM features including lists, cuts, indexing, and last-call optimization. Phase 2 extends this foundation with numerous advanced features: ISO-compliant exception handling, a module system, arithmetic supporting bignum and rational numbers, definite clause grammars, attributed variables for constraint programming, delimited continuations for tabling, streams and socket support, and two constraint logic programming libraries for boolean and integer domains. The system includes a compact internal representation for strings that provides up to 24-fold memory reduction compared to traditional list-based character storage, making it particularly suited for text processing tasks.

Scryer Prolog targets a broad audience from students and educators learning logic programming to researchers exploring constraint logic programming techniques. The project provides precompiled binaries for multiple platforms, supports compilation via Rust's cargo package manager, and includes WebAssembly support. It comes with extensive built-in libraries covering list processing, input/output, debugging, type checking, and various other functionality, making it suitable both as a general-purpose Prolog system and as a platform for specialized constraint-solving applications.

Advertisement

Share this video