swi-prolog ABI
--------------

There are five virtual packages which reflect different ABI version of
swi-prolog:

 - swi-prolog-abi-${swi-prolog:ABI},
 - swi-prolog-abi-foreign-${swi-prolog:FABI},
 - swi-prolog-abi-binary-${swi-prolog:BABI},
 - swi-prolog-abi-qlf-${swi-prolog:QLF},
 - swi-prolog-abi-states-${swi-prolog:SSTATES}

These packages are Provided by swi-prolog-core. Each of these packages
contains a more or less volatile part, represented by environment
variables. These variables are set (via swipl --abi_version) after the
build and before finalize packaging, so swi-prolog-core binary package
Provides these virtual packages with some values substituted in place
of the variables.

In case your package depends on some particular ABI or on some
particular ABI component, you may set your package dependency on the
corresponding swi-prolog-abi virtual package.

The swi-prolog-abi-${swi-prolog:ABI} contains the full ABI version
which includes all the components.

The swi-prolog-abi-foreign-${swi-prolog:FABI} contains foreign
extensions ABI version. A compatible API allows distribution of
foreign extensions in binary form.

The swi-prolog-abi-binary-${swi-prolog:BABI} contains binary term ABI
version. Terms may be represented in binary format, these formats are
used for storing binary terms in databases or communicate terms
between Prolog processes in binary form.

The swi-prolog-abi-qlf-${swi-prolog:QLF} contains QLF files ABI
version. These 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.

The swi-prolog-abi-states-${swi-prolog:SSTATES} contains saved states
ABI version. Saved state 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.

For additional information, see section "Binary compatibility" in the
upstream documentation at
https://www.swi-prolog.org/pldoc/man?section=abi-versions and Debian
bug report #958419.

swi-prolog source in Debian
---------------------------

Directory bench/ is deleted from the source code since it contains
several non-free files, and other files are under ambiguous or
not-known licenses. Originally this directory contains benchmarks,
which can be used with gcc profile based optimizations. These
benchmarks were not used in producing binaries for Debian. Moreover
these benchmarks are quite old, not using modern libraries, avoiding
GC. Upstream authors plan to supply new and better benchmarks in the
future.

Also sourceless minified copy of jquery was deleted from the source.
Debian's copy of jquery used to provide needed functionality (via
depending on libjs-jquery and symlinking to jquery.min.js).

 -- Lev Lamberov <dogsleg@debian.org>, Tue,  9 Jun 2020 09:58:42 +0500
