Dear SWI-Prolog user,a
I’m happy to announce SWI-Prolog 8.3.18. This release fixes a possible
crash trying to create a dict from invalid data. It fixes a number of
issues regarding zero-arity compounds
name() and using the empty list
as a predicate.
Most of the work is on monotonic tabling, improving the update
planning and fixing the update logic for various scenarios of different
tables depending on each other.
Enjoy --- Jan
SWI-Prolog Changelog since version 8.3.17
FIXED: Make lazy monotonic tabling using answer subsumption avoid
fully invalidating indirect dependencies and keep using the lazy
FIXED: Lazy monotonic predicate depending on two nodes may fail to
be updated if the first node has no new answers.
FIXED: Various small issues that allow using /N (notably /3)
as a predicate. After report by Rick Workman.
ADDED: Undocumented way to define new functions. Experimental.
FIXED: Like monotonic dynamic predicates, avoid monotonic tabled
predicates to shift a dependency if there is no innermost monotonic
FIXED: A monotonic table that was invalidated twice including a
retract could be re-evaluated twice, first as normal incremental
predicate and later as monotonic predicate. This could re-validate
an affected node twice.
FIXED: Nest re-evaluation of an invalidated monotonic table (lazy or
due to a retract).
ENHANCED: Speedup generation of false paths for incremental tabling
by only reporting one edge to a dynamic or complete node of the IDG
and merge fetching the edge and getting the status.
DOC: Deprecate current_stream/3. Patch by David Tonhofer.
DOC: sub_string/5: clarify type handling on input and output.
DOC: Unified descriptions of sub_atom/5 and sub_string/5
DOC: Removed erroneous markup
DOC: Reviewed length/2 description
DOC: Remove reference to -L, -G and -T options.
FIXED: Issue#767: print_term/2 for printing zero-argument compounds.
FIXED: current_table/2 for shared tables.
FIXED: Possible crash when creating a dict from a list if the list
contains an invalid key.
FIXED: Issue#766: debug portray for continuations in boot/tabling.pl
prevents printing zero-arity compounds. Wouter Beek.
MODIFIED: Renamed mapterm/3 into mapargs/3 after discussion on
ADDED: Allow monotonic tables to depend on incremental dynamic
predicates. As a result, a change to an incremental dependent
invalidates the monotonic table.
ENHANCED: A dynamic monotonic predicate should only try to capture
the continuation if the inner dependency is monotonically tabled.
- ADDED: process_create/3: SICStus 4 compatible pipe(Pipe,Options)
option supporting type(Type) and encoding(Encoding).