Dear Prolog user,
I’m happy to announce SWI-Prolog 8.1.3. Thanks to extensive feedback and
help, things are moving fast. Highlights:
SECURITY: fixed possible buffer overrun in the SGML/XML/HTML parser.
This bug is related to error reporting against documents processed
from http_open/3 on a long URI. With help from Keri Harris.
Goal expansion can now easily wrap a goal without running into
non-terminating expansion. With input from Peter Ludemann and
Fixed various issues wrt. tabling and XSB emulation. The source
now includes two of the tabling test suites from XSB. With help
from Teri Swift and David Warren.
Improvements to garbage collection scheduling. This can cause huge
speedups in some rare corner cases. Abramo Bagnara.
Fixed packaging issues for Debian and MacOS with help from Lev Lamberov
and Paulo Moura.
Fixed swipl-ld.exe for Windows with help from Abramo Bagnara.
Enjoy — Jan
SWI-Prolog Changelog since version 8.1.2
MAINTENANCE: Provide support for using AddressSanitizer
DEBUG: Avoid c99 dependency
for(int i=0; ...in DEBUG statement.
INSTALL: Added declaration for JNIDIR (requires updating jpl module)
PORT: Android minizip USE_FILE32API
TEST: Added XSB
ai_testsset to our test suite.
FIXED: ‘$tbl_table_discard_all’/1 deleted worklists twice.
XSB: Fixed handling a redefined XSB module if the redefined SWI-Prolog
module was already loaded.
TEST: Added xsbtests/basic_tests test suite from XSB Prolog to
our tests. Added a Prolog driver to fit these tests into the
SWI-Prolog/CTest framework. Also avoided some singleton in branch
message and use include/1 to get the data set available from multiple
FIXED: :- table/1: undefined predicate check should ignore implicitly
FIXED: reloading a file with tabled predicates sometimes failed to
rename the implementation.
XSB: Added dummy implementations for set_pil_on/0 and set_pil_off/0.
PORT: Conditionally deal with
-Wno-maybe-uninitializedas these are not supported in the default
MacOS toolchain. Paulo Moura.
FIXED: Reenable actually freeing worklists.
DOC: Updated demo/README and renamed to README.md
FIXED: trie_gen/3: memory leaks
CLEANUP: Use new unification style extraction for trie terms for also
for trie_term/2 and its internal usage in tabling.
TEST: Adjust test parameters for changed GC policies.
ENHANCED: Make gc scheduling dependent on the sizes of all stacks.
ADDED: Collect statistics over most recent garbage collections,
including the time spent on GC relative to useful CPU time.
TEST: Moved trie tests from core to tabling for better balance.
FIXED: trie_gen/3: Variable database resizing.
FIXED: tries for complex nested terms. Bug introduced with new
swipl-ld.exeto configure for native MinGW tools.
swipl.exe --dump-runtime-variablesto provide the right
PLLIBDIRon Windows. Abramo Bagnara.
FIXED: Avoid excessive GC because the system incorrectly believes it
is nearly reaching the stack limit. This is only part of the solution
to avoid excessive GC.
TEST: Test trie_gen/3 variable sharing.
DOC: expand_goal/2 discussing fixed-point computation for generating
ENHANCED: goal_expansion/2: when wrapping a goal, do allow the same
expansion to work on arguments.
ENHANCED: Allow goal_expansion/2,4 to wrap a goal.
COMPATIBILITY: Allow basic saved states to work with --traditional.
- INSTALL: Use -DJNIDIR=$(JNIDIR), leaving installation of libjpl.so
- INSTALL: Allow installing libjpl.so in $JNIDIR to support Debian
install. After discusion with Lev Lamberov.
- FIXED: read outside automatic variable.
- SECURITY: Possible buffer overrun when handling parser errors and
warnings if the file name is very long. This patch also puts a
separate length constraint on the location such that not all space is
used by the location part of the message. With help from Keri Harris.