# Ann: SWI-Prolog 9.2.4 (stable)

**URL:** <https://swi-prolog.discourse.group/t/ann-swi-prolog-9-2-4-stable/7407>\
**Category:** Releases\
**Created:** [April 26, 2024, 4:23pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-9-2-4-stable/7407 "2024-04-26T16:23:14Z")\
**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:** [April 26, 2024, 4:23pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-9-2-4-stable/7407/1 "2024-04-26T16:23:14Z")

</div>

Dear SWI-Prolog user,

SWI-Prolog 9.2.4 (stable) is ready for download. This mostly fixes  
some bugs. See below. The `library(http/http_load)`, which allows  
compile directly from HTTP(s) URLs now by default verifies the  
certificate. This is a MODIFIED, but could just as well be  
interpreted as SECURITY.

```
Enjoy --- Jan

```

# SWI-Prolog Changelog since version 9.2.3

- PORT: Fix case conversion for Unicode characters on Windows.

- FIXED: prolog\_walk\_code/1: no matching rule from goals reached from  
a :- initialization.

- PORT: Include Ubuntu 24.04 (Noble Nombat) in PPA builds

- PORT: Use -funwind-tables on ARM systems with glibc, also for clang

- PORT: Deal with Android `android-execinfo` library.

- FIXED: generation of swipl.pc pkg-config file Now uses LIBSWIPL\_DIR to  
get the correct -L flag when the system is installed as global library.

- FIXED: Reconsult when the loaded code sets the `trace` flag on  
a predicate. This was due to a conflict over the predicate flags.  
As the `flags` field was widened, we can avoid these problems.

- FIXED: WASM: fix fid arg position in this.query call in  
\_\_call\_yieldable

- FIXED: #1262 upcase\_atom/2 and friends on ISO → wide If input is  
ISO-Latin-1 and the converted character requires wide characters  
the system trapped an assertion error. Now correctly converts to  
wide characters.

- FIXED: Clang handling of `max_integer_size` Clang cannot handle  
setjmp()/longjmp in PL\_next\_solution(), but it can in the simple  
evalExpression() function. This does not have measurable impact on  
performance, so we enabled this as default. This fixes limiting the  
integer size for WASM and Clang builds on Linux. This problem did  
not surface on the MacOS version.

- FIXED: comparison of MPZ and MPQ with 64 bit integers if long is  
4 bytes

- FIXED: Normalize LibBF numbers created from 64 bit integers on VS2022  
VS2022 does not support 128-bit integers and therefore we must use  
32-bit “limbs”

- COMPAT: Introduce abstract types for PL\_new\_hash\_table() and friends  
Rather than hard coded `void*` we now use `table_key_t` and  
`table_value_t`. These types are also introduced in the development  
series, where the type changes.

## Package http

- MODIFIED: library(http/http\_load) to verify certificates This library  
allows for loading files from http/https URLs. It used to skip  
certificate checking. Checking is now enabled and the Option argument  
may be used to disable it (using the `cert_verify_hook` option).

- FIXED: Undefined predicate schedule\_gc/2 in library(http/http\_session)

## Package sweep

- FIXED: workaround Emacs incompatibility with certain locales The Emacs  
Elisp reader only works with locales that have “.” as their decimal  
separator, but Prolog initialization sets up the locale according to  
the environment variables. Therefore we need to reset the locale  
after initializing Prolog in case the environment prescribes a  
locale with a different decimal separator, such as fr\_FR. See also  
[loading sweep trashes emacs hashtable management · Issue #1 · SWI-Prolog/packages-sweep · GitHub](https://github.com/SWI-Prolog/packages-sweep/issues/1)

## Package swipy

- DOC: janus.query() etc optional arguments is called `inputs`

- FIXED: Memory leak when generating a Prolog dict from a Python dict

- FIXED: Wrong Python refcount update. Reported by Jerry James as !8.  
That is is not entirely correct though.
