Ann: SWI-Prolog 8.5.15

Dear SWI-Prolog user,

SWI-Prolog 8.5.15 is ready for download. Highlights:

  • @anionic provided patches to JPL that allows exchanging
    deeply nested terms between Java and Prolog.
  • @oskardrums provided a GraphQL module as an extension to
    the HTTP client framework.
  • @mgondan1 and @peter.ludemann provided several portability
    and documentation enhancements.
  • setarg/3 semantics has been simplified and documented better based on discussion here.
  • A couple of fixes to the Windows handling for high (>0xffff)
    unicode characters.

No regression from the big changes to support Windows enhanced
Unicode support have been reported :slight_smile:

Enjoy --- Jan

SWI-Prolog Changelog since version 8.5.14

  • ADDED: PL_get_stream_from_blob()

  • PORT: config/win32.h and config/win64.h have been removed.

  • DOC: Various updates to blob API (notably flags).

  • FIXED: Issue#1015: Small memory leak

  • CLEANUP: Windows: move config parameters to common CMake infrastructure
    instead of using the dedicated hard-coded values.

  • BUILD: Determine architecture from CMAKE_SYSTEM_PROCESSOR and
    CMAKE_SYSTEM_NAME rather than their HOST counterparts.

  • DOC: setarg/3: point at arg/3.

  • FIXED: setarg/3 to unify always when the first argument is a
    variable. Abramo Bagnara.

  • TEST: Do not run cyrillic file tests if the text encoding cannot
    represent them.

  • TEST: Set UTF-8 encoding.

  • DOC: setarg/3 if the designated argument is a variable.

  • ENHANCED: C version of nth0 to be more consistent with the Prolog
    implememtation and allow for interupts.

  • ENHANCED: performance for nth0/3 in mode (+,+,?)

  • PORT: Issue#1009: Avoid conflict between Qt and swipl-win target.

  • PORT: Suppress uninit warning in msys2 I think this can safely be
    initialized to FALSE

  • FIXED: user_or_explicit autoload mode not working

  • FIXED: make_library_index/1 to use the xref flag while reading the
    file header. Avoids unwanted term expansion.

  • PORT: WASM version: statistics/2 cputime now actually returns
    walltime since the start of Prolog. This allows for basic performance
    evaluation on CPU based tasks. WASM does not provide primitives to
    access the actual CPU time usage.

  • PORT: Make compile again in WASM. Reported by Jos de Roo

  • FIXED: string_bytes/3 to ascii: avoid crash and raise an exception
    if the text cannot be represented using ASCII.

  • FIXED: string_bytes(+,-,octet) (crashed on assertion error)

  • FIXED: write/1 for strings using UTF-16 encoding (Windows).

Package http

  • FIXED: Also escape line terminators when writing graphql strings…
    …as per GraphQL

  • ADDED: library(http/graphql) implementing a GraphQL reader and QQ

Package jpl

  • TEST: simplify & tidy unit tests Tidier, simpler JUnit tests, removing
    dead code and duplicated stuff, with reduced noise from succeeding
    tests (still available via REPORT flag, but now quieter by default).

  • ENHANCED: non-recursive Term.getSubsts reimplementation This
    fixes another term-depth-limited issue with JPL’s public API by
    reimplementing Term.getSubsts() non-recursively