Ann: SWI-Prolog 8.1.17

Dear SWI-Prolog user,

I have uploaded SWI-prolog 8.1.17. This version provides some new
functionality as well a couple of critical bugfixes. Highlights:

  • Fixed three crashes related to tabling and one related to temporary
    modules as used by Pengines (and thus SWISH).

  • Added tabling with call subsumption, reusing answers from more
    general (tabled) goals. Still suffering from severe performance
    issues.

  • Allow using constraints as a guard for filtering messages in
    thread_get_message/1-3

  • Fixed several issues related to profiling

  • When using BSD editline (libedit) as command line editor, provide
    C-r to search in old commands.

  • PlDoc: allow referencing local labels using [Title](#label).

    Enjoy — Jan

SWI-Prolog Changelog since version 8.1.16

  • FIXED: Issue#526: possible crash in trie_gen/2,3. Farbrizio Riguzzi.

  • MODIFIED: catch_with_backtrace/3 now captures the backtrace without
    direct references to clauses such that the backtrace can be printed
    reliably in a different context.

  • DEBUG: Dump Prolog stack on fatal errors (in safe mode, i.e., without
    arguments but with PC and clause info).

  • ADDED: thread_get_message/1-3: allow more selective matching of terms
    using constraints.

  • FIXED: reset_profiler/0. Needs to clear prof_node in the
    environments. Lacking to do so can cause crashes as well as wrong
    results.

  • FIXED: Crash in thread cleanup if the OS thread could not be created
    (typically due to a resource limit)

  • XSB: fmt_write/2,3: cache format translation.

  • XSB: Provide consult/1 from library(consult) and slash/1 from
    library(machine).

  • TEST: Added XSB subsumptive tabling tests

  • ADDED: Prolog flag `table_subsumptive’ to select (default) subsumptive
    tabling.

  • ADDED: Simple implementation for subsumptive tabling. Handles reuse
    of incomplete tables, but often resulting in quadratic complexity.

  • FIXED: is_most_general_term/1: failed to clear marks, causing
    invalid data.

  • FIXED: Calling incremental tabling for subsumptive tabling.

  • DOC: Fixed limit/2 doc for Count argument.

  • FIXED: Wrapping meta-predicates. Abramo Bagnara.

  • FIXED: db_sync(gc(always) to really always write the persistent db.

Package clib

  • FIXED: Avoid live lock in fork() due to profile signals that
    prevent fork() to complete. Edward Schwartz.

Package libedit

  • ADDED: Implement C-r: incremental search in the history. This also
    exposes more of the libedit low level functionality to Prolog,
    notably reading raw input and pushing characters into the input buffer.

Package pldoc

  • ADDED: Allow for [Title](#label) to reference a local anchor.
4 Likes