Ann: SWI-Prolog 9.3.5

Dear SWI-Prolog user,

SWI-Prolog 9.3.5 is ready for download. As to be expected after the
internal reorganization in 9.3.4 there was some regression. @josderoo
spotted one stack shift issue. SWISH found another one. This quick
release fixes this and a couple of other raised issues.

It also adds a more verbose crash logs that should make it easier to
fix possibly remaining regression issues. Most seem related to not
making all state accessible to the stack shifter. With relative
addressing this was not an issue, but with the new absolute addressing
it is.

Please keep testing, so we can quickly return to the common practice
that the development series are more reliable than the stable versions.
Ideally the development series only makes more changes that may, at
least in theory, affect compatibility, notably for new features.

Enjoy --- Jan

SWI-Prolog Changelog since version 9.3.4

  • DEBUG: Save C backtraces at GC and SHIFT start

  • DEBUG: Improve crash context printing Make all fatal errors
    (sysError(), assertion failure and fatal signal) call new function
    printCrashContext() that prints more extensive information about
    the crash

  • FIXED: notrace/1 could raise a representation_error(size_t)
    exception This exception is raised if the trace skip level =

  • FIXED: call/1 (I_USERVALL0) GC issue call/1 did not correctly make
    the goal available to GC if stack expansion is required.

  • MODIFIED: term_string/2,3, atom_to_term/2 and read_term_from_atom/3
    now raise exception on empty input These predicates used to
    produce the atom end_of_file. Now they raise the exception

  • PORT: Fix case conversion for Unicode characters on Windows.

  • TEST: Disable case test for u00ff on Windows. towupper(0xff)
    returns 0x9f on Windows.

  • FIXED: prolog_walk_code/1: no matching rule from goals reached from
    a :- initialization.

  • BUILD: Extended scripts/configure to include termux

  • FIXED: Stack shifter Foreign frames may hold references to the local
    stack in addition to global stack references.

Package http

  • MODIFIED: json_write/3 and friends: no spacing with width(0).
    If the option width(0) is provided, do not emit a space after a
    β€œ,” delimiting object fields. This implies spacing is minimal.
    This is a requirement for signing JSON documents.

  • DOC: http_post_data/3: document string([Type], String) data


Thanks to the instruction

Homebrew can install HEAD version of swipl delelop version

%  brew install --HEAD swi-prolog
% swipl --version
SWI-Prolog version 9.3.5 for x86_64-darwin

Great !