Ann: SWI-Prolog 8.2.1

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 flag autoload to false. 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

  • 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 * Justify paragraphs

    • Align CMake options

    • Align table columns

  • DOC: Fix typos in

  • 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

  • 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

  • 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

  • BUILD: Redefine __assert_fail() in a more safe way that allows

  • 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

    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