Did you know ... Search Documentation:
Title for pldoc(default)
Branch: development (switch to stable),
version to version

SWI-Prolog Changelog from version 10.1.2 to 10.1.3

[Feb 13 2026]

  • CLEANUP: Avoid unreferenced variable warning for MSVC

[Feb 12 2026]

  • BUILD: MSVC Sanitize build
  • TEST: Windows pipe test by using absolute batch file path The pipe:cat1 test was failing because the batch file path was relative. cmd /c couldn't find pltest-XXXX.bat. Fixed using absolute_file_name/2.
  • BUILD: Use proper CMake dependencies for building the INDEX.pl files Since we no longer merge the package library files with the main library and since CMake has evolved, we can get rid of the ugly "run always" approach to building the INDEX.pl files and create a proper custom rule with the proper dependencies.

[Feb 11 2026]

  • FIXED: Hashing over uninitialized memory on 32-bit systems. On 32-bit systems, clause references are created in part from unitialized memory. This leads to crashes in atom-gc for clause references.
  • TEST: Add alternative bitint term hash for 32 bit engines.
  • PORT: Remove /D_DEBUG and /DO_DEBUG from MSVC Sanitize build flags MSVC AddressSanitizer requires the release CRT (/MD), but /D_DEBUG causes the STL to reference debug-CRT symbols (_CrtDbgReport) and makes Python headers demand python3XX_d.lib.

[Feb 10 2026]

  • PORT: MSVC debug build CRT mismatch for plugins
  • PORT: MSVC debug build: variadic macros and PRETTY_FUNCTION
  • PORT: Set CMAKE_MSVC_RUNTIME_LIBRARY globally for MSVC builds
  • PORT: Fix MSVC C4334 warning in pl-buffer.c
  • PORT: Drop xpce on < 64 bit platforms.
  • BUILD: Extend build_home.pl to support multi-config generators There was specific code to support Microsoft Visual Studio. This patch supports multi-config generators on platforms that leave the modules in the package directories such as ninja -G "Ninja Multi-Config"

[Feb 9 2026]

  • PORT: Avoid undefined ms_snprintf() and renamed to c99_snprintf().

[Feb 8 2026]

  • PORT: Add /EHsc to MAKE_CXX_FLAGS for MSVC. Thanks to Eric Tauber.
  • CLEANUP: Avoid implict enum conversion warnings. Based on #1445 by Eric Tauber.

[Feb 6 2026]

  • FIXED: Make PL_query(PL_QUERY_HALTING) return true inside atexit() handlers. This addresses the cleanup in package nlp cleanup issues.

[Feb 5 2026]

  • PORT: Make exit() work properly in Windows with Asan and Debug enabled. Thanks to Eric Tauber.

[Feb 4 2026]

  • PORT: Avoid calling sleep() after Lsan detects a leak.
  • PORT: Updated scripts/macos-deps.h for SDL3 Updated version and build instructions for building a universal binary.
  • ADDED: check_installation/0: report OpenSSL version

[Feb 2 2026]

  • PORT: Exclude LeakSanitizer code on Windows (MSVC ASan lacks LSan support)

[Feb 3 2026]

  • FIXED: Bignum allocation issues. This may lead to memory corruption on LibBF as well as using GMP on arithmetic errors. Found by Eric Taucher while debugging the MSVC compiled version.

[Feb 1 2026]

  • FIXED: Tabling with attributed variables: memory management. Make sure avm in trie_lookup_abstract() never points below the allocated buffer. It is not clear to me whether that is strictly necessary, but MSYS-2 using clang and Asan suggests it is. I do not understand why this is not reported using Asan under Linux. Surely this prevents reading below the buffer, causing a SEGV if it is tried anyway.

[Jan 31 2026]

  • TEST: term_hash/2 for indirect data types (bigints, floats) term_hash/2 is platform dependent as it hashes the binary representations of indirect types (big int, rational, float). The test succeeds if the produced hash is one of a set. When using LibBF, the hash also depends on whether the limb size is 32 bits or 64 bits. The C compiler must support a twice as wide integer type, i.e., the choice depends on HAVE_INT128.
  • FIXED: term_hash/2: exception when exhausting memory. Also cleanup types.
  • CLEANUP: Avoid reading uninitialized local variable. Not entirely sure why the popSegStack() can fail. Surely it does on the XSB tests from tests/xsb/sub_tests/xsb_test_sub.pl. In debug mode we set dstate such that accessing it crashes. This seems not to be the case.
  • FIXED: Windows: ms_snprintf null-termination bug for edge case

[Jan 30 2026]

  • PORT: Ensure default 4Mb C-stack on Windows Otherwise the default is 2Mb for MinGW and 1Mb for MSVC
  • FIXED: When specified, also set the C-stack limit for swipl-win

[Jan 29 2026]

  • PORT: Compile MacOSX bundle using gcc. This provides about 40% performance improvement.

[Jan 27 2026]

  • PORT: Support CMake < 3.24 Using CMake < 3.24 the build was broken due to the usage of cmake -E env ... -- ... We now omit that for older cmake version. This implies that building in e.g build.gcc=14 does not work for these versions.

Package clib

[Feb 8 2026]

  • CLEANUP: Bool types and avoid conversion warnings for Windows

[Jan 31 2026]

  • PORT: Ensure ssize_t is defined when using MSVC

Package http

[Feb 10 2026]

  • BUILD: Add zlib to doc generation dependencies

Package nlp

[Feb 6 2026]

  • FIXED: Crash during cleanup on Windows This patch replaces the pthread specific handling of the thread specific stemmers with __thread__ and using Prolog's ``PL_thread_at_exit'' to clean stemmers for terminated threads.

    This is a safe solution that also avoids the need for platform specific code.

Package xpce

[Feb 10 2026]

  • FIXED: undefined Dprintf and _T symbols in terminal.c debug code
  • FIXED: MSVC C4319 warning and potential bug in clearDFlagProgramObject() Cast mask to uintptr_t before applying bitwise NOT. Without this, ~mask produces a 32-bit result on Win64 (unsigned long is 32 bits) that gets zero-extended to 64-bit uintptr_t, incorrectly clearing the upper 32 bits of dflags.

[Feb 5 2026]

  • CLEANUP: Remove old deprecated usage of SunOS on_exit()

[Feb 2 2026]

  • ADDED: implementation for 3d rounded corners box r_3d_box()
  • ENHANCED: 3d effect rendering. Notably makes scrollbars look better.
  • PORT: Support MSVC
  • FIXED: GUI Tracer: remove non-functioning Help menu entries. Links to the manual and notably xpce manual seem unnecessary. Also removed the About as it is all part of the integrated Prolog IDE tools.

[Jan 28 2026]

  • ADDED: PceEmacs: associate emacs_<mode>_mode module with mode. And define style/2 and def_style/2 for style mapping. This is used by the experimental LSP client and should be used by the other modes, notably the Prolog mode.