# Ann: SWI-Prolog 10.1.4

**URL:** <https://swi-prolog.discourse.group/t/ann-swi-prolog-10-1-4/9527>\
**Category:** Releases\
**Created:** [February 22, 2026, 3:02pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-10-1-4/9527 "2026-02-22T15:02:46Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![jan](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/jan/32/4_2.png) [@jan](https://swi-prolog.discourse.group/u/jan)\
**Post date:** [February 22, 2026, 3:02pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-10-1-4/9527/1 "2026-02-22T15:02:46Z")

</div>

Dear SWI-Prolog user,

SWI-Prolog 10.1.4 is ready for download. This notably fixes a couple of  
regressions from cleanup, adds more cleanup, fixes portability issues and  
adds a couple of goodies. Highlights:

- Fixed regression in dict and trie (tabling) code.

- Improve listing/1,2 support for thread-local predicates.

- GUI debugger to list clauses of thread-local predicates as they are  
visible from the thread being traces (as opposed to the thread of  
the GUI where they are typically empty).

- Improve TAB completion in CLI for files and notably for Prolog files  
and libraries.

- Windows and Google protocol buffer version portability issues.

# SWI-Prolog Changelog since version 10.1.3

- PORT: Exclude jvm.dll from CPack runtime dependencies

- ENHANCED: Command line (tab) completion - Tag directories with a  
trailing / - Do file name completion on `[prefix<tab>` - Do  
library completion on `library(prefix<tab>`.

- ENHANCED: error/warning messages for swipl-ld

- BUILD: We no longer need `cmake -E env ...` to run Prolog This seems  
to cause a hang in the Windows build xpce steps. Quite unclear why.

- FIXED: ansi\_get\_color/2: not supported on Windows.

- PPA: Added Ubuntu 26.04 (Resolute Raccoon)

- TEST: added tests for library(record)

- FIXED: reload\_foreign\_libraries/0. Failed with type error.

- TEST: Fixed Debug build test on Windows to avoid C stack overflow.  
Based on PR by Eric Tauber. This replacement builds on the new Prolog  
flag `build_type` and rewrites the test suite to use PlUnit.

- ADDED: Prolog flag `build_type`, representing the CMake build type  
used.

- FIXED: library(main): make spy options default to the user module.

- BUILD: added comments to scripts/configure

- BUILD: added comments to CMakeLists.txt for protobufs test

- DOC: clarified details of heap allocation

- PORT: Minimize C stack on MSVC debug builds.

- TEST: Skip test\_thread\_exit if alert signal == 0

- PORT: Include platform pthread headers and includes for pthread config.

- FIXED: #1465 Overflow issue in trie handling. This is the result of  
replacing an `int` incorrectly with `bool`.

- FIXED: PThreads4W exit crash in MSVC Debug builds Without this,  
the system crashes during process exit.

- ENHANCED: listing/1,2: show number of clauses in other threads.

- ADDED: listing/2: option thread(+ThreadId) This lists the clauses  
for a thread-local predicate as they can be seen for the given thread  
(rather than the calling thread).

- MODIFIED: Modified PL\_put\_dict() to be a `bool` function. All usage  
in packages assumed `bool` and this is a more consistent interface.  
Invalid keys now generate a fatal ABI error and dupiicate keys a normal  
Prolog exception. As this function is not used much and there is no  
clean way to fix the current bugs without changing the API we will  
backport this to the stable series as is.

- FIXED: dict\_pairs/3 could create dicts with duplicate keys.  
Mistake changing types to `bool`. This changes the dict ordering  
functions to return `_PL_dict_status_t`, which is now also returned  
by PL\_put\_dict().

## Package clib

- TEST: Raise timeout for UDP tests. Could fail.

## Package protobufs

- PORT: python3 might not be present and Python is not needed to build  
the package

- TEST: ensure tests are run sequentially

- ENHANCED: protoc 3.21.12 (unverified\_lazy field)

## Package xpce

- ENHANCED: PceEmacs to list thread-local clauses. If a PceEmacs window  
is embedded in the debugger, fetch the target debug thread and list  
the clauses as the debuggee sees them.
