- Reference manual
- Getting started quickly
- The user's initialisation file
- Initialisation files and goals
- Command line options
- UI Themes
- GNU Emacs Interface
- Online Help
- Command line history
- Reuse of top-level bindings
- Overview of the Debugger
- Environment Control (Prolog flags)
- An overview of hook predicates
- Automatic loading of libraries
- Packs: community add-ons
- The SWI-Prolog syntax
- Rational trees (cyclic terms)
- Just-in-time clause indexing
- Wide character support
- System limits
- SWI-Prolog and 64-bit machines
- Binary compatibility
- Reference manual
SWI-Prolog first of all attempts to maintain source code compatibility between versions. Data and programs can often be represented in binary form. This touches a number of interfaces with varying degrees of compatibility. The relevant version numbers and signatures are made available by PL_version(), the --abi-version and the Prolog flag abi_version.
- Foreign extensions
- Dynamically loadable foreign extensions have the usual dependencies on
the architecture, ABI model of the (C) compiler, dynamic link library
format, etc. They also depend on the backward compatibility of the PL_*
API functions provided lib
A compatible API allows distribution of foreign extensions in binary form, notably for platforms on which compilation is complicated (e.g., Windows). This compatibility is therefore high on the priority list, but must infrequently be compromised.
- Binary terms
- Terms may be represented in binary format using PL_record_external() and fast_write/2. As these formats are used for storing binary terms in databases or communicate terms between Prolog processes in binary form, great care is taken to maintain compatibility.
- QLF files
- QLF files (see qcompile/1) are binary representation of Prolog file or module. They represent clauses as sequences of virtual machine (VM) instructions. Their compatibility relies on the QLF file format and the ABI of the VM. Some care is taken to maintain compatibility.
- Saved states
- Saved states (see -c and qsave_program/2) is a zip file that contains the entire Prolog database using the same representation as QLF files. A saved state may contain additional resources, such as foreign extensions, data files, etc. In addition to the dependency concerns of QLF files, built-in and core library predicates may call internal foreign predicates. The interface between the public built-ins and internal foreign predicates changes frequently. Patch level releases in the stable branch will as much as possible maintain compatibility.