Ann: SWI-Prolog 8.2.3

Dear SWI-Prolog user,

I’m happy to announce SWI-Prolog 8.2.3 (stable). This version backports
a number of documentation, build, test and stability issues.

Enjoy --- Jan

P.s. Building the PDF docs fails from the tar archive. That was not
enough reason to re-release :slight_smile: The git repo has been updated.

SWI-Prolog Changelog since version 8.2.2

  • FIXED: Typo in MemoryBarrier() based sync macros.

  • DOC: Fix priority of | operator. Spotted by Falco Nogatz.

  • FIXED: protect dynamic clauses in continuations. This patch solves
    the same problem as cca23badcbfb2dad7089696348aae56e50b84a3c, but also
    protects the clause itself during the execution of the continuation.

  • FIXED: Issue#706: call_continuation/1: environment clause reference
    cannot be from the blob in the continuation as this may be reclaimed
    in AGC. May cause a crash while getting a backtrace from restarted
    continuation. GC also uses the clause info, so this can probably
    crash as well. Reported by David Tonhofer.

  • PORT: Set MACOSX_DEPLOYMENT_TARGET for building the MacOS dependencies.

  • DOC: Corrext examples for rational numbers to use lowercase “r”
    instead of formerly discussed “R”

  • DOC: CHR section names to include CHR to make them easier to find
    and reduce ambiguity in search results.

  • FIXED: Do not use sandboxing during autoloading. Note that the
    autoload directive is not permitted in sandboxed code, so users cannot
    load untrusted code using autoload/1,2.

  • FIXED: debugger could reset wrong variable when debugging a redo
    action. May lead to incorrect behaviour in debug mode.

  • FIXED: set_prolog_flag/2: propagate errors from switching debug mode
    using the debug flag.

  • ADDED: PL_put_term_from_chars(): flag CVT_EXCEPTION to raise an
    exception on a failure rather than returning the exception term.

  • ENHANCED: PL_get_nchars(): immediately write to a UTF-8 string if
    REP_UTF8 is specified. This used to first write ISO Latin 1,
    then wchar and finally transfer to UTF-8 for terms that cannot be
    represented as ISO Latin 1.

  • FIXED: PL_get_nchars(): avoid pending exception in write conversion
    if the term cannot be represented as ISO Latin 1.

  • FIXED: XDG path handling for common_config. common_data returned
    both the common data and config paths, while common config had no

  • FIXED: incremental tabling with answer subsumption call to start

  • TEST: wrong format/3 usage causing a failure unrelated to the test.

  • TEST: Relax XSB tabling test abol_test3b.P as reclaiming the tables
    is not guaranteed.

  • FIXED: Possible race in shared table handling. Leads to “Oops,
    worklist trie doesn’t point back at me!” messages.

  • TEST: Test file for destroying local definitions.

  • FIXED: Race between destroying thread-local definitions and clause
    garbage collection. With Matt Lilley.

  • FIXED: Thread-local definitions corrupted the argument declaration.
    Matt Lilley.

  • DOC: debug/0 does not affect trace points.

  • FIXED: Issue#702: call_with_inference_limit/3 determinism when the
    inference limit is exceeded. David Tonhofer.

  • DOC: reset/3: document interaction between delimited continuations
    and choicepoints.

  • FIXED: Save/restore tabling status over break/0.

  • FIXED: Possible assertion failure in WFS handling for tabling on
    32-bit hardware. Lev Lamberov.

Package clib

  • FIXED: library(udb_broadcast): determine subnet mask for 127...*
    network. Jacob Friedman.

  • ADDED: uri_resolve/3 and related predicates that take a base URI
    to accept a string in addition to an atom for the base URI.

Package cql

  • DOC: Add CQL to the section headers to improve searching.

Package libedit

  • FIXED: Avoid double preparation of the libedit signal handling.
    Double preparation may lead to an infinite recursion in el_sighandler()
    and can happen if multiple threads prepare the library.

Package ltx2htm

  • ADDED: Support tabulary environment.

Package pldoc

  • ADDED: Create a link from … flag `name` … if name is a
    current Prolog flag.

  • ADDED: `name/arity` to create a link as name/arity. Using
    double backticks creates a predicate indicator that is not a link.

  • ENHANCED: Use LaTeX package tabulary for dealing with tables that
    have one or more columns with long text in cells.

  • ADDED: PlDoc Wiki tables to use a possible column alignment
    specification and interpret the header.

  • ADDED: Markdown notation [@cite;@cite;...] to allow for citations
    in the Markdown in the documentation pipeline. After discussion with
    Eric Zinc.

Package semweb

  • FIXED: sparql_query/3: ignore white space in values. Johan Romme.
    Bug introduced by ef7ee735df9445b061cecc23c5d707d51e470edd

Package ssl

  • FIXED: Possible buffer overflow when reading certificates with too
    long lines. Matt Lilley.

Package table

  • FIXED: Handle empty table files.

Package xpce

  • FIXED: Example defaults file: emacs_prolog_mode.dependency_directive
    class variable must be quoted.

  • ENHANCED: Cleanup trace/spy dialog

Is there a plan to add library(redis) to the stable versions? I think it would be a major bonus, since most distributions carry the stable version.

I don’t think so. First of all the API of the Redis binding is not yet stable. Ok, it is likely to be stable long before 8.4 will be released. But the redis binding depends on some changes to the system that are not 100% compatible, notably a fix to the C api for serializing terms that changes constants in SWI-Prolog/h to avoid an ambiguity :frowning:

If you want redis, just use the devel version. It is pretty stable :slight_smile: If you do not want to compile the PPA should help on Ubuntu and the SNAP on most Linux distros and the Docker image on many more systems.

1 Like

This makes sense, thanks!