# Ann: SWI-Prolog 8.3.14

**URL:** <https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-14/3319>\
**Category:** Releases\
**Created:** [November 30, 2020, 10:13am UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-14/3319 "2020-11-30T10:13:41Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![jan](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/jan/32/4_2.png) [@jan](https://swi-prolog.discourse.group/u/jan)\
**Post date:** [November 30, 2020, 10:13am UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-14/3319/1 "2020-11-30T10:13:42Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![josderoo](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/josderoo/32/3752_2.png) [@josderoo](https://swi-prolog.discourse.group/u/josderoo)\
**Post date:** [November 30, 2020, 10:22pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-14/3319/2 "2020-11-30T22:22:14Z")

</div>

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***
```

---

<div class="post-metadata">

**Author:** ![jan](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/jan/32/4_2.png) [@jan](https://swi-prolog.discourse.group/u/jan)\
**Post date:** [December 1, 2020, 8:00am UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-14/3319/3 "2020-12-01T08:00:54Z")

</div>

> [@josderoo](#):
>
> but the first time I got the following error:

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 …

---

<div class="post-metadata">

**Author:** ![josderoo](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/josderoo/32/3752_2.png) [@josderoo](https://swi-prolog.discourse.group/u/josderoo)\
**Post date:** [December 1, 2020, 10:16am UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-14/3319/4 "2020-12-01T10:16:05Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![jan](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/jan/32/4_2.png) [@jan](https://swi-prolog.discourse.group/u/jan)\
**Post date:** [December 1, 2020, 10:35am UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-14/3319/5 "2020-12-01T10:35:35Z")

</div>

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 …

---

<div class="post-metadata">

**Author:** ![josderoo](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/josderoo/32/3752_2.png) [@josderoo](https://swi-prolog.discourse.group/u/josderoo)\
**Post date:** [December 2, 2020, 12:16am UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-14/3319/6 "2020-12-02T00:16:12Z")

</div>

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 🙂
