Ann: SWI-Prolog 8.5.6

Dear SWI-Prolog user,

SWI-Prolog 8.5.6 is ready for download. Most of the updates concern
portability issues. Notably Matt Lilley updated the SSL interface to
compile cleanly using OpenSSL 3.x. Thanks! Most patches only affect a
small minority of the users. Please examine the detailed log below.

Enjoy --- Jan

SWI-Prolog Changelog since version 8.5.5

  • FIXED: call_residue_vars/2: if GC performs early reset on an attvar
    it is incorrectly considered residual.

  • DOC: Fixed PL_get_dict_key() docs. Matthijs van Otterdijk.

  • ENHANCED: Use mallinfo2 when available. By @mgodan1.

  • CLEANUP: Remove code from DCG translation that moves unifications
    immediately following the neck of the clause into the head.
    Since this optimization is done by the compiler anyway this is no
    longer needed. This allows for creating SSU DCG rules on top of the
    existing compilation.

  • ADDED: valid_term_position/2 to help debug term_expansion/4

  • DOC: Fixed error in CMake build script for the manual.

  • DOC: Fixed LaTeX errors.

  • FIXED: Another postfix operator issue as a regression to recent fixes
    on postfix operator handling. Affects the R interface (reported
    by Nicos Angelopoulos for real, but probably rserve_client is also

  • DOC: clarify module issues wrt. macro expansion and explain what is
    affected by import modules.

  • DOC: read_term/2: quasi quotation layout

  • TEST: read_term/2 subterm_position option. Contributed by Peter

  • PORT: Added missing include for <errno.h>

  • FIXED: Possible crash in copy_term/4 and copy_term_nat/4.

  • ADDED: mapsubterms_var/3 as an alternative to mapsubterms/3 that also
    maps variables.

  • ENHANCED: If a package is available both globally and locally (per
    user), ignore the global one silently rather than with a warning.

  • ADDED: pack_install/2: option global(Boolean) to explicitly install
    a package for the user or globally.

  • BUILD: Include debug info with PGO build.

  • CMAKE: let Threads use -pthread instead of -lpthread This can link
    other needed libraries, and fix building on riscv64.

  • FIXED: Avoid warnings about uncaught exceptions from write_length/3
    in print_term/2.

  • ENHANCED: Edits commit 18690d80fbdc842a5bad3da1fb81a083e55b1b24.
    Forgotten amend and already pushed to origin.

  • FIXED: qsave_program/2: add missing load_module for shlib The
    predicate current_foreign_library is used which is from the module
    shlib. Unfortunately it is not imported though, which makes it
    impossible to use qsave without autoloading enabled.

    [edited by JW: use autoload/2 and also deal with autoload_all/1

Package bench

  • BUILD: Fixed running the benchmarks if GMP is not provided (
    causes an integer overflow).

Package clib

  • ENHANCED: Use mallinfo2() when available. By @mgodan1.

  • FIXED: #pragma inside an if () else goes wrong on gcc.

  • PORT: Silence deprecated vfork() message.

Package jpl

  • CLEANUP: Type correctness in debug messages.

Package ssl

  • PORT: Make the package use the OpenSSL 3.0 API rather than
    the deprecated 1.1 API when compiled against OpenSSL 3. Patches
    Contributed by Matt Lilley.

  • PORT: Silence SecKeyChainOPen deprecation for MacOS.

Package xpce

  • CLEANUP: workaround to suppress a false positive warning from gcc-11
    and avoid a pragma at the same time

  • FIXED: Transfer selection from xpce as UTF-8 when requested using a
    media type (text/plain;charset=utf-8).

  • FIXED: Handle new message elements for generating feedback in PceEmacs.

  • FIXED: for MacOS