A modern ISO Prolog implementation written in Rust, aiming to be an industrial-strength production environment and research testbed.
Scryer Prolog is a modern, ISO-conformant Prolog implementation written mostly in Rust. It provides an industrial-strength environment for logic and constraint programming, with a focus on efficiency, standards compliance, and research innovation. It solves the need for a reliable, high-performance open-source Prolog system that can handle real-world applications and advanced programming techniques.
Prolog developers, researchers in logic and constraint programming, and organizations requiring ISO-compliant Prolog implementations for regulated or production environments. It's also well-suited for teaching Prolog due to its standards adherence and rich feature set.
Developers choose Scryer Prolog for its strong ISO conformity, efficient memory representation (especially for strings), built-in support for advanced features like tabling and constraint solving, and its modern implementation in Rust which offers performance and safety benefits.
A modern Prolog implementation written mostly in Rust.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Passes all ISO Prolog conformity tests, ensuring high compatibility and reliability for regulated industries and portable code.
Uses a compact UTF-8 encoding for strings and partial strings, reducing memory usage by up to 24-fold for text processing tasks.
Built-in support for CLP(B) and CLP(ℤ) with attributed variables, enabling sophisticated combinatorial problem-solving out of the box.
Implements SLG resolution via delimited continuations, allowing programs that loop under standard execution to terminate reliably.
Can be compiled to WebAssembly for web applications, though it requires disabling default features and extra configuration.
Key features like a compacting garbage collector and mode declarations are still in progress, limiting full industrial readiness in some areas.
Requires Rust for native compilation, which can be a barrier for users unfamiliar with Rust or preferring simpler binary installations.
Has fewer external libraries and tools compared to mature Prolog systems like SWI-Prolog, which may affect development speed for niche needs.