Ann: SWI-Prolog 9.2.7 (stable)

Dear SWI-Prolog user,

SWI-Prolog 9.2.7 is ready for download. This backports several bug
fixes and improvements that should have no backward compatibility
issues. XPCE, mainly used for the dev tools, is updated to the
development version, providing support for hi-res displays on X11.

Enjoy --- Jan

SWI-Prolog Changelog since version 9.2.6

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

  • 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

  • FIXED: possibly early GC of arguments for call_cleanup/2 Also affects
    '$bags':cleanup_bag/2. The early GC can happen if a signal arrives
    when these predicates are being called and the signal handler calls GC.

  • FIXED: use_module(M, [Pred as Alias]) for meta-predicates

  • DOC: #1303 EBNF description of sequence//3 and sequence//5.

  • FIXED: print_term/2 to add a space behind : when printing dicts
    vertically. This avoids syntax error due to symbol glueing and
    looks prettier.

  • FIXED: Handle “apps” from packs

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.

  • PORT: Added library(uuid) to WASM version

  • ADDED: is_uuid/1 to test that an atom is a valid UUID

Package http

  • FIXED: http_open/3 using keep-alive connections When multiple threads
    are connecting to the same host, it may give the same connection to
    multiple threads if a connection was already closed by the peer.

  • FIXED: http_open/3 using Keep-alive This lead to errors if the number
    of cached connections was exceeded (fixed). The library now defines
    the cache parameters as settings, such that applications can change
    them.

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 pengines

  • FIZED: pass SSL Options when destroying pengines

  • FIXED: pass SSL options (such as client certificate) to probe.
    Needed to make pengines work in a 2-way SSL setup.

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

  • PORT: Require C+±17 (was C+±11)

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

  • 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 ‘.’.

  • PORT: Be more critical on the reported physical dimensions of the
    screen.

  • SCALE: Scale stepper/combobox indicator for class text_item
    and related.

  • SCALE: Properly scale caret in class text and text_item.

  • SCALE: Several dimensions concerning widgets

  • SCALE: Make GUI tracer margin scale with bitmaps.

  • SCALE: Wrong default for image.scale Using display<-size
    rather than display<-dpi

  • ENHANCED: Use Xrandr extension to get DPI resolution of the display
    This seems to provide more reliable results.

  • SCALE: Specify default arrow dimensions in mm rather than px.

  • FIXED: Compute the GUI tracer stack layout based on the font.

  • FIXED: Compute thread-monitor dimensions based on the font

  • FIXED: Make sure image<-size of built-in images respect the scale

  • FIXED: #34 Allow for @display?dpi if there is no display. This notably
    allows for building xpce when there is no DISPLAY.

  • MODIFIED: Default scale for fonts and images now depends on DPI This
    implies that one should get a reasonable default if the X server
    provides the right DPI value. If not, setting e.g.

    display.dpi: 200
    

    in Defaults may be used. Subsequently, font.scale and/or image.scale
    may be used to fine tune the sizes.

  • ADDED: Better support hir-res screens. This patch provides
    @display<-dpi, image.scale and some additional features to allow
    scaling images and general sizes. It should work fully automatically
    on systems where the DPI can be computed properly. Otherwise the
    DPI of the display can be overruled in the resource file.

  • ENHANCED: Use screen resolution to scale text cursor

  • ADDED: Provide support to get and overrule the screen resolution (DPI)

  • ADDED: Modifiable resolution (DPI).

  • ADDED: implement display<-dots_per_inch for X11

1 Like