# Ann: SWI-Prolog 8.1.14

**URL:** <https://swi-prolog.discourse.group/t/ann-swi-prolog-8-1-14/1302>\
**Category:** Releases\
**Created:** [September 23, 2019, 10:01am UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-1-14/1302 "2019-09-23T10:01:27Z")\
**Posts on this page:** 4\
**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:** [September 23, 2019, 10:01am UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-1-14/1302/1 "2019-09-23T10:01:27Z")

</div>

Dear SWI-Prolog user,

SWI-Prolog 8.1.14 is available for download. This version provides some  
important bug fixes and more XSB compatibility. Highlights:

- Ports: zip API for Endroid (by erlanger)
- Unicode: fixed tmp\_file\_stream/3, surely for Unix and hopefully  
for Windows. May fix check\_installation/0 for Windows users with  
non-ascii login name.
- Tabling: fix in tries, mostly affecting answer subsumption, speedup  
incremental dependency graph maintenance when calling incremental  
dynamic predicates, XSB compatibility extensions and fixes.
- Cleaning issues reported by Paulo Moura’s Logtalk linter.
- Speedup `\=/2` for simple cases.
- Work on cleaning up the profiler API. Now provides all four ports,  
but the counts are sometimes incorrect. Only the call port count  
is fully reliable.
- Allow thead\_signal/2 to `main` when using the libedit commandline  
editor (default on Unix).

Notably the latter two are to support the develpment of a web dashboard  
to monitor SWI-Prolog processes, currently mostly tabling. See

> **[SWI-Prolog/webstat](https://github.com/SWI-Prolog/webstat)**
>
> Examine SWI-Prolog resources and data using your browser - SWI-Prolog/webstat

```
Enjoy --- Jan

```

P.s. MacOS binary will follow later today.

# SWI-Prolog Changelog since version 8.1.13

- FIXED: tmp\_file\_stream/3 for unicode temp directory. Surely fixed  
on non-Windows. I do not have the right setup to test on Windows.

- PORT: Android minizip to use consistent file api

- ENHANCED: profile\_data/1: find predicates from the stored call graph  
rather than enumerating all known predicates. Provides a big speedup.

- FIXED: profiler: avoid falsely reported self-recursion on auto-loaded  
predicates, as well as other double checks in this event.

- FIXED: profiler: bump redo access on parents.

- ADDED: Make number of passes through the exit port available from  
the profiler data

- ADDED: profile\_data/1 to library(statistics) and use dicts for dealing  
with the profile data structures.

- XSB: Silently ignore debug\_ctl/2 calls that are not supported. Added  
xsb(compat) debug/1 topic to report possible compatibility issues.

- FIXED: `clauses` and `codes` statistics for compiled tables.

- XSB: Added timed\_call/2 emulation.

- FIXED: single-threaded build. Abramo Bagnara.

- STATS: removed trie statistics `gen_exit_count` and `gen_fail_count`.  
Added `invalidated` and `reevaluated` to track incremental tabling.

- ENHANCED: Instead of using the wrap\_predicate/4 interface to trap  
calls to dynamic incremental predicates use a dedicated supervisor  
instruction in the VM.

- ENHANCED: Speedup \=/2 using a shortcut for the simple cases.

- FIXED: trie\_gen/2,3: deal with last-argument optimization. Reported by  
Hakan Kjellerstrand, also issue#490.

- XSB: Support `debug_ctl(hide, Preds)`

- ADDED: limit/2: allow for a limit `infinite`

- XSB: Several enhancements to the emulation: Added (very partial)  
fmt\_write/2,3, domain\_error/4, print\_backtrace/1, xsb\_backtrace/1  
and fixed incr\_asserta/1 and incr\_assertz/1.

- XSB: Started extended version of XSB’s library `lists`.

- XSB: extended module `machine` with conset/2, conget/2 and parsort/4.

- XSB: provide incr\_asserta/1 and incr\_assertz/1.

- XSB: Started implementing debug\_ctl/2.

- CLEANUP: subsumes\_chk/2 and subsumes/2 are provided by library(terms).

- FIXED: ansi\_format/3: handling of h(Name) for 8-bit color  
specification. Paulo Moura using Logtalk linter.

- FIXED: library(prolog\_colour): prolog\_colourise\_query/3.

- ADDED: library(prolog\_code), providing several commonly used predicates  
to reason about Prolog programs.

- ENHANCED: error checking and reports from ‘$pi\_head’/2, propagating  
into better messages from several built-in predicates.

- FIXED: library(prolog\_codewalk): limit initialization goals to  
target module.

## Package clib

- DOC: call\_with\_time\_limit. Nicos Angelopoulos.

## Package cql

- CLEANUP: Logtalk linter warnings.

## Package http

- CLEANUP: Duplicate directive. Logtalk linter.

## Package libedit

- ENHANCED: Allow processing thread\_signal/2 messages.

## Package pengines

- CLEANUP: Avoid duplicate declaration. Logtalk linter.

## Package tipc

- BUILD: Issue#506: TIPC does not depend on libedit.

## Package xpce

- CLEANUP: Make the profiler run on library(statistics) instead of  
replicating the code.

- FIXED: profiler table header for clusters

- ADDED: Graphical profiler: show exit and fail counts.

- PORT: Use new ‘$prof\_procedure\_data’/10 (extra Exit arg)

---

<div class="post-metadata">

**Author:** ![EricGT](https://avatars.discourse-cdn.com/v4/letter/e/f1d935/32.png) [@EricGT](https://swi-prolog.discourse.group/u/EricGT)\
**Post date:** [September 23, 2019, 10:43am UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-1-14/1302/2 "2019-09-23T10:43:33Z")

</div>

@pmoura

As I see lots of `Logtalk linter` ([Linter](https://swi-prolog.discourse.group/t/linter/1160)) in the notes, and this is one of rare times when I know the person behind the scenes, and I can’t give you a like (heart) with the post, adding this to also say thank you.

---

<div class="post-metadata">

**Author:** ![EricGT](https://avatars.discourse-cdn.com/v4/letter/e/f1d935/32.png) [@EricGT](https://swi-prolog.discourse.group/u/EricGT)\
**Post date:** [September 23, 2019, 10:58am UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-1-14/1302/3 "2019-09-23T10:58:34Z")

</div>

> [@jan](#):
>
> Speedup \=/2 for simple cases.

I am interested to learn more about this. Can you provide a link to the file(s) that where changed with this at GitHub?

* * *

EDIT after Jan replied.

Didn’t know that the summary lines above were for the most part coming directly from the messages in the Git [pull request](https://help.github.com/en/articles/about-pull-requests).

In other words, to see the code specific to a line from the release notes

1. Go to GitHub SWI-Prolog repository ([link](https://github.com/SWI-Prolog))
2. Under `Pinned repositories` click on `swipl-devel` ([link](https://github.com/SWI-Prolog/swipl-devel))
3. Look for `commits` and click on it. It may not look like a link but it is. ([link](https://github.com/SWI-Prolog/swipl-devel/commits/master))

![image](https://global.discourse-cdn.com/free1/uploads/swiprolog/original/1X/1e6bdaac53a71e3563b75d2642c4586e756430f3.png)

1. Scan down until you see the title of the commit that matches the line for the release notes.

---

<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:** [September 23, 2019, 11:19am UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-1-14/1302/4 "2019-09-23T11:19:33Z")

</div>

See [https://github.com/SWI-Prolog/swipl-devel/commit/eb6533b34e28e889c9893413230e5d3965aefbf5](https://github.com/SWI-Prolog/swipl-devel/commit/eb6533b34e28e889c9893413230e5d3965aefbf5)
