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
monotonic reevaluation. -
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
tabled predicate. -
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.
Wouter Beek. -
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
Discourse. -
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.
Package clib
- ADDED: process_create/3: SICStus 4 compatible pipe(Pipe,Options)
option supporting type(Type) and encoding(Encoding).