Ann: SWI-Polog 8.3.18

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).
1 Like