# Ann: SWI-Prolog 8.1.29

**URL:** <https://swi-prolog.discourse.group/t/ann-swi-prolog-8-1-29/2211>\
**Category:** Releases\
**Created:** [April 22, 2020, 8:37am UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-1-29/2211 "2020-04-22T08:37:26Z")\
**Posts on this page:** 2\
**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:** [April 22, 2020, 8:37am UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-1-29/2211/1 "2020-04-22T08:37:26Z")

</div>

Dear SWI-Prolog user,

I’m happy to announce SWI-Prolog 8.1.29. This is approaching code freeze  
for 8.2.0, but we are not quit there. A good number of steps have been  
taken though:

- A number of fixes and enhancements to tabling: a possible crash related  
to tracing tabled code (not recommended), possible missing answers under  
subsumptive tabling, pretend shared tabled to be gone after abolish dispite  
the actual trie is not reclaimed, first implementation of _radial restraints_,  
providing partial answers by limiting the size of answers.

- Keri Harris fixed a bug that could cause a thread to go stealth and  
(thus) be missed by atom/clause garbage collection.

- Sebastian Sardina did a lot of work on JPL: modernise test framework  
to JUnit4 and support SWI-Prolog rational numbers. Note: packagers  
must add `junit4` as and `hamcrest` as new build dependencies.

- Carlo Capelli fixed 8-bit and true colour handling in the Qt console.

- Galileo Sartor completed the snap specification, providing up-to-date  
binaries for any (amd64) Linux system.

- Thanks to some persistency of Rick Workman I had to confirm that  
Apple’s Xcode 11 makes performance drop by almost 50%. Switched  
to gcc-9 for the MacOS bundle, providing over 10% better performance  
than the older Xcode.

- MODIFIED: the default C type for exchanging _arities_ is now `size_t`.  
Foreign extensions are strongly adviced to use this convention. You  
still _can_ get the old behaviour using these declarations:

- Quite a few portability and build issues have been fixed.

- Fixed a possible crash on pcre regular expressions allocating the  
output vector too short.

- Various documentation fixes and enhancements.

Still new things on the agenda before 8.2 are below. The rest should  
be bug fixing only.

- Call size restraint for tabling (completed restraint handling to  
the level provided by XSB).

- X11 application icons to follow the Free Desktop conventions (icons  
are now empty on some Linux desktops).

## Special notes for MacOS users

Notably considerations for @pmoura for Macports as well as the Homebrew maintainer:

- The download bundle is built with gcc-9 using PGO optimized compilation. It should  
be a little faster than 8.1.26 and much faster then 8.1.27/8.1.28 (on MacOS)
- If you build using Macports you
  - must install `hamcrest-core` as a new dependency (else the prolog-in-java test fails)

  - may install `gcc9` and build SWI-Prolog as below to make it about twice as fast as a build using the default Xcode 11

# SWI-Prolog Changelog since version 8.1.28

- ADDED: CHK\_ATOM\_GARBAGE\_COLLECTED Prolog debug topic. The sanity-checks  
provided by this topic used to be provided by CHK\_SECURE.

- DOC: radial\_restraint/0.

- FIXED: radial\_restraint/0.

- FIXED: Tabling tripwire raising wrong exception.

- ADDED: Handle :- table … as abstract\_answer(N).

- ADDED: $trie\_insert\_abstract/3. Intended to debug size abstraction.

- MODIFIED: size\_abstract\_term/3 to implement what I think is the  
intended semantics of term size abstraction of XSB.

- DOC: make sure archive package is built before prolog\_pack  
documentation.

- DOC: Wrong ssl dependency (gives Prolog error messages during build,  
otherwise harmless).

- FIXED: GC may miss threads if thread\_highest\_id is decremented below  
a newly instantiated thread

- MACOS: Added distribution build using gcc 9

- PORT: Use CMake to find out whether the 64 bit file functions are  
supported for minizip.

- ENHANCED: zipper\_open\_current/3: Use full buffering.

- FIXED: current\_table/2 to consider emptied shared tables as  
non-existent. Jacco van Ossenbruggen.

- FIXED: Inconsistent index for call subsumption may cause answers to  
be lost.

- MODIFIED: Change the default for exchanging arity from `int` to  
`size_t`. The use of `int` was deprecated for a long time. The old  
behaviour can be regained using `#define PL_ARITY_AS_SIZE 0` before  
loading `SWI-Prolog.h`.

- PORT: Deal with missing MAP\_ANONYMOUS if MAP\_ANON exists.

- FIXED: Avoid code walker to walk over wrappers.

- FIXED: trie\_gen\_compiled/2,3 to fail on clause/2,3 and retract/1,  
claiming to have no clauses. Fixes a crash when trying to index  
the clauses. These are two rather weird predicates …

## Package http

- ADDED: hub\_member/2 to library(http/hub).

- DOC: Wrong ssl dependency (gives Prolog error messages during build,  
otherwise harmless).

## Package jpl

- ENHANCED: Avoid dependency on clib package.

- TEST: Migrate to JUnit 4 - addresses #40

## Package odbc

- DOC: odbc\_close\_statement/1 missing arity.

- DOC: Predicate description outside LaTeX description disturbs the  
layout and documentation index generation for the ODBC package.

## Package pcre

- FIXED: Issue#571: pcre allocation of the output vector could be  
too short. David Sitsky.

## Package pengines

- FIXED: library(pengines\_io): We cannot autoload  
library(http/html\_write) due to use of :- html\_meta/1

- TEST: test\_local.pl no longer exists.

## Package plunit

- FIXED: Missing import

## Package swipl-win

- FIX: add ESC sequence for 8 bit and true color

## Package xpce

- FIXED: Avoid infinite recursion if neither a specific font nor the  
default font exists.

---

<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:** [April 22, 2020, 4:33pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-1-29/2211/2 "2020-04-22T16:33:27Z")

</div>

> [@jan](#):
>
> The download bundle is built with gcc-9 using PGO optimized compilation. It should  
> be a little faster than 8.1.26 and much faster then 8.1.27/8.1.28 (on MacOS)

Something went wrong and this is still the good old Xcode 11 build. Next time 🙂
