On the Implementation of GNU Prolog
Daniel Diaz, Salvador Abreu, Philippe Codognet

TL;DR
GNU Prolog is a native-code Prolog implementation that produces standalone executables, featuring a multipass compiler design and an integrated high-performance finite domain constraint solver, with considerations on design, performance, and standards.
Contribution
The paper details the design and implementation of GNU Prolog, highlighting its native-code compilation, system organization, and integrated constraint solver, which are novel features among Prolog systems.
Findings
Produces standalone executables without byte-code emulator
Features a multipass compiler with materialized intermediate representations
Includes an extensible, high-performance finite domain constraint solver
Abstract
GNU Prolog is a general-purpose implementation of the Prolog language, which distinguishes itself from most other systems by being, above all else, a native-code compiler which produces standalone executables which don't rely on any byte-code emulator or meta-interpreter. Other aspects which stand out include the explicit organization of the Prolog system as a multipass compiler, where intermediate representations are materialized, in Unix compiler tradition. GNU Prolog also includes an extensible and high-performance finite domain constraint solver, integrated with the Prolog language but implemented using independent lower-level mechanisms. This article discusses the main issues involved in designing and implementing GNU Prolog: requirements, system organization, performance and portability issues as well as its position with respect to other Prolog system implementations and the ISO…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Distributed and Parallel Computing Systems · Logic, programming, and type systems
