Dear SWI-Prolog user,
SWI-Prolog 8.3.11 is ready for download. This version fixes some serious
(old) issues and brings the Redis interface to a next level. Highlights:
-
Together with Matt Lilley two memory issues that could crash the
system were found. Both are related to thread_local/1 predicates,
one for creating such predicates with a high (>18) arity and the
other is a race condition between a dying thread releasing its
local storage and the clause garbage collector. -
David Tonhofer found a termination bug in format/2 using
~1r
. -
The libedit command line editor (default on non-Windows) was
subject to an infinite C recursion when receiving a signal,
causing a crash with SEGV. -
Some more progress on incremental tabling management, propertly
introducingopaque
tables. Fixed a possible crash on 32-bit hardware
(Debian tests by Lev Lamberov). -
Lots of work on the Redis binding. Notable the default conversion
of values is now to return a number (if the value satisfies numerical
syntax) or an atom. UseReply as string
to force receiving a string.Enjoy — Jan
SWI-Prolog Changelog since version 8.3.10
-
TEST: Test file for destroying local definitions.
-
FIXED: Race between destroying thread-local definitions and clause
garbage collection. With Matt Lilley. -
FIXED: Thread-local definitions corrupted the argument declaration.
Matt Lilley. -
DOC: debug/0 does not affect trace points.
-
FIXED: Issue#702: call_with_inference_limit/3 determinism when the
inference limit is exceeded. David Tonhofer. -
ADDED: Deal with global predicates if the current file is not a module
file. This provides coloring and meta-predicate handling for other
predicates in a non-modular program. Unfortunately this still lacks
whether or not predicates are called from other global predicates. -
ENHANCED: Use global meta-predicate properties.
-
DOC: reset/3: document interaction between delimited continuations
and choicepoints. -
FIXED: Save/restore tabling status over break/0.
-
FIXED: Dependency of incremental tables on monotonic tables.
-
FIXED: Possible assertion failure in WFS handling for tabling on
32-bit hardware. Lev Lamberov. -
ADDED: Predicate property
monotonic
. -
FIXED: atomic_list_concat/2,3 and atomics_to_string/2,3: wrong
exception on atomic_list_concat([a,b|c], X) and posssible memory leak
on errors (non-atomic data, cyclic list). -
MODIFIED: PL_get_nchars() and friends. Due to some typo CVT_WRITE
and CVT_WRITE_CANONICAL were the same constant. Also CVT_WRITEQ
conflicted with CVT_VARIABLE. These constants have been renumbered
to ensure consistent behaviour as documented. -
FIXED: an
opaque
tabled predicate may depend on incremental and
monotonic predicates without raising an error. -
ADDED: introduce
opaque
as explicit attribute for dynamic and
tabled predicates. An opaque table may depend on incremental and
monotonic predicates without raising an error. -
PPA: Support Ubuntu 20.10 (groovy) and reduce the places where the
known distros are listed to one. -
CLEANUP: Cleanly exit when running out of memory on pushSegStack().
-
FIXED: Issue#698: format/3 using “~1r”. David Tonhofer.
Package libedit
- FIXED: Avoid double preparation of the libedit signal handling.
Double preparation may lead to an infinite recursion in el_sighandler()
and can happen if multiple threads prepare the library.
Package redis
-
FIXED: Documentation dependency
-
ADDED: Output
Term as prolog
as alternative to prolog(Term). -
ADDED: redis_subscribe/4 and friends to accept channel keys in the
A:B:… notation. -
FIXED: redis_subscribe/4 Failed to broadcast due to auto type
conversion. -
FIXED: proper error when asking for a dict or pairs and only a single
bulk is returned. -
FIXED: Protocol resync after a possibly incomplete read.
-
FIXED: redis_hscan/4: failed after changing return to
auto
.
Added test case. -
MODIFIED: Report status replies as status(atom), providing the status
as a lower case atom instead of an uppercase string. -
MODIFIED: Use
auto
as default type. After discussion on Discourse. -
FIXED: auto types number detection.
-
ENHANCED: Reporting connection failures.
Package ssl
-
FIXED: Possible buffer overflow when reading certificates with too
long lines. Matt Lilley. -
FIXED: SSL BIO
gets
binding to Prolog streams. Did not include
the\n
, did not 0-terminate the string and got EOF handling wrong.
Affects loading private keys (and possibly more). Joined debugging
with Matt Lilley. -
TEST: Added demo_body.pl location for running the installed test suite.
Package swipl-win
- CLEANUP: Avoid C++ compiler warning about undefined timeout_ms.
Package table
- FIXED: Handle empty table files.