# Ann: SWI-Prolog 8.3.20

**URL:** <https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-20/3661>\
**Category:** Releases\
**Created:** [March 1, 2021, 2:39pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-20/3661 "2021-03-01T14:39:48Z")\
**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:** [March 1, 2021, 2:39pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-20/3661/1 "2021-03-01T14:39:48Z")

</div>

Dear SWI-Prolog user,

SWI-Prolog 8.3.20 is ready for download. Highlights:

- Mostly fixing to lazy monotonic tabling.

- Updates for MinGW 10. Default Windows release build moved to  
Fedora 33 (from 31), shipping with a new MinGW GCC compiler and  
more recent dependencies.

- Fixed two possible crashes reported by Jan Burse, dealing with  
calls to predicates with too high arity and too many open  
clause/2 or retract/1 calls.

# SWI-Prolog Changelog since version 8.3.19

- ENHANCED: trace/1,2: show calling thread if not `main`

- FIXED: Need to enable capturing dependencies when processing lazy  
monotonic answers.

- ENHANCED: library(portray\_text): updated docs, added set\_portray\_text/3  
to get current settings and added to main documentation.

- FIXED: abolish\_all\_tables/0 inside a transaction (more generally,  
abolishing tables inside a transaction).

- FIXED: Predicates using trie\_gen\_raw() did not properly handle cuts.

- FIXED: ‘$idg\_mono\_empty\_queue’/2 should only empty the dependency  
that we just processed (now ‘$idg\_mono\_empty\_queue’/1).

- FIXED: Issue#791: compiling calls to dynamically creating calls  
that exceed the maximum procedure arity. Exception changed to  
`representation_error(max_procedure_arity)` (was `max_arity)`.  
Added Prolog flag `max_procedure_arity`.

- FIXED: transaction\_updates/1: avoid reporting compiled trie  
clauses. Tabling consistency must be managed elsewhere.

- DOC: transaction\_updates/1: erased clauses are flagged erased(Ref)  
rather than erase(Ref).

- ENHANCED: Save --no-signals state into a saved state.

- DOC: csv\_read\_file\_row/3: to be done note was outdated. Boris  
Vassilev.

- FIXED: After lazy reevaluation of table using answer subsumption we  
should not queue a possibly deleted answer and we must delete pruned  
trie nodes from the lazy queues to affected nodes.

- FIXED: Issue#785: Crash when creating too many “predicate references”  
as created by e.g. clause/2 and retract/1.

- FIXED: Path canonisation for relative directories with sequences  
of “…/”. Makes read\_link/3 fail on links to `../../file`.  
Nicos Angelopoulos.

- ADDED: attach\_pack/2. Suggested by Falco Nogatz.

- PORT: Make compile using MinGW 10: include new libssp\*.dll runtime  
dll in distribution.

- PORT: Windows: use `__declspec(dllexport) extern type`.  
Abramo Bagnara.

- FIXED: propagate changing lazy monotonic into incremental tabling.

- FIXED: Only clear falsecount if the table is eager.

- FIXED: False count update after lazy evaluation of monontonic  
dependencies does not need to decrement the falsecount to zero.  
Instead we need to decrement after we processed all answers from an  
dependency edge.

## Package plunit

- ENHANCED: Abstract put\_char(user\_error, ‘.’), etc. to use  
print\_message/2 so we can change and suppress these messages.

- ADDED: plunit(summary(Dict)) silent message to easily get a summary  
report.

## Package xpce

- PORT: Make compile using MinGW 10. Avoids multiple definitions of  
global data symbols XPCE\_display, etc.

---

<div class="post-metadata">

**Author:** ![dtonhofer](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/dtonhofer/32/902_2.png) [@dtonhofer](https://swi-prolog.discourse.group/u/dtonhofer)\
**Post date:** [March 1, 2021, 7:14pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-20/3661/2 "2021-03-01T19:14:09Z")

</div>

Keeping on trucking!

---

<div class="post-metadata">

**Author:** ![jeshan](https://avatars.discourse-cdn.com/v4/letter/j/4da419/32.png) [@jeshan](https://swi-prolog.discourse.group/u/jeshan)\
**Post date:** [March 5, 2021, 12:38pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-20/3661/3 "2021-03-05T12:38:38Z")

</div>

how do you find time for so many releases spanning decades? 😀  
well done and thanks 👍

---

<div class="post-metadata">

**Author:** ![grossdan](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/grossdan/32/23_2.png) [@grossdan](https://swi-prolog.discourse.group/u/grossdan)\
**Post date:** [March 5, 2021, 1:14pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-20/3661/4 "2021-03-05T13:14:01Z")

</div>

Jan,

Why don’t you add a donate button on the swi prolog home page …

Is git still offering to match donations for projects hosted on git ?

Dan

---

<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:** [March 6, 2021, 12:54pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-20/3661/5 "2021-03-06T12:54:14Z")

</div>

I have tried a donate button in the past. Yes, it made a little money. Barely enough to be worth the trouble though. Possibly this has changed. Surely the attitude towards open source software has changed. I’m mostly interested in things that can make a difference: resources that can help someone to write a good book, online tutorial series, improve the website, improve the system, etc. If anyone has a good plan to get such things organized, please contact me. I prefer to spent most time on improving the system, help people to use the system efficiently and, through [SWI-Prolog Solutions b.v.](https://swi-prolog.discourse.group/t/swi-prolog-solutions-b-v/3328), help companies setting up or improving their Prolog related business.

---

<div class="post-metadata">

**Author:** ![grossdan](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/grossdan/32/23_2.png) [@grossdan](https://swi-prolog.discourse.group/u/grossdan)\
**Post date:** [March 6, 2021, 5:09pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-20/3661/6 "2021-03-06T17:09:57Z")

</div>

I think (hope) that with the (significant?) uptick in the use of swi-prolog, having a donate button might be worth the hassle, in particular, if it offers the option to donate a small, yet, recurring sum – perhaps, it would add up.

There could also be a “fund-me” page – where members of the community could offer to do one of the items you suggest (writing a book, tutorial series, etc) …

Daniel
