Dear SWI-Prolog user,
I’m happy to announce SWI-Prolog 8.3.1. In addition to bug and
documentation fixes we have something new: monotonic tabling.
Highlights:
-
Fixed possible crash in setup_call_cleanup() cleanup handler
by Keri Harris. -
Fixed a possible crash in the GUI debugger related to
backtracking. -
Fixed possible deadlock on exit due to a bug in
library(time). -
MacOS installer to avoid dependence on Macport libraries.
This hopefully makes the binaries run on 10.12 and later. -
Support type-independent checking in atom_string/2 and
friends for mode (+,+). -
A new set of documentation fixes by Adrian Wong and several
other doc patches after comments on Discourse. Adrian also
fixed reference rewriting for the glossary section. Thanks! -
Added scripts/gcov-swipl, explaining how to build for C
coverage analysis and run swipl on some program and writing
the coverage analysis files. -
Added monotonic tabling. This is mostly an early prototype.
The idea is to have truly incremental updates for dependent
tables after adding clauses to a dynamic predicate. This
can only work if the program that uses the incremental
tables is monotonic though, i.e., adding clauses shall
never invalidate an existing answer.See docs
Documentation and bugfixes will shortly be backported to 8.2.1.
Enjoy --- Jan
SWI-Prolog Changelog since version 8.3.0
-
ADDED: Monotonic tabling
-
FIXED: get_returns_for_call/2: module qualification
-
FIXED: Possible use-after-free
-
DOC: call/1.
-
BUILD: When building the MacOS bundle, tell CMake not to look into the
Macport bin, lib and include. We want to use our own dependencies
that are compiled for MacOS 10.12 and later rather than the Macport
ones that are for the current OS and for others we want the MacOS
native libraries to reduce our footprint. -
FIXED: keep pending choicepoint frames visible to the stack shifter
-
FIXED: prolog_frame_attribute/3 getting local variables for a
frame after backtracking to the next clause could unify with a
non-initialized var. -
DEBUG: Wrong CHK_SECURE assertion.
-
FIXED: Added missing release_def() for computation of the
size
property of predicates. May prevent clause garbage collection. -
MODIFIED: prolog_listen/3: when listening on a dynamic predicate,
assert the new clause before calling the event hook. -
FIXED: Changed unviewable background color for DCG right hand context
-
DOC: Removed unix/1 docs from main manual as this is merely a partial
Quintus emulation. -
DOC: char_type/2: updated general description.
-
DOC: Use consistent command line option names
-
DOC: Fix typos in manual
-
MODIFIED: atom_string/2, string_chars/2, string_codes/2 and
text_to_string/2 accept any text representation as input on both
arguments. If both are instantiated, string comparison is applied. -
DOC: Testing options
-
FIXED: Be more selective in classifying files as
library
files.
Notably do not make the test files library files as this breaks the
XSB emulation and thus test_installation/0. -
TEST: Allow all XSB tabling tests to run in one Prolog instance to
facilitate coverage analysis. -
TEST: Avoid basic tabling tests to succeed with a choicepoint if
there are (already) shared tables. -
TEST: Include tabling tests when calling test.pl
-
BUILD: Redefine __assert_fail() in a more safe way that allows
–keep-inline-functions. -
MAINTENANCE: Added scripts/gcov-swipl to gather coverage information to
access the completeness of our test set as well as PGO optimized build. -
DOC: tcp_sockopt/2 must be tcp_setopt/2. Adrian Wong.
-
DOC: Fix typos in manual
-
BUILD: Fix PGO build to first install the library
-
DOC: Added documentation for dealing with releases
Package bench
- OPTIMIZE: Extend the benchmark set with clpfd nqueens
Package clib
- FIXED: library(time): pthread_cond_signal() was called without
holding the mutex. Although allowed, this can result in unpredictable
behaviour. Notably, if may cause cleanup of the library to deadlock.
Package http
- TEST: Disable public network tests by default
Package jpl
- DOC: jpl_class_to_raw_classname/2 updated
Package ltx2htm
- FIXED: Prevent smart quotes in a
code
environment.
Package pldoc
-
ADDED: rewrite_ref/4 for gloss class Glossary references were broken
(404) in doc_server because doc_server didn’t rewrite the glossary
references.Adding rewrite_ref/4 for gloss class
will enable rewriting of the glossary references in doc_server.
Package semweb
- TEST: Disable public network tests by default
Package ssl
- TEST: Disable public network tests by default