Back

SWI-Prolog
Patches for SWI-Prolog x86
Windows
11 patches available
SWI-Prolog is a free implementation of the programming language Prolog, commonly used for teaching and semantic web applications.
SWI-Prolog x86 Version 9.2.9
Release Date
12/19/2024
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

SWI-Prolog Changelog from version 9.2.8 to 9.2.9$$$[Dec 19 2024]$$$$$$ADDED: trap/1: aliases for e.g. type_error -> type_error(_;_) So one does not need to remember the number of arguments.$$$[Dec 18 2024]$$$$$$FIXED: Preserve incremental property when creating a saved state.$$$[Dec 13 2024]$$$$$$BUILD: Add CMake option -DSWIPL_SO_VERSIONS to remove SOVERSION properties.$$$[Dec 12 2024]$$$$$$DOC: statistics/2 lost the keys globallimit; locallimit and traillimit. Reported by Jelmer Jellema.$$$[Dec 10 2024]$$$$$$FIXED: print_term/2: proper handling of operators(Ops) Needs to be kept consistent with write_options([... ignore_ops(IgnOps)]). Implemented consistency and deprecated the option. Reported by Mike Elston.$$$[Dec 9 2024]$$$$$$ADDED: library(prolog_colour): track CHR declaration locations$$$[Dec 4 2024]$$$$$$ENHANCED: pack_info/1: use colours and indicate autoload status.$$$MODIFIED: pack_install/2 option autoload(true) If present; the pack is installed as autoload pack regardless of autoload option in the meta-data. If the option is not present; the system asks the user to install as autoload library if the meta-data contains autoload(true).$$$If autoloading is not enabled; the INDEX.pl file that may appear in the pack is removed.$$$$$$This patch also adds swipl pack install --autoload ...$$$$$$FIXED: Make packs that provide an autoload library work again.$$$[Dec 3 2024]$$$$$$FIXED: cmake/TestSignalType.c for C++$$$PORT: Make cmake test for signal handler compatible with c23$$$[Nov 27 2024]$$$$$$FIXED: explain/1 to report the same predicate multiple times. This happens if the predicate is imported into multiple modules.$$$[Nov 25 2024]$$$$$$PORT: read_pending_input/3 and friends: make 16 bit encodings work on Windows.$$$[Nov 24 2024]$$$$$$FIXED: Pass command line arguments in class Prolog.$$$[Nov 22 2024]$$$$$$DOC: gcd/2 and lcm/2 are not operators.$$$[Nov 21 2024]$$$$$$FIXED: Use of undefined options in the toplevel. This makes the toplevel unusable if the Prolog flag iso is set to true.$$$PORT: WASM: Get rid of deprecated allocate; ALLOC_NORMAL and ALLOC_STACK$$$FIXED: WASM: Query.next() to set done to true on last answer. This must be false when used as iterator.$$$[Nov 20 2024]$$$$$$FIXED: WASM: for(x of prolog.query(...)) lost last answer$$$[Nov 28 2024]$$$$$$FIXED: prolog_trace_interception/4: setting up the hook good crash Backported from c1ce6d36d4e228536522ee49bad067c53a7f3b4b$$$[Nov 17 2024]$$$$$$FIXED: library(main): superfluous choice point in argv_options/3$$$[Nov 16 2024]$$$$$$ADDED: format/2: support ~:D The colon modifier for D forces the use of Prolog digit grouping using _.$$$[Nov 13 2024]$$$$$$TEST: Added ISO ambiguous operator tests. Marked two tests as blocked as these currently fail.$$$[Nov 8 2024]$$$$$$FIXED: #1331 Module issue in SICStus block/1 emulation. This patch also reformats the file; removes some dead code and remove the outdated restriction that it does not work on dynamic or foreign predicates.$$$[Nov 5 2024]$$$$$$FIXED: libary(prolog_pack): detection of valid download URLs.$$$[Nov 4 2024]$$$$$$FIXED: Installing a pack should attach the pack itself. This incorrectly registered the directory of the pack as a directory that provides packs instead.$$$ENHANCED: explain/1 to enumerate all instances of a non-qualified predicate.$$$[Nov 3 2024]$$$$$$BUILD: plunit requires clib package.$$$[Oct 31 2024]$$$$$$DOC: Update library(shlib) documentation.$$$[Oct 24 2024]$$$$$$BUILD: Make sure to clear DISPLAY when running xpce steps (one more)$$$Package bench$$$[Nov 13 2024]$$$$$$FIXED: Avoid division by zero if no tests are executed.$$$Package cpp$$$[Nov 2 2024]$$$$$$DEPRECATED: Officially deprecate version 1 of the C++ interface. For now; we will keep SWI-cpp.h in the distribution. We do not plan any updates to keep it in sync with changes to SWI-Prolog or the C++ standard. Users of this old interface are strongly encouraged to update their program.$$$DOC: removed all (version 2)$$$DOC: Delete documentation for version 1 of the C++ interface$$$Package http$$$[Dec 16 2024]$$$$$$ADDED: htmx_o
SWI-Prolog x86 Version 9.2.8
Release Date
10/23/2024
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

SWI-Prolog Changelog from version 9.2.7 to 9.2.8$$$[Oct 23 2024]$$$$$$BUILD: Make sure to clear DISPLAY when running xpce steps While the build works without a DISPLAY variable; an invalid variable causes the build to fail.$$$TEST: Disable collation_key/2 test for MacOS Macos Sequoia (15) wcsxfrm() returns garbage.$$$[Oct 22 2024]$$$$$$FIXED: Avoid corruption in setjmp()/longjmp() Clang demands using a volatile variable for protecting the throw environments parent. This is probably correct; although it seems weird to place this variable in a register.$$$[Oct 19 2024]$$$$$$ENHANCED: Add Prolog navigator to theme/dark.pl$$$[Oct 18 2024]$$$$$$FIXED: expand_term/2 to succeed twice when expanding a toplevel list. Results in duplicate clauses when compiling [f(1); f(2)].. Reported by Uwe Neumerkel.$$$FIXED: pack management: find available versions from wildcard URL. Patch by Nicos Angelopoulos$$$[Oct 17 2024]$$$$$$PORT: Added FreeBSD signal names to the name/number map. Contributed by Dewayne Geraghty$$$[Oct 15 2024]$$$$$$ENHANCED: file_autoload_directives/3: deal with library(main) hooks.$$$[Oct 8 2024]$$$$$$ADDED: PL_print_message() for calling print_message/2 from C$$$FIXED: print_term/2: indentation of right argument of infix term.$$$FIXED: Allow breakpoints in arg(C;T;F) I.e.; arg/3 calls with a known argument and the 3th index being a first var. These map to the B_ARG_CF VM instruction.
SWI-Prolog x86 Version 9.2.7
Release Date
9/3/2024
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

[Sep 3 2024]$$$$$$DOC: Explain issues and features of the C-API Boolean functions.$$$[Aug 31 2024]$$$$$$FIXED: Race conditions in thread_signal/2 and friends.$$$[Aug 30 2024]$$$$$$TEST: Avoid interference between thread_wait tests. Tests send concurrent signals using a detached thread that could still be running; affecting subsequent tests.$$$TEST: Test for getting an I/O error on a broken pipe may succeed. Turns out the pipe size on Asahi/Fedoare 40 is 256K. Now writing a max of 1.2Mb rather than 100K.$$$[Aug 29 2024]$$$$$$ADDED: Prolog flag dir_sep Complements path_sep and path_max to get properties on the file naming conventions and limits.$$$[Aug 28 2024]$$$$$$FIXED: #1311 Possible stack corruption in PL_unify_text() Cause of this crash is a failure to verify return from PL_new_term_ref(). There were more issues with the code though. Lack of local space could corrupt a string living on the stack. We can discard the term reference.$$$[Aug 27 2024]$$$$$$INSTALL: modify cmake ilink to install symlink in CMAKE_INSTALL_PREFIX This ensures that when installing package selections to different install prefixes; the links end up in the right location. This is used by package maintainers to generate multiple packages from the same build.$$$[Aug 26 2024]$$$$$$FIXED: swipl-win: Run/New thread menu$$$[Aug 24 2024]$$$$$$SNAP: added libxinerama1$$$[Aug 17 2024]$$$$$$FIXED: possibly early GC of arguments for call_cleanup/2 Also affects $bags:cleanup_bag/2. The early GC can happen if a signal arrives when these predicates are being called and the signal handler calls GC.$$$[Aug 15 2024]$$$$$$FIXED: use_module(M; [Pred as Alias]) for meta-predicates$$$[Aug 14 2024]$$$$$$DOC: #1303 EBNF description of sequence//3 and sequence//5.$$$[Aug 6 2024]$$$$$$FIXED: print_term/2 to add a space behind : when printing dicts vertically. This avoids syntax error due to symbol glueing and looks prettier.$$$[Aug 1 2024]$$$$$$FIXED: Handle apps from packs$$$Package archive$$$[Sep 1 2024]$$$$$$TEST: Try to make this pass using address sanitizer.$$$Package clib$$$[Sep 3 2024]$$$$$$COMPAT: Use preferred C API.$$$[Sep 2 2024]$$$$$$COMPAT: Avoid conflicts over th stdbool.h constants true and false.$$$[Aug 24 2024]$$$$$$PORT: Added library(uuid) to WASM version$$$[Aug 23 2024]$$$$$$ADDED: is_uuid/1 to test that an atom is a valid UUID$$$Package http$$$[Aug 21 2024]$$$$$$FIXED: http_open/3 using keep-alive connections When multiple threads are connecting to the same host; it may give the same connection to multiple threads if a connection was already closed by the peer.$$$[Aug 20 2024]$$$$$$FIXED: http_open/3 using Keep-alive This lead to errors if the number of cached connections was exceeded (fixed). The library now defines the cache parameters as settings; such that applications can change them.$$$Package jpl$$$[Sep 2 2024]$$$$$$COMPAT: Get bool from stdbool.h$$$[Sep 1 2024]$$$$$$TEST: Disable prolog-in-java tests when using a sanitizer$$$[Aug 27 2024]$$$$$$INSTALL: modify cmake ilink calls to not include CMAKE_INSTALL_PREFIX$$$Package odbc$$$[Sep 2 2024]$$$$$$COMPAT: Avoid conflicts over th stdbool.h constants true and false.$$$Package pengines$$$[Aug 21 2024]$$$$$$FIZED: pass SSL Options when destroying pengines$$$FIXED: pass SSL options (such as client certificate) to probe. Needed to make pengines work in a 2-way SSL setup.$$$Package semweb$$$[Apr 5 2024]$$$$$$FIXED: rdf_murmer_hash def and decl type agreement$$$[Aug 25 2024]$$$$$$FIXED: #116 Allow for blank node as GRAPH label. Jos de Roo.$$$Package swipl-win$$$[Aug 27 2024]$$$$$$INSTALL: modify cmake ilink calls to not include CMAKE_INSTALL_PREFIX$$$[Jun 14 2024]$$$$$$PORT: Require C++-17 (was C++-11)$$$Package swipy$$$[Aug 31 2024]$$$$$$FIXED: py_add_lib_dir/1 and py_add_lib_dir/2 py_add_lib_dir/1; when used as a directive; added the path as first; while the docs claim last. py_add_lib_dir/1;2 now accept Alias(Sub) paths.$$$Package xpce$$$[Aug 26 2024]$$$$$$SCALE: Replace X11 right_ptr cursors by arrow. Only the major cursors of the X11 cursor font are replaced by scalable cursors from the theme.
SWI-Prolog x86 Version 9.2.6
Release Date
7/24/2024
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

SWI-Prolog Changelog from version 9.2.5 to 9.2.6$$$[Jul 24 2024]$$$$$$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.
SWI-Prolog x86 Version 9.2.5
Release Date
5/20/2024
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

SWI-Prolog Changelog from version 9.2.4 to 9.2.5$$$[May 20 2024]$$$$$$FIXED: Generating variable names may conflict with user variables.$$$FIXED: Links to FAQ pages.$$$[May 15 2024]$$$$$$FIXED: Enabled pre-check for left-shift of large integers This both avoids possible GMP exceptions and allocating huge amounts of memory.$$$ENHANCED: Clarify shifting negative integers This patch also avoids relying on undefined C behavior.$$$FIXED: shift (<< and >>) of zero.$$$[May 14 2024]$$$$$$DOC: Add `--sigalert=NUM to swipl --help`.$$$[May 13 2024]$$$$$$FIXED: trie_gen_compiles/2;3: possible stack corruption$$$[May 12 2024]$$$$$$FIXED: #1277 crash in trie_gen_compiled/3.$$$[May 4 2024]$$$$$$CLEANUP: Avoid UBSAN error Test for arity > 0$$$[May 3 2024]$$$$$$CLEANUP: workaround for an UBSAN error UBSAN complained about a left shift of -1$$$CLEANUP: avoid UBSAN error in mkvmi.c The error is raised because we have e5 -= 0 for e5 == NULL$$$else-branch of if ( !e4 || (is_vmh && !e5) ) <=> e4 && !(is_vmh && !e5) <=> e4 && (!is_vmh || e5)$$$$$$Consequence is e4-- (which is fine) and e5 -= is_vmh which is either a noop* for is_vmh == 0 or fine for is_vmh != 0 && e5 != NULL.$$$$$$The noop case raises the error if e5 == NULL. * CLEANUP: Use unsigned int for variable table bitmap. This avoids an officially undefined shift in C.$$$$$$FIXED: Possibly undefined too large shift$$$FIXED: bf_set_si for -INT_MIN avoid undefined behavior raised by UBSAN$$$[May 2 2024]$$$$$$PORT: !1269 Deal with the type z_crc_t used by minizip zlib This works around a type conflict over get_crc_table(). Some headers define this as returning `z_crc_t*` without defining this type while others (Fedora 40) defines the function as `uint32_t*` and defines z_crc_t. This patch makes CMake check for the z_crc_t type and; if defined; use this definition.$$$[Apr 30 2024]$$$$$$DOC: write_term/2: document interaction between portrayed and numbervars$$$FIXED: Do not name binding variables if the answer options to not handle $VAR(N)$$$Package clib$$$[May 5 2024]$$$$$$CLEANUP: Use unsigned integers for bitmaps Avoids undefined shifts and makes the code more readable.$$$Package http$$$[May 19 2024]$$$$$$DOC: Server-sent events support$$$[May 17 2024]$$$$$$ADDED: Support for server-sent events These patches allow for streaming output which is enabled by default if the content-type is text/event-stream. Still needs documenting.$$$[May 12 2024]$$$$$$ADDED: http_reply_from_files/3: option not_found(+Action) Using not_found(404); reply using http_404/1 if the requested file does not exist.$$$[Apr 29 2024]$$$$$$MODIFIED: json_write/3 and friends: no spacing with width(0). If the option width(0) is provided; do not emit a space after a ; delimiting object fields. This implies spacing is minimal. This is a requirement for signing JSON documents.$$$DOC: http_post_data/3: document string([Type]; String) data$$$Package jpl$$$[May 16 2024]$$$$$$TEST: Search for junit.jar as well as junit4.jar. Fedora only ships with junit.jar. Well assume version 3 and older have died by this time.$$$Package pldoc$$$[May 1 2024]$$$$$$ADDED: plDoc: support __text__ and **text** for strong.$$$ADDED: Support [Label](mailto:me@example.com) links in PlDoc$$$Package swipy$$$[May 21 2024]$$$$$$ENHANCED: Context manager for janus.query() + tests for doc examples$$$[May 17 2024]$$$$$$FIXED: #9 PrologError exceptions cannot be caught as janus.PrologError$$$FIXED: py_is_object/1: Need to grab the GIL$$$Package xpce$$$[May 5 2024]$$$$$$CLEANUP: Avoid relying on too big integer shift Also document that the save format is not 64-bit robust. I do not know the consequences. Probably it just limits the size of some objects.
SWI-Prolog x86 Version 9.2.4
Release Date
4/26/2024
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

SWI-Prolog Changelog from version 9.2.3 to 9.2.4$$$[Apr 26 2024]$$$$$$PORT: Fix case conversion for Unicode characters on Windows.$$$TEST: Disable case test for u00ff on Windows. towupper(0xff) returns 0x9f on Windows.$$$FIXED: prolog_walk_code/1: no matching rule from goals reached from a :- initialization.$$$[Apr 25 2024]$$$$$$PORT: Include Ubuntu 24.04 (Noble Nombat) in PPA builds$$$PORT: Use -funwind-tables on ARM systems with glibc; also for clang$$$[Apr 24 2024]$$$$$$PORT: Deal with Android android-execinfo library.$$$[Apr 17 2024]$$$$$$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.$$$[Apr 16 2024]$$$$$$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.$$$[Apr 10 2024]$$$$$$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.$$$[Apr 8 2024]$$$$$$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$$$[Apr 6 2024]$$$$$$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 cpp$$$[Apr 2 2024]$$$$$$MODIFIED: PL_get_integer() no longer accepts floats$$$Package http$$$[Apr 24 2024]$$$$$$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).$$$[Apr 11 2024]$$$$$$FIXED: Undefined predicate schedule_gc/2 in library(http/http_session)$$$Package sweep$$$[Apr 10 2024]$$$$$$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 https://github.com/SWI-Prolog/packages-sweep/issues/1$$$Package swipy$$$[Apr 23 2024]$$$$$$DOC: janus.query() etc optional arguments is called inputs$$$[Apr 16 2024]$$$$$$FIXED: Memory leak when generating a Prolog dict from a Python dict$$$[Apr 6 2024]$$$$$$FIXED: Wrong Python refcount update. Reported by Jerry James as !8. That is is not entirely correct though.
SWI-Prolog x86 Version 9.2.3
Release Date
4/5/2024
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

[Apr 5 2024]$$$$$$TEST: Disable max_integer_size test for emscripten Doesnt handle longjmp() correctly in release mode. Works in debug mode; but that is not useful.$$$[Mar 31 2024]$$$$$$FIXED: write clauses holding > 0xffff Unicode chars in strings to QLF on Windows.$$$[Apr 3 2024]$$$$$$FIXED: forAtomsInClause() handling of B_*_?C instructions These called PL_unregister_atom() on the atom; rather than the argument function.$$$[Mar 29 2024]$$$$$$FIXED: Temp buffer handling when stack is close to top of address range$$$[Mar 28 2024]$$$$$$DEBUG: Fixed chk_secure report on invalid term due to PushPtr()/PopPtr() This construct to turn raw pointers into term references to preserve them during GC can create referenc pointers to the local stack. Another possible fix is to turn such references into direct term references. That avoids local stack references; but as this is only used around GC and GC itself uses local stack reference pointers; there is little to gain.$$$[Mar 27 2024]$$$$$$FIXED: unifiable/3 internal consistency Unifiable did not correctly handle stack resizing. This is detected when running using chk_secure. Not sure whether it can also cause real issues; but the new code is simpler and safe.$$$[Mar 26 2024]$$$$$$FIXED: powm/3 function: wrong type check on 3rd argument.$$$FIXED: Declaration of term stack for evaluating expressions$$$FIXED: Write bignums when inside arithmetic. Should normally not be needed; but debugging is much easier if we can.$$$[Mar 25 2024]$$$$$$PORT: Avoid spurious warnings from spoiling pthread_setname_np() test This used to use -Werror to ensure a compiler failure if the number of arguments do not match the prototype; but this is already enforced in todays compilers.$$$FIXED: use_module/2 with except and reexport/2 with except to print warning These predicates failed if the source did not export the excluded predicate. Now it prints a warning and ignores the non-existent predicate.$$$$$$[Mar 24 2024]$$$$$$FIXED: Another fileno issue.$$$ADDED: library(sandbox): allow for Dict.get(key;Default)$$$FIXED: Stream initialization for swipl-win Was broken since recent changes keeping track of fileno. Reported by Jan Burse.$$$[Mar 23 2024]$$$$$$ADDED: PL_system_error() This patch also adds documetation for PL_fatal_error().$$$ADDED: Prolog flag max_integer_size This flag limits the allocations on behalve of bignum and rational number processing; DoS attacks by exhausting memory using huge numbers as well as poor interrupt handling due to lack of signal handling inside the bignum libraries.$$$ENHANCED: Use temprary malloc API for bignum arithemetic$$$ENHANCED: Keep small bignums on the stack$$$CLEANUP: Simplify arithmetic context This is no longer nested and can (thus) be simplified.$$$FIXED: format/3: Ensure balanced AR_BEGIN()/AR_END() On errors it was possible that AR_END() was not called. This may lead to memory leaking and errornous operation when linked in a process that also uses gmp.$$$[Mar 21 2024]$$$$$$ENHANCED: Improve memory reuse after writing huge integers.$$$[Mar 18 2024]$$$$$$FIXED: #1254 crash in PL_get_mpq()$$$[Mar 15 2024]$$$$$$FIXED: tell/1: properly manage standard stream references.$$$FIXED: Stream reference counting and reset when closing a standard stream.$$$FIXED: Memory leak in string_bytes/3.$$$FIXED: Properly close temporary redirect to a string tellString()/toldString() could fail to reclaim the temporary stream object.$$$$$$Refer : https://www.swi-prolog.org/ChangeLog?branch=stable$$$
SWI-Prolog x86 Version 9.2.2
Release Date
2/27/2024
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

[Feb 27 2024]$$$$$$ADDED: library(sandbox): allow for current_predicate/1 without modules.$$$FIXED: Using the -l file option multiple times This used to load the first file into user (correct) but all others into the toplevel system module. Now all files are loaded into user.$$$ENHANCED: #1237 check_installation/0: hide details. Due to changes in the message format failing to load shared objects; failing tests due to shared object failures causes long error reports.$$$[Feb 26 2024]$$$$$$FIXED: Highlighting (SWISH). Avoid double brace_term_open/close for {} goal terms. Still needs proper highlighting in SWISH; as it is now just marked as brace term.$$$[Feb 23 2024]$$$$$$DOC: Clarify details of PL_get_chars() et al$$$[Feb 16 2024]$$$$$$DOC: pack management and a few minor patches.$$$[Feb 20 2024]$$$$$$DOC: Replaces !1232 with example for using PL_rewind_foreign_frame().$$$Package cpp$$$[Feb 23 2024]$$$$$$CLEANUP: tests and clarification of term to string conversion.$$$[Feb 20 2024]$$$$$$DOC: add missing method/function documentation$$$[Feb 19 2024]$$$$$$FIXED: term-to-string and related functions$$$ENHANCED: added PlTerm::must_be*() methods$$$ENHANCED: remove unnecessary const ...& from parameters; deprecate some dubious functions$$$Package http$$$[Feb 28 2024]$$$$$$ENHANCED: http_read_data/3: map syntax errors to status 400 If reading the data results in a syntax error we add context that causes http_exception.pl to map the error to a HTTP 400 reply rather than HTTP 500.$$$[Feb 26 2024]$$$$$$FIXED: HTTP Session data plugin for Redis timeout handling.$$$[Feb 21 2024]$$$$$$ENHANCED: Redis support for HTTP sessions This patch deals with IPv6 peers and allows for specifying both an RW and RO Redis database. An RO Redis database may be used for high-availability (sentinel) or clustered Redis DB.$$$[Feb 19 2024]$$$$$$FIXED: json_write/2;3: deal with high Unicode characters on Windows.$$$FIXED: use-after-free memory access error This notably causes the close/0 on a stream opened using http_open/3 to fail on some platforms.$$$Package redis$$$[Feb 16 2024]$$$$$$ADDED: sentinel_slave/4$$$FIXED: redis_get_list/3;4: LLEN can return OK. Unclear why this is possible. It happens in HTTP Redis based session management; where the list is created using LPUSH. As a work-around; we return the empty list.$$$Package ssl$$$[Feb 21 2024]$$$$$$FIXED: #170 crypto_data_hash/3: allow hmac key to contain 0-bytes.
SWI-Prolog x86 Version 9.0.4
Release Date
1/27/2023
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

[Jan 27 2023]$$$$$$TEST: Run unsafe thread_wait tests only if SWIPL_TEST_FAIL_ON_UNLIKELY is set to y.$$$FIXED: `1Inf` should be invalid syntax.$$$[Jan 26 2023]$$$$$$DOC: Foreign language details. Notable PL_raise_exception().$$$[Jan 23 2023]$$$$$$FIXED: With float_undefined set to nan; 0/0 must return NaN.$$$[Jan 20 2023]$$$$$$FIXED: with_output_to/3 to flush the streams before finishing the capture.$$$ADDED: Sdprintf() and friends to accept the t integer size specified for ptrdiff_t.$$$[Jan 19 2023]$$$$$$FIXED: Allow signal handling and e.g. call_with_time_limit/2 on raw terminal input.$$$FIXED: ansi_hyperlink/3. Also unify ansi_hyperlink/3 and ansi_hyperlink/2.$$$FIXED: trace/2 using -all to stop considering the predicate traced.$$$FIXED: prolog_stack_frame_property/2 for the predicate property.$$$[Jan 17 2023]$$$$$$FIXED: Windows: string_length/2 did not handle UTF16 surrogate pairs correctly.$$$DOC: Document PL_write_term()$$$[Jan 16 2023]$$$$$$FIXED: Possible deadlock in a transaction commit due to different ordering in locking L_GENERATION and L_PREDICATE locks.$$$[Jan 14 2023]$$$$$$DOC: fix minor typo$$$[Jan 13 2023]$$$$$$FIXED: Issue#195: cmpFloatNumbers() for NaN.$$$[Jan 12 2023]$$$$$$FIXED: Implement A_MPZ and A_MPQ instructions when using LibBF binding. This fixes using such numbers in expressions compiled with optimization enabled. Reported by Rick Workman.$$$[Jan 11 2023]$$$$$$FIXED: Issue#1091: optimised compilation of clauses containing big integers or rational numbers in expressions.$$$FIXED: Issue#1092: term_hash/2;4 crashes on Unicode strings.$$$ADDED: list_debug_topics/1 to search; only print active topics; etc. This predicate now uses print_message/2. debugging/0 is hooked to show the active topics.$$$ADDED: debugging/0: allow extensions using prolog_debug_tools:debugging_hook/0$$$DOC: Fixed PL_Q_CATCH_EXCEPTION interaction with the debugger.$$$DOC: Reviewed and updated foreign language sections on exception handling. Thanks to Peter Ludemann for pointing the many parts of the docs that were unclear or outdated.$$$[Jan 10 2023]$$$$$$DOC: Added some details for PL_exception()$$$[Jan 5 2023]$$$$$$FIXED: Issue#1087: crash on inlined unification against a rational number.$$$[Dec 28 2022]$$$$$$DOC: rational/1 and rationalize/1 use current notation.$$$[Dec 19 2022]$$$$$$PORT: msys2; add %MINGW_PREFIX%/bin to dll path$$$PORT: msys2; do not copy system dlls into home$$$ADDED: Prolog flag msys2 to detect the MSYS2 installation.
SWI-Prolog x86 Version 9.0.3
Release Date
1/11/2023
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

[Dec 18 2022]$$$$$$PORT: Fix crash in walking the Prolog stack for gcc 12 on arm 32-bit. This is caused by padding added in `struct queryFrame between saved_environment and top_frame`$$$[Dec 16 2022]$$$$$$PORT: Fixed rationalize/1 and cmpFloatNumbers() to fail due to gcc optimization using internal wide float registers rather than comparing 64 bit doubles. Not entirely sure this is our mistake or within GCCs claim to work with the extended float registers. Bottom line is that comparing a double (from memory; so 64 bits) to the result of a computation may return non-equal even if the extended float when forced to 64 bits is equal. This problem surfaced in i386 using gcc 12.2.0.$$$[Dec 15 2022]$$$$$$FIXED: Issue#119: library(apply_macros) goal expansion for phrase/3 using a partial terminal was too greedy. Uwe Neumerkel.$$$[Dec 12 2022]$$$$$$FIXED: Initialise Prolog flag encoding from locale name. Internal UTF-8 decoding is typically faster than the C library multibyte operations.$$$[Dec 11 2022]$$$$$$FIXED: clause/2;3: possible GC crash when dealing with moved unification. We cannot have references to the local stack and thus we must allocate the support variable on the global stack.$$$[Dec 8 2022]$$$$$$ENHANCED: If one of the standard streams of a thread has been closed; rebind the stream to the original process streams. This can happen if; for example; we create a thread while output is redirected to some stream. If now this stream is closed the thread ends up with a closed standard stream.$$$[Dec 6 2022]$$$$$$PORT: Build MacOS bundle using LibBF based big integers. Somehow the build for the universal binaries covering a large series of MacOS versions (since 10.14) breaks after uograde to MacOS Ventura when linking against libGMP. The results are random segfaults; bus errors and memory corruption.
SWI-Prolog x86 Version 8.4.3
Release Date
6/15/2022
Bug Fix?
No
Minor Release?
Yes
Patch Notes

Refer the below link for details$$$https://www.swi-prolog.org/ChangeLog?branch=stable
Interested in automating patching for SWI-Prolog x86?