Dear SWI-Prolog user,
SWI-Prolog 8.3.20 is ready for download. Highlights:
Mostly fixing to lazy monotonic tabling.
Updates for MinGW 10. Default Windows release build moved to
Fedora 33 (from 31), shipping with a new MinGW GCC compiler and
more recent dependencies.
Fixed two possible crashes reported by Jan Burse, dealing with
calls to predicates with too high arity and too many open
clause/2 or retract/1 calls.
Enjoy — Jan
SWI-Prolog Changelog since version 8.3.19
ENHANCED: trace/1,2: show calling thread if not
FIXED: Need to enable capturing dependencies when processing lazy
ENHANCED: library(portray_text): updated docs, added set_portray_text/3
to get current settings and added to main documentation.
FIXED: abolish_all_tables/0 inside a transaction (more generally,
abolishing tables inside a transaction).
FIXED: Predicates using trie_gen_raw() did not properly handle cuts.
FIXED: ‘$idg_mono_empty_queue’/2 should only empty the dependency
that we just processed (now ‘$idg_mono_empty_queue’/1).
FIXED: Issue#791: compiling calls to dynamically creating calls
that exceed the maximum procedure arity. Exception changed to
Added Prolog flag
FIXED: transaction_updates/1: avoid reporting compiled trie
clauses. Tabling consistency must be managed elsewhere.
DOC: transaction_updates/1: erased clauses are flagged erased(Ref)
rather than erase(Ref).
ENHANCED: Save --no-signals state into a saved state.
DOC: csv_read_file_row/3: to be done note was outdated. Boris
FIXED: After lazy reevaluation of table using answer subsumption we
should not queue a possibly deleted answer and we must delete pruned
trie nodes from the lazy queues to affected nodes.
FIXED: Issue#785: Crash when creating too many “predicate references”
as created by e.g. clause/2 and retract/1.
FIXED: Path canonisation for relative directories with sequences
of “…/”. Makes read_link/3 fail on links to
ADDED: attach_pack/2. Suggested by Falco Nogatz.
PORT: Make compile using MinGW 10: include new libssp*.dll runtime
dll in distribution.
PORT: Windows: use
__declspec(dllexport) extern type.
FIXED: propagate changing lazy monotonic into incremental tabling.
FIXED: Only clear falsecount if the table is eager.
FIXED: False count update after lazy evaluation of monontonic
dependencies does not need to decrement the falsecount to zero.
Instead we need to decrement after we processed all answers from an
ENHANCED: Abstract put_char(user_error, ‘.’), etc. to use
print_message/2 so we can change and suppress these messages.
ADDED: plunit(summary(Dict)) silent message to easily get a summary
- PORT: Make compile using MinGW 10. Avoids multiple definitions of
global data symbols XPCE_display, etc.