Dear SWI-Prolog user,
I’m happy to announce SWI-Prolog 8.2.1 in the stable series. This
backports the 8.3.x series bug fixes and documentation updates.
As usual, the .1 patch level adds a few minor compatibility issues. This
time the enhancements to wildcard_match/2 are fully backported. The
backport also includes the substantial patch dealing with the source
file administration which may lead to regression.
The intend is to just include minor patches from here on.
Enjoy --- Jan
SWI-Prolog Changelog since version 8.2.0
-
ENHANCED: thread_signal/1: avoid a max 0.25 sec wait if the signalled
thread is blocked on a message queue. -
PORT: Allow pthread_cond_timedwait() to return EINTR.
-
CLEANUP: Term names set to those of ISO Standard
-
DOC: Updated “exception term” page with ISO info
-
DOC: Fix typos in manual
-
DOC: Remove outdated status in manual Shared table space limit was
added in commit 6a01fbf70447b419447281826e770ec0cd21ab3d -
ENHANCED: Issue#625: library(settings): only save when modified and
document persistency issues. -
FIXED: Consider files loaded from a state already loaded.
-
FIXED: Allow for saved states of more than 4Gb.
-
DOC: add missing documentation for native zip handling predicates.
-
ENHANCED: save_settings/1 to use setup_call_cleanup/3 to guarantee
reclaiming resources. -
FIXED: Recursive autoloading when a saved state loads an additional
file that sets the Prolog flagautoload
tofalse
. Peter Ludemann. -
PPA: Removed support for Ubuntu disco (19.10).
-
FIXED: library(prolog_codewalk): handle file/4 message terms.
Matt Lilley. -
FIXED: Location of jpl.jar in development tree to be able to run in
the dev tree. -
PORT: Windows: make condition variable abstraction compile again.
-
ADDED: Foreign API to reuse the internal lock-free hash table
implementation. -
DOC: Removed obsolete section on Boehm-GC support.
-
FIXED: Make module enumeration safe for temporary modules. This
affects notably current_predicate/1 in SWISH. current_predicate/1
using an unbound module now skips enumeration of temporary modules. -
FIXED: Possible race condition when two threads try to compile the
same file. -
FIXED: Possible inconsistent source file reference count.
-
CLEANUP: No longer create a source file object for a derived source.
This doesn’t seem to be used anywhere and the new garbage collecting
approach for source files would reclaim the file immediately anyway. -
FIXED: Make source file admin use reference counts and delete no
longer needed source file admin entries. Discarding them is needed by
Pengines. The hard-coded discard from ‘$destroy_module’/1 could cause
a use-after-free issue in SWISH when using:- include(file).
.
The patch is rather involved. Probably there are easier ways to fix
this particular issue. Usage based reclaim of source files is a step
towards garbage collecting code in general though. -
CLEANUP: Property balance ‘$start_consult’/2 and ‘$end_consult’/1.
-
ADDED: message_queue_property/2: property waiting(-Count) to find
the number of threads waiting for this queue. -
ENHANCED: thread_send_message/2: reduce time the queue mutex is held.
-
FIXED: thread_get_message/1,2 could not wakeup after a message arrived.
-
DEBUG: Improved debug channel MSG_QUEUE, notably avoid printing to
the possibly redirected current output using pl_writeln(). -
DOC: Format CMAKE.md * Justify paragraphs
-
Align CMake options
-
Align table columns
-
-
DOC: Fix typos in CMAKE.md
-
DOC: Fix typos in manual
-
ADDED: wildcard_match/3. Required because wildcard_match/2 no longer
listens to case sensitivity of the file system. Suggested by Keri Harris. -
FIXED: Missing error case for a non-terminated
[..
set.
Included more test cases. -
FIXED: wildcard_match/2: peek after string on unmatched “{”
-
FIXED: wildcard_match/2 and expand_file_name/2 used to print a
warning and throw a domain_error on an illegal pattern. It now throws
a syntax_error exception. -
TEST: Added files test dir, now containing test_glob.pl
-
FIXED: Memory leak in text canonicalization
-
FIXED: expand_file_name/2 and wildcard_match/2 - Avoid a possible
crash using Unicode patterns. Found by Keri harris. - Fully support
Unicode in patterns and file names. - Remove the length limit for
compiled patterns (used to be 1024 chars). -
MODIFIED: wildcard_match/2 used to be case insensitive if file names
are case insensitive. Now wildcard_match/2 is always case insensitive. -
DOC: Remove duplicate license information * Move the new license down
to replace the old one-
Refer directly to the license page on the website
-
Update the copyright year
-
-
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. -
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
-
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
-
TEST: Fix Macport testing for save_settings/1. It turns out that the
/tmp dir is not considered writeable in the macport build environment
while it is. Therefore we create the file explicitly. -
DIST: Make script/make-src-tape work on MacOS
-
DOC: save_settings/1,2
-
PACKAGE: Work on script to automate updating Macports releases
-
MACOS: build using GCC-10
-
DOC: Added documentation for dealing with releases
-
TEST: Fix Macport testing for save_settings/1. It turns out that the
/tmp dir is not considered writeable in the macport build environment
while it is. Therefore we create the file explicitly. -
DIST: Make script/make-src-tape work on MacOS
-
DOC: save_settings/1,2
-
PACKAGE: Work on script to automate updating Macports releases
-
MACOS: build using GCC-10
-
TEST: More robust version of settings:save_default
-
TEST: More robust version of settings:save_default
Package bench
- OPTIMIZE: Extend the benchmark set with clpfd nqueens
Package chr
- BUILD: Lacking dependency may cause build failures.
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 cpp
- ENHANCED: Add copy constructor. This prevents warnings from modern
compilers and preserves the existing copy semantics.
Package http
-
DOC: Document the library(zlib) and library(http/http_stream) plugins
for library(http_open). -
ENHANCED: HTTP workers for new connections to keep track of the
activity rate and adjust to the best wait policy, trading time for
memory minimisation. -
ENHANCED: http server backlog changed from 5 to 64. Probably doesn’t
have much effect, but 5 seems old school. -
FIXED: library(http/http_dyn_workers) could start far too many workers
due to (1) waiting a negative time to check the queue was draining and
(2) not respecting the max_workers setting. -
TEST: Disable public network tests by default
Package jpl
-
DOC: Added link to JPL Github repo in main page
-
ADDED: Unit testing for checking Prolog and JPL Exceptions
-
IMPROVED: documentation, tutorials and initialization of engine
-
IMPROVED: doc pages, much better Development section
-
ADDED: Maven dependency for jpl.jar in doc
-
ADDED: Extended POM to deploy packages on GitHub
-
ADDED: Github Maven building process
-
UPDATED: Javadoc with Dict included
-
CLEANUP: Removed obsolete and unused code from org.jpl7.util
-
BUILD: Avoid warning if junit.jar is not present
-
ADDED: Maven support and dir layout - Upgraded to 7.6.1
-
MODIFIED: move all examples to src/examples/ folder - Fixed #62
-
ADDED: Dictionaries support
-
ADDED: Dictionary as a type of Term
-
DOC: jpl_class_to_raw_classname/2 updated
Package ltx2htm
- FIXED: Prevent smart quotes in a
code
environment.
Package pengines
- ADDED: Make pengines redirected I/O work on created threads.
Package pldoc
-
FIXED: Manual to serve e.g., ``/pldoc/doc_for?object=*->/2’’.
-
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
Package xpce
-
ENHANCED: Better visible current tab and better positioning of
the label. -
MAN: Removed xpce.1 and updated xpce-client.1