Ann: SWI-Prolog 8.5.0

Dear SWI-Prolog user,

SWI-Prolog 8.5.0 is ready for download. This version isn’t much
different from 8.4.0. It is a normal step in the development cycle. This
version deals with some portabilty/compatibility issues (MUSL C-lib,
OpenSSL 3.0, MS SQL Server for ODBC), several minor bug fixes and small

format/2,3 has improved position management for nested calls that may
result from ~p or ~@ specifiers such that these can use
ansi_format/3 to add attributed (color, bold, etc.) to the output.

Enjoy --- Jan

SWI-Prolog Changelog since version 8.3.29

  • DOC: Document key pc of prolog_choice_attribute/3

  • FIXED: 91d73fb8a859c6e0f0d97ff553f96903816bc18c triggers another case
    where the falsecount of a node can underflow during re-evaluation.
    Bit dubious.

  • DOC: LaTeX formatting error

  • FIXED: possible failure to propagate changes in lazy monotonic
    tabling. This happens because answers added during lazy reevaluation
    are propagated eagerly, but ‘$idg_mono_affects_eager’/3 didn’t find
    dependencies to non-lazy tables.

  • ADDED: pack_install/1 and friends: pass a prefix flag to CMake or
    configure that follows the same conventions as the installed Prolog

  • ADDED: dcg_translate_rule/2 is now declared safe for use in sandboxes.

  • ADDED: notraceall/0.

  • ADDED: Allow authors of packs to not have an email address or URL.

  • ADDED: PL_cvt_i_schar() for explicit signed character handling.

  • ENHANCED: dict_options/2 in mode (-,+) to remove duplicate options,
    keeping the first.

  • ENHANCED: Cleanup code for format/2,3. Allow callback’s to cooperate
    with ansi_format/3.

  • ADDED: prolog_listen/2,3: listen to thread create events.

  • ENHANCED: ord_intersection/2 to raise errors of the input is not a
    proper powerset.

  • FIXED: Possible crash enumerating a trie holding indirect values
    against instantiated data. Reported by Eric Zinda.

  • FIXED: VMI_FUNCTIONS build now works with LDFUNC changes

  • FIXED: Issue#883: Decompiler to preserve order of arguments to
    optimized +/2 and -/2 functions.

  • FIXED: Issue#882: Test failure if xpce is not added to the build.
    Reported by David Tonhofer.

  • BUILD: Make building the docs works if X11 is not included.

  • FIXED: Completion of lazy monotonic tabling to exclude lazy monotonic
    tables without queued dependencies as there is no point in evaluating
    these now.

  • FIXED: Lazy monotonic tabling detection that a mutual dependent
    monotonic dependency network is complete.

  • FIXED: Allow listing/1 from a temporary module.

  • ADDED: customize/edit command to accept --no-wait option.
    Requires latest xpce package. Can by used with editor plugin for

  • DOC: Updated section “Prolog exceptions in foreign code”. Was pretty

  • FIXED: clause/2 moved unification for s(X) :- X = f(Y), p(Y).
    Bug introduced in fb96dc77bbd86df31ed7bd2282dd5b20f341f534.

  • FIXED: clause/2 (decompiler for moved unification instructions against
    the head.

  • DOC: enhanced docs for ;/2, ->/2, and other control structures.

  • PORT: The MUSL C runtime library as used in e.g. Alpino Linux cannot
    safely call pthread_detach() from the pthread cleanup handler.

  • BUILD: Fixed building docs when building without xpce.

Package archive

  • PORT: Allow overruling libarchive dependencies.

Package clib

  • ADDED: uuid/2 emulation to allow for format(integer).

Package http

  • MODIFIED: Issue#148: Do not redirect from /path to /path/Var

  • FIXED: Issue#147: JSON parser to reject illegal numbers.

Package mqi

  • PORT: Make password generation work if GMP is not included.

Package odbc

  • FIXED: Properly translate non-ASCII ODBC messages to Unicode.

  • FIXED: Cleanup the remains of old work-arounds or broken MS SQLServer
    SQLColumns() and add a new one. odbc_table_column/3 stops with the
    error Invalid Descriptor Index trying to fetch the column name
    using SQLGetData(). The work-around sets the column with for this
    query to 8K, avoiding SQLGetData(). Thanks to Fernando Sáenz-Pérez
    for reporting and providing access to a server.

Package protobufs

  • TEST: Disable tests that require unbounded integers when GMP is
    not included.

Package ssl

  • PORT: Issue#160: OpenSSL 3.0. Drops option padding(sslv23) from

Package swipl-win

  • CLEANUP: Avoid deprecated endl for Qt >= 5.14

Package xpce

  • ADDED: PceEmacs server: control whether we kill the editor after
    the command completes. Made available in in the edit script as
    edit --no-wait file:line.


Is there any reason why version 8.5.0 for Mac is not available on the download page as usual?



Forgot to upload …