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
Paulo Moura. -
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
(-fsanitize=address) SeeCMAKE.md
-
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_tests
set 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
modules. -
FIXED: :- table/1: undefined predicate check should ignore implicitly
imported predicates. -
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
-fprofile-dir=
and
-Wno-maybe-uninitialized
as 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
trie_gen/3 implementation. -
PORT:
swipl-ld.exe
to configure for native MinGW tools. -
FIXED:
swipl.exe --dump-runtime-variables
to provide the right
value forPLLIBDIR
on 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
wrappers. -
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.
Package debian
- INSTALL: Use -DJNIDIR=$(JNIDIR), leaving installation of libjpl.so
to CMake.
Package jpl
- INSTALL: Allow installing libjpl.so in $JNIDIR to support Debian
install. After discusion with Lev Lamberov.
Package ltx2htm
- FIXED: read outside automatic variable.
Package sgml
- 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.