Ann: SWI-Prolog 9.0.3

Dear SWU-Prolog user,

SWI-Prolog 9.0.3 (stable) is ready for download. The number of patches is
small. Most of them concern portability and testing.

Enjoy --- Jan

SWI-Prolog Changelog since version 9.0.2

  • PORT: Fix crash in walking the Prolog stack for gcc 12 on arm
    32-bit. This is caused by padding added in struct queryFrame between
    saved_environment and top_frame

  • PORT: Fixed rationalize/1 and cmpFloatNumbers() to fail due to
    gcc optimization using internal wide float registers rather than
    comparing 64 bit doubles. Not entirely sure this is our mistake
    or within GCC’s claim to work with the extended float registers.
    Bottom line is that comparing a double (from memory, so 64 bits) to
    the result of a computation may return non-equal even if the extended
    float when forced to 64 bits is equal. This problem surfaced in i386
    using gcc 12.2.0.

  • FIXED: Issue#119: library(apply_macros) goal expansion for phrase/3
    using a partial terminal was too greedy. Uwe Neumerkel.

  • FIXED: Initialise Prolog flag encoding from locale name. Internal
    UTF-8 decoding is typically faster than the C library multibyte
    operations.

  • FIXED: clause/2,3: possible GC crash when dealing with moved
    unification
    . We cannot have references to the local stack and thus
    we must allocate the support variable on the global stack.

  • ENHANCED: If one of the standard streams of a thread has been closed,
    rebind the stream to the original process streams. This can happen
    if, for example, we create a thread while output is redirected to
    some stream. If now this stream is closed the thread ends up with
    a closed standard stream.

Package http

  • TEST: Avoid using test condition bindings.

Package mqi

  • TEST: Avoid recorsive Python exception

Package plunit

  • ADDED: current_test_unit/2 to enumerate the available unit tests.

Package redis

  • TEST: More relaxed timing to make test pass on heavily loaded machines.

Package semweb

  • PORT: Support full Unicode input for ntriples and trutle on
    Windows. Based on PR#108 by @mgondan.

Package sweep

  • ADDED: new command sweeprolog-infer-indent-style * sweeprolog.el
    (sweeprolog-infer-indent-style): new command. * sweeprolog-tests.el:
    test it. * README.org (“Indentation”): mention it.

  • FIXED: stale predicate locations in loaded modified buffers * sweep.pl
    (sweep_predicate_location_/2,3): prefer xref over loaded predicate
    properties. * sweeprolog.el (sweeprolog-predicate-location): first
    analyze buffer if modified to update xref data.

Package xpce

  • FIXED: file<-time default was accidentally to access where it used
    to be modified.