Ann: SWI-Prolog 8.3.14

Dear SWI-Prolog user,

I’m happy to annouce SWI-Prolog 8.3.14. This is mainly a minor
maintenance release fixing some bugs and enhancing documentation. It is
good to see that notably improving the documentation is becomming more
and more a community effort.

Enjoy --- Jan

SWI-Prolog Changelog since version 8.3.13

  • FIXED: Consistent answer count admin for answer subsumptive
    tabling. Resulted in “OOPS: trie_property/2: counted %zd values,
    admin says %zd\n” messages.

  • ENHANCED: library(aggregate) to hide internal details from the
    debugger. Suggested by Peter Ludemann.

  • ADDED: body_term_calls/2 to library(prolog_code).

  • DOC: Slight touches to the documentation.

  • FIXED: Handling of the Prolog flag compile_meta_arguments.

  • ADDED: prolog_listen/3: allow naming an event callback using a
    name(Name) option. Registering a callback on the same channel with the
    same name updates the associated goal rather than adding a new one.

  • FIXED: Save/restore whether we are in monotonic answer propagation
    when doing a save/restore of the tabling status.

  • FIXED: retract((m:head :- Body)) failed.

  • DOC: Document updating the Docker library.

  • FIXED: Issue#714: transaction semantics on some platforms due to
    missing volatile declaration.

  • FIXED: Typo in MemoryBarrier() based sync macros.

  • DOC: Reformat textdebugger.md Surround example predicate indicators
    (/) with double backticks (``) to prevent auto linking.

  • DOC: Fix typos

  • ADDED: Track events on answer tries using prolog_listen/2,3

  • FIXED: Error handling in sending predicate events.

  • ENHANCED: Allow listening on a predicate before it is defined.

  • DOC: Fix priority of | operator. Spotted by Falco Nogatz.

  • FIXED: protect dynamic clauses in continuations. This patch solves
    the same problem as cca23badcbfb2dad7089696348aae56e50b84a3c, but also
    protects the clause itself during the execution of the continuation.

  • FIXED: Issue#706: call_continuation/1: environment clause reference
    cannot be from the blob in the continuation as this may be reclaimed
    in AGC. May cause a crash while getting a backtrace from restarted
    continuation. GC also uses the clause info, so this can probably
    crash as well. Reported by David Tonhofer.

  • PORT: Set MACOSX_DEPLOYMENT_TARGET for building the MacOS dependencies.

  • DOC: Corrext examples for rational numbers to use lowercase “r”
    instead of formerly discussed “R”

Package bench

  • ADDED: Answer subsumption benchmark.

Package clib

  • FIXED: library(udb_broadcast): determine subnet mask for 127...*
    network. Jacob Friedman.

Package semweb

  • FIXED: sparql_query/3: ignore white space in values. Johan Romme.
    Bug introduced by ef7ee735df9445b061cecc23c5d707d51e470edd

Package xpce

  • FIXED: Issue#19: Possibly buffer overflow and incorrect error message
    if XPCE cannot connect to the given display.

  • FIXED: Example defaults file: emacs_prolog_mode.dependency_directive
    class variable must be quoted.

2 Likes

Thanks Jan and after building this version it a second time it worked fine, but the first time I got the following error:

 8/69 Test  #3: swipl:core .......................***Failed    7.19 sec
Running scripts from core .............................................................................................................................................................................................................................................................................................................
ERROR: /home/jdroo/github.com/SWI-Prolog/swipl-devel/src/Tests/core/test_db.pl:94:
        test qhead: failed

.........
Script /home/jdroo/github.com/SWI-Prolog/swipl-devel/src/Tests/core/test_db.pl failed
................
...........
..
......
........
......
...
........
...................................................
....
..
..........
.....
..
.....
..
.......
..........
....
.................
.........
....
.
.....
.
....
.
..........
...
..........................................
Warning: IEEE 754 dubious rounding: exp(log(2)): z = 2.0, p = 2.0
Warning: IEEE 754 dubious rounding: exp(log(2)): n = 2.0, p = 2.0
Warning: IEEE 754 dubious rounding: -2.0**1r3: n = -1.2599210498948732, z = -1.2599210498948732
Warning: IEEE 754 dubious rounding: -2.0**1r3: n = -1.2599210498948732, p = -1.2599210498948732
Warning: IEEE 754 dubious rounding: 2.0**1r3: z = 1.2599210498948732, p = 1.2599210498948732
Warning: IEEE 754 dubious rounding: 2.0**1r3: n = 1.2599210498948732, p = 1.2599210498948732
Warning: IEEE 754 dubious rounding: exp(log(2)): z = 2.0, p = 2.0
Warning: IEEE 754 dubious rounding: exp(log(2)): n = 2.0, p = 2.0
Warning: IEEE 754 dubious rounding: -2.0**1r3: n = -1.2599210498948732, z = -1.2599210498948732
Warning: IEEE 754 dubious rounding: -2.0**1r3: n = -1.2599210498948732, p = -1.2599210498948732
Warning: IEEE 754 dubious rounding: 2.0**1r3: z = 1.2599210498948732, p = 1.2599210498948732
Warning: IEEE 754 dubious rounding: 2.0**1r3: n = 1.2599210498948732, p = 1.2599210498948732
Warning: IEEE 754 dubious rounding: exp(log(2)): z = 2.0, p = 2.0
Warning: IEEE 754 dubious rounding: exp(log(2)): n = 2.0, p = 2.0
Warning: IEEE 754 dubious rounding: -2.0**1r3: n = -1.2599210498948732, z = -1.2599210498948732
Warning: IEEE 754 dubious rounding: -2.0**1r3: n = -1.2599210498948732, p = -1.2599210498948732
Warning: IEEE 754 dubious rounding: 2.0**1r3: z = 1.2599210498948732, p = 1.2599210498948732
Warning: IEEE 754 dubious rounding: 2.0**1r3: n = 1.2599210498948732, p = 1.2599210498948732
.
Warning: IEEE 754 dubious rounding: exp(log(2)): z = 2.0, p = 2.0
Warning: IEEE 754 dubious rounding: exp(log(2)): n = 2.0, p = 2.0
Warning: IEEE 754 dubious rounding: 2**0.5: z = 1.4142135623730951, p = 1.4142135623730951
Warning: IEEE 754 dubious rounding: 2**0.5: n = 1.4142135623730951, p = 1.4142135623730951
Warning: IEEE 754 dubious rounding: -2.0**1r3: n = -1.2599210498948732, z = -1.2599210498948732
Warning: IEEE 754 dubious rounding: -2.0**1r3: n = -1.2599210498948732, p = -1.2599210498948732
Warning: IEEE 754 dubious rounding: 2.0**1r3: z = 1.2599210498948732, p = 1.2599210498948732
Warning: IEEE 754 dubious rounding: 2.0**1r3: n = 1.2599210498948732, p = 1.2599210498948732
Warning: IEEE 754 dubious rounding: exp(log(2)): z = 2.0, p = 2.0
Warning: IEEE 754 dubious rounding: exp(log(2)): n = 2.0, p = 2.0
Warning: IEEE 754 dubious rounding: 2**0.5: z = 1.4142135623730951, p = 1.4142135623730951
Warning: IEEE 754 dubious rounding: 2**0.5: n = 1.4142135623730951, p = 1.4142135623730951
Warning: IEEE 754 dubious rounding: -2.0**1r3: n = -1.2599210498948732, z = -1.2599210498948732
Warning: IEEE 754 dubious rounding: -2.0**1r3: n = -1.2599210498948732, p = -1.2599210498948732
Warning: IEEE 754 dubious rounding: 2.0**1r3: z = 1.2599210498948732, p = 1.2599210498948732
Warning: IEEE 754 dubious rounding: 2.0**1r3: n = 1.2599210498948732, p = 1.2599210498948732
Warning: IEEE 754 dubious rounding: exp(log(2)): z = 2.0, p = 2.0
Warning: IEEE 754 dubious rounding: exp(log(2)): n = 2.0, p = 2.0
Warning: IEEE 754 dubious rounding: 2**0.5: z = 1.4142135623730951, p = 1.4142135623730951
Warning: IEEE 754 dubious rounding: 2**0.5: n = 1.4142135623730951, p = 1.4142135623730951
Warning: IEEE 754 dubious rounding: -2.0**1r3: n = -1.2599210498948732, z = -1.2599210498948732
Warning: IEEE 754 dubious rounding: -2.0**1r3: n = -1.2599210498948732, p = -1.2599210498948732
Warning: IEEE 754 dubious rounding: 2.0**1r3: z = 1.2599210498948732, p = 1.2599210498948732
Warning: IEEE 754 dubious rounding: 2.0**1r3: n = 1.2599210498948732, p = 1.2599210498948732
..
...
.........
...
................
..
.........
..
..................................................................................................
.
...........
....
........
....
.....
........
.......
...............
...
..
..............
...
....
........
...........
...
..........
.......
.....
......
...................
...............
................
....
.............
.....................
.........
.....
......
..........
....
....
..
....
.....
...........................
.
...
..
.....
...
.........
...
.
......
.....
.
. done
*** 1 tests failed ***

Weird. I guess the first time was an incremental build? Still, this would hint at some dependency issue as the test is a nice clean deterministic test. Hard to say …

Yes indeed Jan, and it was an incremental build on a WSL 1 Ubuntu 18.04 LTS machine.
Redoing the incremental build worked fine.
Just did the similar incremental build on a WSL 2 Ubuntu 20.04 LTS machine and that works fine.

1 Like

Thanks. I’m aware the version update doesn’t work well on incremental builds unless your run ninja or make twice. I’m still not sure how to fix that. Possibly by updating the GIT version info in CMake rather than as part of the build process? There also seems to be a flaw rebuilding some of the .qlf files in an incremental built under some changes. That is not so bad as the out-of-date .qlf file is updated by Prolog when used anyway. This test tests a modification in the C files though. That makes it rather strange.

Could it be you have an LD_LIBRARY_PATH variable that makes it load libswipl.so from installed location rather than the build location? If all is right, CMake should print a warning if there are environment settings that may harm the build.

Bottom line: it is a good idea to run ninja/make twice for an incremental build …

Understand and thanks to explain it so clearly. On both machines I can’t find anything with

$ env | grep LD_LIBRARY_PATH

Indeed, running twice is a good thing :slight_smile: