Dear SWI-Prolog user,
SWI-Prolog 9.1.2 is ready for download. It is pretty close to 9.0.3.
It got some patches to odbc and semweb for clean compilation on some
targets. plunit is diverging. Development on plunit aims at better
feedback and support for paralel testing. Current changes are mostly
code cleanup though.
Enjoy --- Jan
SWI-Prolog Changelog since version 9.1.1
-
PORT: Fix crash in walking the Prolog stack for gcc 12 on arm
32-bit. This is caused by padding added instruct queryFrame
between
saved_environment
andtop_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 odbc
-
PORT: More odbc type work around. As we do not use long [long] int
sizes or availability, just leave them undefined and let unixODBC do
its magic. -
PORT: Include patch from Debian for some 32-bit systems. Some versions
of sql.h depend onHAVE_LONG_LONG
. Our code does not use any of
the properties forlong int
.
Package plunit
-
ADDED: test_set_options/1: output(+Mode) to suppress output or emit
it only after the test fails. -
CLEANUP: Cleaner code for running tests and map to results. This is a
squashed commit for a large set of improvements. Roughly, in tackles:- Cleaner wrapping code for running the tests, removing a lot of
code duplications - Make test time available to a larger part of the code and use
call_time/2 to get more extensive resource usage information than
just time. - MODIFIED: Various message formats have changed. This may impact
code that uses the message hooks to make the output satisfy some
test driver. This is also the driving force: the end-goal of
these changes is to provide a good concurrent test framework.
- Cleaner wrapping code for running the tests, removing a lot of
-
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 bemodified
.