Ann: SWI-Prolog 9.3.11

Dear SWI-Prolog user,

SWI-Prolog 9.3.11 is ready for download. Highlights:

Changes

  • Added swi-prolog-win package to Ubuntu PPA distribution.
    This provides the console with menus app swipl-win.
  • Reorganize file layout for MacOS bundle to conform to
    Apple’s requirements. This prevented code signing the
    bundle. Unfortunately the code is still not signed as
    that prevents using Xquartz (for xpce) and the Python
    and Java bindings.
  • Changed the C API functions that return a Boolean result
    to use <stdbool.h> bool type. Use the bool type
    througout the core sources. Packages have only been
    updated to work with or without <stdbool.h>, so they
    can remain shared with the stable releases.
  • Support Alias(Dir) syntax in py_add_lib_dir/1,2.

Fixes

  • Fixed a possible stack corruption in PL_unify_text(),
    found by @maren using read_file_to_string/3 on a large
    input.
  • Fixed race conditions in thread_signal/2, possibly leading
    to use after free.
  • Fixes resources parsing in xpce that caused xpce to stop
    working on systems when a language configuration (locale)
    that uses something else than the . for floating point
    numbers.
  • Fixed several tests to be more robust.
  • Fixed several portability issues with help of @mgondan1

SWI-Prolog Changelog since version 9.3.10

  • DOC: Update 32/64 bit notes

  • FIXED: #1317 thread_exit/1 can crash after changes to thread_signal/2.

  • APPLE: Add code signing for creating the .dmg image The image is
    signed if $CODESIGN_ID is set to the certificate id to be used
    with codesign -s. Unfortunately, this is not the whole story.
    As a result, we can no longer load shared object that are not part
    of the disk image, which means we cannot use Xquartz, Python or Java.

  • MODIFIED: Apple: better support MacOS bundle hierarchy Make the binary
    bundle match the MacOS guidelines. In particular

    • Move the Prolog “home” to Contents/Resources/swipl
    • Move modules (*.so files) to Contents/Plugins/swipl
    • Remove the need for swipl.home by using compiled-in relative
      path to find the home.
    • Added a flag bundle to make the system aware it is using the
      bundle hierarchy.
    • Moved foreign path definitions from init.pl to the
      library(shlib), where we now use conditional compilation to get
      the paths right for the target platform.
  • FIX: include stdbool

  • DOC: Explain issues and features of the C-API Boolean functions.

  • DOC: Fix bool types for PL_* functions

  • MODIFIED: Return type of most C API functions is now bool This
    should have very few consequences to applications, even preserving
    binary compatibility. The change adopts the upcoming C23 standard
    and makes it easier to understand the API.

  • CLEANUP: Use true and false throughout the core C code.

  • COMPAT: Adopt stdbool.h This patch avoids conflicts the type bool
    and its values true and false as defined in <stdbool.h> while
    these will be promoted to C keywords in the upcoming C23 standard.

  • FIXED: Race conditions in thread_signal/2 and friends.

  • TEST: Avoid interference between thread_wait tests. Tests send
    concurrent signals using a detached thread that could still be running,
    affecting subsequent tests.

  • TEST: Test for getting an I/O error on a broken pipe may succeed.
    Turns out the pipe size on Asahi/Fedoare 40 is 256K. Now writing a
    max of 1.2Mb rather than 100K.

  • ADDED: Prolog flag dir_sep Complements path_sep and path_max
    to get properties on the file naming conventions and limits.

  • FIXED: #1311 Possible stack corruption in PL_unify_text() Cause of this
    crash is a failure to verify return from PL_new_term_ref(). There were
    more issues with the code though. Lack of local space could corrupt
    a string living on the stack. We can discard the term reference.

  • INSTALL: modify cmake ilink to install symlink in CMAKE_INSTALL_PREFIX
    This ensures that when installing package selections to different
    install prefixes, the links end up in the right location. This is
    used by package maintainers to generate multiple packages from the
    same build.

  • FIXED: swipl-win.exe: Run/New thread menu

  • SNAP: added libxinerama1

Package debian

  • ADDED: Debian/PPA package swi-prolog-win This package provides
    the Qt console.

Package archive

  • TEST: Try to make this pass using address sanitizer.

Package clib

  • COMPAT: Use preferred C API.

  • COMPAT: Avoid conflicts over th stdbool.h constants true and false.

Package jpl

  • COMPAT: Get bool from stdbool.h

  • TEST: Disable prolog-in-java tests when using a sanitizer

  • INSTALL: modify cmake ilink calls to not include CMAKE_INSTALL_PREFIX

Package odbc

  • COMPAT: Avoid conflicts over th stdbool.h constants true and false.

Package semweb

  • FIXED: rdf_murmer_hash def and decl type agreement

  • FIXED: #116 Allow for blank node as GRAPH label. Jos de Roo.

Package swipl-win

  • INSTALL: modify cmake ilink calls to not include CMAKE_INSTALL_PREFIX

Package swipy

  • FIXED: py_add_lib_dir/1 and py_add_lib_dir/2 py_add_lib_dir/1,
    when used as a directive, added the path as first, while the docs
    claim last. py_add_lib_dir/1,2 now accept Alias(Sub) paths.

Package xpce

  • FIXED: Types for AllocColor

  • PORT: Changed XPM Windows emulation from K&R to ANSI C Modified using
    GitHub - license-fn/un-obsolize: Convert obsolete (K&R) C function declarations and definitions to ANSI equivalents.

  • FIX: conflicting declarations noticed only by clang (not gcc)

  • SCALE: Replace X11 right_ptr cursors by arrow. Only the major
    cursors of the X11 cursor font are replaced by scalable cursors from
    the theme. Using right_ptr therefore shows a very tiny cursor on
    hi-res screens.

  • FIXED: Possible buffer overrun in list_browser->insert_self

  • FIXED: #35 new resource length as e.g. 3.8mm are locale sensitive
    This causes xpce tools to fail to start if the locale defines the
    decimal point to be anything different from ‘.’.

2 Likes