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

SWI-Prolog Changelog from version 8.4.0 to 8.4.1

[Nov 16 2021]

  • FIXED: Saved state handling of a dict whose first key value (in the internal order) and tag are both avoid variables. This patch is less invasive than 4de9114a76cd44659591296627e999cf1072d744.

[Nov 15 2021]

  • FIXED: Saved state handling of a dict whose first key value (in the internal order) and tag are both avoid variables. Reported by Matt Lilley.

[Nov 12 2021]

  • FIXED: Be more relaxed about existence of the current predicate when pushing and popping the compilation context.

[Nov 11 2021]

  • ENHANCED: Get version info into the Prolog flag. Now uses CMake rather than a shell script and provides a new Prolog flag cmake_build_type.

[Nov 10 2021]

[Nov 8 2021]

  • EHNACED: pack_rebuild/1,2 for CMake based packages to use `cmake --build and cmake --install` for the build and install steps rather than calling make, ninja, etc. directly. Suggested by Wouter Beek.
  • MAINTENANCE: Possible segv in retract/1 when compiled using O_DEBUG.

[Nov 7 2021]

  • FIXED: Possible race conditions between the various ways a thread can be joined.
  • FIXED: Do not start a new thread to join garbage collected threads while shutting down the system.
  • MAINTENANCE: On a system error we only go into interactive mode if both stdin and stderr are connected to a terminal. Otherwise we print the message, C and Prolog stack and abort.
  • MAINTENANCE: Use of guarded C-stack using sigaltstack() doesn't go with ASAN. Results in the error below. Disabled guarding the C stack when compiling using address sanitizer. ``` =101190=ERROR: AddressSanitizer failed to deallocate 0x2000 (8192) bytes at address 0x6250000b1900 =101190=AddressSanitizer CHECK failed: ../../../../src/libsanitizer/sanitizer_common/sanitizer_posix.cc:60 "(("unable to unmap" && 0)) != (0)" (0x0, 0x0)

[Nov 3 2021]

  • FIXED: CMake packs must use environment variables.
  • ADDED: Support ninja builds when using CMake
  • FIXED: pack_install/1,2: If we use CMake for configuration, we should also build in the CMake directory.
  • TEST: Signalled thread may already be dead.

[Nov 2 2021]

  • ADDED: pack_install/1,2: provide pack_install(.) to add the local directory to the pack registry and build it. Also add option link(true) and rebuild(When) to provide more fine control over the build.
  • FIXED: pack_install/1,2: do not remove contents if the package registered as a symbolic link.
  • FIXED: memberchk/2 for partial lists where the unbound part is constrained. Reported on Discourse by Abramo Bagnara.
  • BUILD: Avoid GCC-11 warning

[Oct 31 2021]

  • ENHANCED: Protect assertz/1 and friends (compiler) against C-stack overflows.
  • ENHANCED: Use setjmp() instead of sigsetjmp() to reduce the overhead of the C-stack guarding.
  • MAINTENANCE: Updated C calltree analysis for CMake build and new coding style and conventions.

[Oct 30 2021]

  • FIXED: Fallback to find a place for packages to install executables.
  • FIXED: Hash consistency on pointer sided integers for 64-bit bigendian machines. Only affects consistency of term_hash/2 over platforms.
  • FIXED: Checking that an uncaught exception is caught in an outer environment, i.e., nested C<->Prolog callback.

[Oct 28 2021]

  • FIXED: Make C-stack guarding work in threads.
  • ENHANCED: Use C-stack guarding for read/1 and friends.
  • FIXED: format/2,3: Term printing using ~[kpqw] did not propagate exception.

[Oct 27 2021]

  • ENHANCED: Handle C-stack overflows gracefully on POSIX targets with sigaltstack().

[Oct 26 2021]

  • ADDED: argv_options/3: allow including longer descriptions as header, usage and footer in the usage message.
  • ADDED: argv_options/3: Allow the user to redefine the bindings for help. Suggested by @swi.
  • PORT: Alignment on ppc64el. Better version than df1f0bf795a16edd313a2a25f0678ce044a4a71d
  • PORT: Alignment on ppc64el (Debian). See https://github.com/SWI-Prolog/issues/issues/104

[Oct 25 2021]

  • FIXED: pl_get_uint64() for GMP numbers on 32-bit systems.
  • ADDED: argv_options/3,4: allow for disjunctive types.

[Oct 24 2021]

  • ADDED: library(prolog_versions) to simplify demanding minimal version and features of the hosting Prolog system.
  • ADDED: argv_options/4: options_after_arguments(false) option to stop processing options after the first positional argument.
  • ADDED: win_get_user_preferred_ui_languages/2 to get access to the user's preferred UI languages on Windows.
  • INSTALL: Windows: avoid confusing uninstall version message.

[Oct 22 2021]

  • ENHANCED: Allow loading library(prolog_debug) if spy and/or nospy are defined as operators.
  • FIXED: Do not reclaim memory on termination when we failed to terminate all threads.
  • ENHANCED: Provide a non-polling process termination procedure for systems that do not have sem_timedwait() such as MacOS.
  • ENHANCED: Improve performance for process shutdown on POSIX systems that support sem_timedwait() by avoiding a polling loop. This typically saves 0.1 second on the elapsed time for short lived executables.

[Oct 21 2021]

  • ADDED: Allow --no-pce together with -c (compile) to produce a state that does not include xpce.
  • FIXED: Retract for retract((a:-true)). Reported by Fernando Sáenz-Pérez.

[Oct 20 2021]

[Oct 19 2021]

  • ADDED: argv_options/3 to provide a full featured and lightweight alternative to library(optparse).
  • FIXED: format/2 and friends: verify error when emitting rubber.
  • ADDED: format/2 and friends: support ~:|, the colon modifier for tab stops to insert a newline if the current column already passed the tab stop.
  • FIXED: Issue#896: Claim that memory streams as used by e.g. open_string/2 are reported as repositionable. Reported by Matthijs van Otterdijk.
  • ENHANCED: Allow 64-bit seek function to work on memory streams.
  • ADDED: Allow stream contol functions to return whether the stream is repositionable.

[Oct 18 2021]

  • FIXED: det/1: avoid false non-determinism claim if all relevant choicepoints are debug choicepoints.

[Oct 14 2021]

  • FIXED: Predicate access in nested transactions for clauses that are removed in the parent (or a previous nested) transaction. We must inspect the affected clauses of all parent transactions. Reported by Eric Zinda.

[Oct 11 2021]

  • FIXED: Answer subsumption tabling case provided by Annie Liu.
  • ADDED: Predicate property sig_atomic. Currently only for the built-in sig_atomic/1.

[Oct 9 2021]

  • FIXED: Delay signals in prolog_exception_hook/4.

[Oct 10 2021]

  • ADDED: sig_atomic/1 to run goals protected from signals. This predicate used to be available as the undocumented '$sig_atomic'/1. '$sig_atomic'/1 is now available from library(backcomp).
  • ENHANCED: thread_signal/2: reduce the locked section

[Oct 11 2021]

  • FIXED: thread_wait/2: return when condition is true before this predicate is called.
  • FIXED: thread_wait/2: wait_preds option accepted non-predicate indicators.
  • ADDED: sandbox: call_delays/2 as safe meta predicate

[Oct 6 2021]

  • FIXED: Issue#889: swipl --abi-version crashed.

[Oct 5 2021]

  • ENHANCED: trace/2 to delete that we are tracing this predicate if the port list is empty.

[Oct 1 2021]

  • DOC: Document key pc of prolog_choice_attribute/3
  • FIXED: 91d73fb8a859c6e0f0d97ff553f96903816bc18c triggers another case where the falsecount of a node can underflow during re-evaluation. Bit dubious.
  • DOC: LaTeX formatting error

Package cpp

[Oct 27 2021]

  • CLEANUP: SWI-cpp.h: more consistent type handling and silence several more casts.
  • COMPATIBILITY: SWI-cpp.h to use static_cast<type>(expression) to avoid warnings on modern C++ compilers.

Package http

[Oct 25 2021]

  • ADDED: JSON writer for dicts now have a hook json_dict_pairs/2 that allows the user to select keys from the dict and particularly define the order of keys in the resulting JSON.

[Oct 12 2021]

  • ADDED: http_read_data/4: handle the input_encoding/1 option when using to(Type).

[Oct 7 2021]

  • FIXED: range streams: be careful about race conditions when asynchronously finding all streams that refer to OS file handles.

Package jpl

[Nov 2 2021]

  • BUILD: Silence GCC-11 warning (ugly)

Package mqi

[Nov 11 2021]

[Nov 1 2021]

  • TEST: Handle all failures from test_server_options_and_shutdown as warnings unless "SWIPL_TEST_FAIL_ON_UNLIKELY=y" This test has lots of threading and potential race conditions so it can fail when the system is heavily loaded.

[Oct 22 2021]

  • DOC: Update URLs from EricZinda/swiplserver to packages-mqi
  • ADDED: All files needed to actually build the Python 'swiplserver' model and post to pypi.org so that 'pip install swiplserver' works Includes instructions on how to the build the model in /BuildingAndTesting.md

[Oct 20 2021]

  • ENHANCED: Use new controlled options and automatic help.
  • ENHANCED: Include dependencies to make mqi run with disabled autoloading.
  • FIXED: Use argv rather than os_argv. Breaks on new argv_options/3.

Package odbc

[Nov 10 2021]

  • CMAKE: Requires minimally cmake 3.9

[Oct 13 2021]

  • TEST: Include ODBC tests based on the environment variable SWIPL_TEST_ODBC_DRIVER. Also fixes cleanup of the ODBC tests.
  • FIXED: Ensure statement is closed in two scenarios.

[Oct 5 2021]

  • FIXED: Properly translate non-ASCII ODBC messages to Unicode.
  • FIXED: Cleanup the remains of old work-arounds or broken MS SQLServer SQLColumns() and add a new one. odbc_table_column/3 stops with the error Invalid Descriptor Index trying to fetch the column name using SQLGetData(). The work-around sets the column with for this query to 8K, avoiding SQLGetData(). Thanks to Fernando Sáenz-Pérez for reporting and providing access to a server.

Package pengines

[Oct 11 2021]

  • ENHANCED: Provide CSS style wfs_undefined for undefined answers.

[Oct 7 2021]

  • ADDED: portray//2 hook that plays a role similar to portray/1 for HTML rendering of terms.

Package protobufs

[Oct 31 2021]

  • FIXED: Issue #15 (long directory name) Shorten directory protoc_gen_prolog_pb to gen_pb for R build (R build outputs a warning if a the path is more than 100 bytes)

[Oct 25 2021]

  • FIXED: uint32_codes/2 in mode (-,+) on may return a negative value on 32-bit systems.

Package redis

[Nov 8 2021]

  • TEST: Prevent occasional early termination in test(primes).
  • TEST: Make sure the Redis test group consumers are properly discarded.

Package semweb

[Nov 2 2021]

  • BUILD: Trick GCC-11 we are not really freeing a non-heap address.

Package sgml

[Oct 7 2021]

  • FIXED: xml_quote_cdata/3: possible race condition if two threads use this for the first time.

Package ssl

[Nov 2 2021]

  • BUILD: Silence (incorrect) GCC-11 uninitialized warning.

Package xpce

[Nov 7 2021]

  • PORT: remove Cygwin from targets requiring dllexport Cygwin ld uses auto-export by default. Mixing that with dllexport in some cases leaves other symbols unexported.

[Nov 2 2021]

  • BUILD: Avoid GCC-11 warning.

[Oct 21 2021]

  • FIXED: Do not setup search path for library(pce) if --no-pce is given.