Ann: SWI-Prolog 9.3.9

Dear SWI-Prolog user,

I forgot to send this when making the release. Sorry.

SWI-Prolog 9.3.9 is ready for download. It comes with quite a few
fixes thanks to contributions and bug reports. Highlights:

  • Packs now support “apps”. By adding a directory app to a pack
    and adding a file <name>.pl, swipl <name> [arg ...] runs the
    application.

  • During compilation, relative file names are resolved relative to
    the file being loaded only. Older versions first searched
    relative to the file and then relative to the process working
    directory. The latter no longer happens, which makes loading
    sources more reliable and improves security.

  • Various portability patches, notably for OpenBSD, LibreSSL and
    MacOS.

  • XPCE GUI provides better support for hi-res displays by allowing
    dimension resources in mm, and scaling bitmaps. This should
    work out of the box on systems on which the display DPI detection
    is correct. Otherwise the xpce Defaults file can be used to
    overrule the detected DPI. Font and image sizing can be specified
    independently. Currently only fully supported on X11.

    Cheers — Jan

SWI-Prolog Changelog since version 9.3.8

  • 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

  • FIXED: Handling of indirect data types in delimited continuations.

  • BUILD: Added CMake options SWIPL_CC and SWIPL_CXX This selects the
    defaults for the c_cc and c_cxx flags. Distributions should
    normally set these to the common C and C++ compiler of the platform.
    Local builds typically leave them default, setting these flags to
    the same as used to build SWI-Prolog.

  • FIXED: #1300 Modify prefix block operator to plain term if there is
    no argument.

  • TEST: make string_upper/2 test succeed if LANG=C

  • FIXED: qlf app to not import the compiled library into user.
    This leads to conflicts.

  • MODIFIED: drop library(checkselect) and library(checklast). These
    modules help debugging reordered arguments for select/3 and last/2
    from old non-(de-facto)-standard to common practice long ago.

  • DOC: Improved docs for prolog_alert_signal/2.

  • FIXED: swipl pack install . to install using a symlink.

  • MODIFIED: absolute_file_name/3 relative to source Up to this patch,
    predicates that used absolute_file_name/3 (including load_files/2,
    use_module/1, etc) interpreted plain non-absolute names relative
    to the source and on failure, relative to the working directory.
    As of this patch we only consider files relative to the source.

  • PORT: Another iteration trying to tame MacOS.

  • PORT: Deal with wcsxfrm() nor immediately returning required size

Package clib

  • PORT: Proper ip6 support detection for OpenBSD

Package cpp

  • TEST: Disable scoped term tests for 9.2.x

Package http

  • DOC: Fix building docs in single threaded version.

Package semweb

  • DOC: Clarify rdf_retractall/3 and rdf_load/2

Package ssl

  • CLEANUP: Abstract from OpenSSL/LibreSSL versions and use more CMake

  • PORT: Fix building with modern LibreSSL versions LibreSSL 3.5.0.

    Most structs that were previously defined in the following headers
    are now opaque as they are in OpenSSL 1.1:
    bio.h, bn.h, comp.h, dh.h, dsa.h, evp.h, hmac.h, ocsp.h, rsa.h,
    x509.h, x509v3.h, x509_vfy.h

Package xpce

  • 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

  • PORT: Make compile on Windows after switching to getaddrinfo()

  • PORT: #1299 Replace deprecated gethostbyname() by getaddrinfo()

  • PORT: Initialization of builtin_names. This used two structs,
    one for initialization (bname) and one for access (name) due to the
    lack of support for designated initializers in old C. We can now do
    it cleanly.

  • PORT: Work around MacOS 15 (beta) pulling socket.h with sys/ioctl.h

2 Likes