Dear SWI-Prolog user,
Version 8.1.8 is ready for download. Almost all the development is
related to tabling. First three important patches that are not related
to tabling:
- Updated the end-point for the package manager to use HTTPS. See
Www.swi-prolog.org goes https
for making pack_install/1 and friends work with older versions. - Keri Harris found and fixed a long standing bug in clause garbage collection
that could lead to crashes. - A bug in deep indexing for clauses could result in a clause having a variable
for an argument that was selected to create a deep index to be ignored.
Tabling highlights:
- Allow table/1 to be called as a goal instead of only as a
directive. Added untable/1 to remove tabling for a predicate. - Several fixes and enhancements to the trie implementation.
- Fixed several memory leaks.
- Several fixes for answer completion, the last step dealing
with well founded semantics for the case that simplification
doesn’t solve the puzzle. - Removed several sources of poor tabling performance (non-linear
behavior in some of the low-level operations). - Added a partial implementation for subsumptive tabling. See
manual. - Added highlight support for the more complex tabling directives
(PceEmacs, SWISH (requires current git version of SWISH)).
SWI-Prolog can now solve all problems from OpenRuleBench, although
some with very poor performance. This should improve in the near future.
Enjoy --- Jan
SWI-Prolog Changelog since version 8.1.7
-
ADDED: PceEmacs: extend library(prolog_colour) to deal with all
tabling declarations. -
DOC: subsumptive tabling.
-
XSB: Pass on
as subsumptive
. -
ADDED: subsumptive tabling.
-
ADDED: Support tabling options using
:- table PI as Option, ...
-
TEST: Started library(wfs) tests.
-
FIXED: tnot/1: correctly handle imported predicates and raise an
error if the called predicate is not tabled. -
ADDED:
tabled
to predicate flags -
FIXED: Module qualification for residual programs.
-
FIXED: call_delays/2.
-
ENHANCED: Avoid repetitive merge of clusters.
-
ENHANCED: Speedup merging small SCCs into a large one.
-
FIXED: Use https to contact the pack server.
-
FIXED: do not delete lingering clauses indexes unless they are known
to have been lingering at the time clause GC started -
ADDED: extended statistics for tries.
-
ENHANCED: Use POPN sequences for reduce memory usage and speedup of
right-recursive terms in tries. -
ENHANCED: Avoid POP for outermost trie element.
-
ENHANCED: limit search for trie_gen/3. Starts creating choice points
from the first in the trie or target term. -
FIXED: WFS: produce proper residual program for positive delay
elements. -
FIXED: combination of deep indexing and clauses with a variable at
the location of the deep index may loose answers. -
FIXED: Undefined and simplification admin to make lazy AC really work.
-
FIXED: Lazy version should also avoid recursive AC
-
ENHANCED: Allow switching between eager and lazy AC. Default is
eager as lazy still seems to suffer from bugs. -
ENHANCED: Remove answer clusters from worklists when completing
-
ENHANCED: Working on #ifdef O_AC_EAGER to switch between eager and
lazy answer completion. -
ENHANCED: More aggressive marking of tables as answer completed.
-
FIXED: Issue#478: is_lambda/1 failed on valid yall lambda
expressions. Fix by Paulo Moura. -
ENHANCED: Avoid quadratic behaviour on deep tnot/1 negation chains.
-
FIXED: Memory leaks in tabling: reclaim variant skeletons and answer
delay info -
ENHANCED: Avoid popping worklists with no work.
-
FIXED: Trie statistics, notably on the tabling the variant trie
-
FIXED: Enumerating tries that have NULL values (deleted nodes that
have not been pruned). -
ENHANCED: rewrite trie unify_key as a switch
-
FIXED: trie_gen/2,3: instantiated indirect (float,string) that match
still caused failure. -
DOC: updated table/1 docs and added untable/1.
-
ADDED: untable/1
-
FIXED: abolish_table_subgoals/1 failed if no tabling has been done
in the calling thread. -
ADDED: dynamic invocation of table/1
Package xpce
- FIXED: Issue#464: gxref/0: ignore files that do not exist.
Paulo Moura.