Branch: stable (switch to
development),
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.