Ann: SWI-Prolog 9.1.10

Dear SWI-Prolog user,

SWI-Prolog 9.1.10 is ready for download. Highlights:

  • Fixed to http_open/3 when using Keep-Alive connections.

  • Changes to library(ugraph), top_sort/2,3. See below.

  • Bug in catch/3 that could leave a choicepoint in debug
    mode, causing enclosing det/1 to raise an exception.

  • Various enhancements for the WASM version. Now passes
    all tests.

  • Fix to YAML parser to read “e” as an atom rather than
    a string.

    Enjoy — Jan

SWI-Prolog Changelog since version 9.1.9

  • ADDED: trap/1: aliases for det and =>. Expandable.

  • MODIFIED: top_sort/2, deleted top_sort/3 added ugraph_layers/2
    top_sort/3 was deleted due to mismatch of documentation and
    implementation for the order of the difference list arguments.
    The docs give a replacement.

    top_sort/2 now returns vertices from the same layer in input order,
    i.e., in standard order of terms.

    ugraph_layers(+UGraph, -Layers) returns the topogical sorted result
    as a
    list of layers. I.e., all legal toplogical sorts can be established by
    creating permutations for the layers.

  • FIXED: catch/3 debugger interaction. In debug mode it was possible for
    catch/3 to not finish the catch if the goal succeeded deterministically
    due to CHP_DEBUG choice points.

  • CLEANUP: Remove very old work-around for clang bug.

  • WASM: Get the link options for the various targets ok. This notably
    passes -s STACK_SIZE=1048576 as the default 64K is too small for
    SWI-Prolog. The patch reorganises assembling the link option lists
    for better sharing of common options.

  • BUILD: By default implement VM instructions using functions for
    clang On recent versions of clang (14,15), the code produced using
    VM instructions as functions rather than a big switch is faster.

  • BUILD: Generalize configuration of C-stack limit

  • BUILD: Added ccache support Currently disabled for Emscripted as that
    seems to do its own caching these days.

  • WASM: Removed export Pointer_stringify. Compiler complains and it is
    (no longer) used.

  • FIXED: absolute_file_name/3: allow for duplicate options. This change
    also affects other predicates that use the Prolog built-in option

Package http

  • FIXED: Prevent type error in redis based session management.

  • FIXED: http_open/3 with keep-alive connections Fixes two issues: (1)
    streams may be left open (leaking stream handles) when an error occurs
    during the HTTP handhake and (2) errors during the http handshake
    were propagated without the error(,) wrapper. With http handshake
    we refer to sending and reading the header as well as, for https,
    the TLS handshake.

Package pldoc

  • ADDED: Include documentation for exported predicates loaded from other
    files. While this was in place for imported modules (re-export),
    documentation from non-module files loaded by and exported from a
    module was not included.

Package plunit

  • ENHANCED: Name of failed test. Now prints both the unit and test
    and uses quoted write so you can copy/paste the result.

Package xpce

  • FIXED: finder with default mode to find files for reading.

Package yaml

  • FIXED: Stricter number syntax checking. The library tests scalars
    for numeric syntax and then invokes the Prolog parser. It passed “e”
    as a number. This patch also documents that, violating the standard,
    we parse “0.” as a string rather than a float.

The latest 3.4.0 release of swipl-wasm now uses SWI-Prolog 9.1.0.

In addition we have added support for PCRE regex operations in this release of swipl-wasm.

1 Like