Ann: SWI-Prolog 10.1.2

Dear SWI-Prolog user,

SWI-Prolog 10.1.2 is ready for download. Highlights:

  • Many integer conversion issues resolved by @mgondan1. Mostly
    makes the code satisfy the policies of the R-project. It does
    clean up the code base though. Same patches switches a lot more
    code to use the C11 bool type.
  • Improve build using Homebrew dependencies (MacOS) as well as
    selecting gcc (versions) when building on MacOS.
  • Fixes to write_term/2 option handling. Found by Joachim Schimpf
    while researching for PIP.
  • Fixed format/2 handling of ~d using big int expressions that
    result in a “small” integer.
  • XPCE updates: PceEmacs: too narrow (< 80 columns), Further LSP
    integration fixes; Epilog: underline in scrollbar; class text:
    underline was rendered as overline. Improve error reporting.

All these changes will eventually be merged into 10.0 (stable) after
the cleanup for the R-project is complete and the patches function properly
in the development version for some weeks.

Enjoy --- Jan

SWI-Prolog Changelog since version 10.1.1

[Jan 24 2026]

  • FIXED: write_term/2: handle partial(true) for backquoted text.

  • FIXED: write_term/2 using option partial(true) to separate quoted
    objects. Found by Joachim Schimpf

  • DOC: write_term/2: handling of back_quotes and module options

[Jan 23 2026]

  • FIXED: write_term/3 and friends to get default back_quotes from flags.

[Jan 22 2026]

  • PORT: Better support for Homebrew dependencies (MacOS) This ensures
    SDL3 comes from Homebrew if both provided by Macports and Homebrew and
    configure maps gcc=14 to Homebrew gcc.

  • PORT: Make configure work for build.gcc=15 on MacOS. Compiler is
    called gcc-mp-15 and it does not support -g3.

[Jan 21 2026]

  • ENHANCED: edit/1: merging module and file. If a spec resolves to a
    file and module with the same name, edit the module.

[Jan 19 2026]

  • FIXED: Allow building only the core system (no packages at all).
    Stop installing libraries that depend on packages and do not warn if
    library(editline) is not present.

  • FIXED: #1436 check_installation/0: check editline, also on Windows.

  • FIXED: CpuCount() typing

[Jan 18 2026]

  • FIXED: Type issues on 32 bit platforms

[Jan 15 2026]

  • CLEANUP: Types Restore API affecting type changes of -Wconversion
    cleanup, introduce new integer aliases and enums to replace int
    with more appropriate types. Propagate these through the system
    (incomplete).

[Jan 10 2026]

  • CLEANUP: Make likely/unlikely silent.

[Jan 5 2026]

  • FIXED: #1431 format/2: handling ~d on gmp evaluation returning
    a small int.

Package archive

[Jan 22 2026]

  • CLEANUP: avoid -Wconversion warnings

Package bdb

[Jan 22 2026]

  • CLEANUP: Avoid -Wconversion warnings You might wish to check if the
    assertions are needed/solve a problem.

Package clib

[Jan 18 2026]

  • ENHANCE: use size_t to avoid -Wconversion errors I also added a few
    casts I considered safe. Dubious casts are highlighted.
    [Nov 20 2025]

  • DOC: minor fix in comment

Package cpp

[Jan 23 2026]

  • ENHANCED: make it easier to generate the standard form of exceptions

[Jan 22 2026]

  • CLEANUP: add more default qid=0

[Jan 21 2026]

  • CLEANUP: Plx_exception() has default qid=0

[Jan 20 2026]

  • CLEANUP: change PL_exception() to Plx_exception()

[Jan 12 2026]

  • ASAN: add comment

[Jan 9 2026]

  • ASAN: avoid uninitialized buffer in fread This silences an ASAN error
    mentioned in ASAN: Container overflow · Issue #105 · SWI-Prolog/packages-cpp · GitHub.

    1. I don’t really see the point, but maybe clang’s ASAN does not like
      to write into “reserved” but not initialized memory areas.
    2. Alternatively, and that may be the reason for the ASAN complaint:
      buf in the outer std::string(buf, size) function is not “officially”
      initialized.

Package http

[Jan 25 2026]

  • ENHANCED: http_post_data/3 to raise an exception if the data is
    not recognised.

[Jan 22 2026]

  • CLEANUP: avoid -Wconversion warnings

Package jpl

[Jan 24 2026]

  • CLEANUP: avoid -Wconversion, improve UTF16 support On systems with
    wchar_t is 4 bytes (pretty much anything but Windows), convert
    Prolog Unicode code points > 0xffff to/from UTF-16.

Package json

[Jan 22 2026]

  • CLEANUP: avoid -Wconversion warning

Package sgml

[Jan 22 2026]

  • CLEANUP: avoid -Wconversion warnings

Package ssl

[Jan 22 2026]

  • CLEANUP: avoid -Wconversion warnings

Package table

[Jan 22 2026]

  • CLEANUP: avoid -Wconversion warnings

Package tipc

[Jan 23 2026]

  • CLEANUP: Modernise exception handling, use bool and update PlDoc

  • CLEANUP: avoid -Wconversion warnings

Package utf8proc

[Jan 22 2026]

  • CLEANUP: avoid -Wconversion warnings

Package xpce

[Jan 26 2026]

  • CLEANUP: Avoid suspicious sizeof() handling warning by clangd

[Jan 22 2026]

  • FIXED: Use font<-average_char_width for width computations This
    used to be font<-ex, but this is the height of the x character.
    This notably fixes the default width of PceEmacs windows to hold 80
    characters rather than a few less (depending on the font).

  • FIXED: PceEmacs Prolog mode: find-references to avoid duplicates.

[Jan 21 2026]

  • FIXED: class text_buffer: LSP position reporting for wide-character
    buffers.

  • FIXED: Epilog: underline could continue in scrollbar.

[Jan 19 2026]

  • FIXED: text->underline. Underline was relative to top instead
    of base.

[Jan 13 2026]

  • ENHANCED: When opening one of xpce’s manual tools, do not show @manual.
    This additional window is often needed and especially on systems that
    do not allow for window placement, this is annoying.

[Jan 7 2026]

  • ENHANCED: Make most errors that result from buggy program print
    a backtrace

[Jan 5 2026]

  • ADDED: PceEmacs: (empty) markdown mode. Allows for user extension,
    so we can play with markdown LSP servers.

Package yaml

[Jan 22 2026]

  • CLEANUP: avoid -Wconversion warnings
4 Likes