Ann: SWI-Prolog 9.2.4 (stable)

Dear SWI-Prolog user,

SWI-Prolog 9.2.4 (stable) is ready for download. This mostly fixes
some bugs. See below. The library(http/http_load), which allows
compile directly from HTTP(s) URLs now by default verifies the
certificate. This is a MODIFIED, but could just as well be
interpreted as SECURITY.

Enjoy --- Jan

SWI-Prolog Changelog since version 9.2.3

  • PORT: Fix case conversion for Unicode characters on Windows.

  • FIXED: prolog_walk_code/1: no matching rule from goals reached from
    a :- initialization.

  • PORT: Include Ubuntu 24.04 (Noble Nombat) in PPA builds

  • PORT: Use -funwind-tables on ARM systems with glibc, also for clang

  • PORT: Deal with Android android-execinfo library.

  • FIXED: generation of swipl.pc pkg-config file Now uses LIBSWIPL_DIR to
    get the correct -L flag when the system is installed as global library.

  • FIXED: Reconsult when the loaded code sets the trace flag on
    a predicate. This was due to a conflict over the predicate flags.
    As the flags field was widened, we can avoid these problems.

  • FIXED: WASM: fix fid arg position in this.query call in
    __call_yieldable

  • FIXED: #1262 upcase_atom/2 and friends on ISO → wide If input is
    ISO-Latin-1 and the converted character requires wide characters
    the system trapped an assertion error. Now correctly converts to
    wide characters.

  • FIXED: Clang handling of max_integer_size Clang cannot handle
    setjmp()/longjmp in PL_next_solution(), but it can in the simple
    evalExpression() function. This does not have measurable impact on
    performance, so we enabled this as default. This fixes limiting the
    integer size for WASM and Clang builds on Linux. This problem did
    not surface on the MacOS version.

  • FIXED: comparison of MPZ and MPQ with 64 bit integers if long is
    4 bytes

  • FIXED: Normalize LibBF numbers created from 64 bit integers on VS2022
    VS2022 does not support 128-bit integers and therefore we must use
    32-bit “limbs”

  • COMPAT: Introduce abstract types for PL_new_hash_table() and friends
    Rather than hard coded void* we now use table_key_t and
    table_value_t. These types are also introduced in the development
    series, where the type changes.

Package http

  • MODIFIED: library(http/http_load) to verify certificates This library
    allows for loading files from http/https URLs. It used to skip
    certificate checking. Checking is now enabled and the Option argument
    may be used to disable it (using the cert_verify_hook option).

  • FIXED: Undefined predicate schedule_gc/2 in library(http/http_session)

Package sweep

  • FIXED: workaround Emacs incompatibility with certain locales The Emacs
    Elisp reader only works with locales that have “.” as their decimal
    separator, but Prolog initialization sets up the locale according to
    the environment variables. Therefore we need to reset the locale
    after initializing Prolog in case the environment prescribes a
    locale with a different decimal separator, such as fr_FR. See also
    loading sweep trashes emacs hashtable management · Issue #1 · SWI-Prolog/packages-sweep · GitHub

Package swipy

  • DOC: janus.query() etc optional arguments is called inputs

  • FIXED: Memory leak when generating a Prolog dict from a Python dict

  • FIXED: Wrong Python refcount update. Reported by Jerry James as !8.
    That is is not entirely correct though.

1 Like