Ann: SWI-Prolog 8.5.3

Dear SWI-Prolog user,

SWI-Prolog 8.5.3 is ready for download. Highlights:

  • dif/2 suffered from various problems leading to incorrect
    results in the case of unifications that bind multiple
    constrained variables at the same time as well as in the
    case of subterm sharing on the input terms. With help
    from several people including Ulrich Neumerkel and Tom

  • Fixed some regression and some polishing for pack_install/1.

  • Possible crash in saved state handling for dicts that have
    anonymous (_) variables as values and an anonymous variable
    as tag.

  • Fixed possible performance issues with large strings as
    reported by Rick Workman.

  • Renamed PL_version() into PL_version_info() to resolve a
    name conflict in the Yaswi Perl interface. Source code
    remains compatible as PL_version() is available as macro.

  • Updates to the benchmark suite, notably to use it with only
    those programs that have license declaration (some have no
    explicit statement about the rights). This allows using the
    PGO build in Linux distributions.

  • Several MQI updates by Eric Zinda.

    Enjoy — Jan

SWI-Prolog Changelog since version 8.5.2

  • PORT: First attempt to support MacOs M1 with brew deps in /opt/homebrew

  • ENHANCED: library(assoc): partial rewrite to use SSU (=>/2) to generate
    errors when called with invalid input.

  • ENHANCED: Base clause indexing hash for indirect types (strings,
    bigints and rationals on the start, end and length if the size exceeds
    4 machine words. Without, the time to compute the hash easily becomes
    dominant. Found by Rick Workman.

  • REFACTOR: Get all index key computation in one place.

  • ADDED: pack_install/1 and friends: provide an environment variable
    PREFIX for installing global objects.

  • BUILD: Provide more control over the PGO build.

  • ADDED: argv_options/3 to process type number

  • FIXED: profile/1 involving code executed in a temporary module.

  • MODIFIED: This patch modifies PL_prof_type_t, the interface to
    extend the SWI-Prolog profiler. Foreign code using this may need to
    be updated. Most likely only used by xpce.

  • MODIFIED: Issue#900: Renamed PL_version() to PL_version_info().
    Provides a macro for backward (source) compatibility.

  • FIXED: Issue#105: dif/2 wrong result. This patch is a major rewrite
    for dif/2. Where the previous version contained or nodes that were
    considered satisfied based on a count, the new version verifies the
    individual unifications of the unifier produced by unifiable/3.
    The count fails, both too low and too high, as a result of multiple
    unifications in a single unification as well as subterm sharing in
    the input terms.

  • TEST: More dif/2 tests.

  • FIXED: dif/2: we should ignore unrelated attributes.

  • FIXED: Issue#907: failure to fully reclaim clause indexes under
    some loads.

  • CMAKE: Support older CMake versions.

  • FIXED: Saved state handling of a dict whose first key value (in the
    internal order) and tag are both avoid variables. This patch is less
    invasive than 4de9114a76cd44659591296627e999cf1072d744.

  • FIXED: Saved state handling of a dict whose first key value (in
    the internal order) and tag are both avoid variables. Reported by
    Matt Lilley.

  • TEST: Migrate dif/2 tests to plunit.

  • FIXED: dif/2: pending constraints on sharing inside the terms.

  • FIXED: pack_install/1: if no foreign steps are required, skip them.

  • FIXED: pack_install/1: message indicating foreign install step.

Package bench

  • ENHANCED: Allow deleting the files for certain benchmarks and
    automatically skip these.

Package clib

  • SANDBOX: Declare part of the SHA predicates sandbox safe.

Package http

  • FIXED: javascript quasi quotation for regex objects holding

Package mqi

Package pengines

  • ADDED: handle full_stop(Bool) and nl(Bool) in translating Prolog
    terms to HTML.

Package readline

  • PORT: allow readline to be installed in /opt/homebrew/
  • PORT: (MacOS M1 with homebrew) allow readline to be installed in

Package sgml

  • ENHANCED: xsdp_subtype_of/2 to be fully logical. Wouter Beek.