# Ann: SWI-Prolog 8.3.16

**URL:** <https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-16/3416>\
**Category:** Releases\
**Created:** [December 24, 2020, 1:51pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-16/3416 "2020-12-24T13:51:37Z")\
**Posts on this page:** 3\
**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:** [December 24, 2020, 1:51pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-16/3416/1 "2020-12-24T13:51:38Z")

</div>

Dear SWI-Prolog user,

I’m happy to announce SWI-Prolog 8.3.16, the X-mas edition 🙂 It has  
been a weird year for practically all of us. There has been a lot of  
pressure on many of us. Luckily, programming is among the least affected  
activities.

During 2020 SWI-Prolog got a lot more tabling support. We started to  
explore the novel _monotonic tabling_ technique. Announced already at  
the CICLOPS 2012, SWI-Prolog finally got a _transactional database_. The  
year 2020 is the year in which _SWI-Prolog Solutions b.v._ was born.  
_SWI-Prolog Solutions b.v._ must mature in 2021. How is still mostly an  
open question. This move did open contacts with people and companies  
that are or are looking into deploying Prolog for new challenging  
projects. I have good hope some of this will materialize and make  
resources available that help solving pressing problems such as  
training, good tutorial documentation, commercial support, better tool  
support, performance improvements, etc. Anyone willing to cooperate  
on this, either by helping to provide some of this or by making it commercially  
feasible to get some of this realized, please contact me by private message  
through the forum or mail. I love to have telcos with users that have ideas  
about these matters.

Highlights for the X-mas release: some serious bugs fixed, improvements  
to “Prolog dialect” emulation, and ongoing work on tabling. More in  
particular:

- Possible crash in the debugger (trapped by SWISH)

- Fixed expand\_file\_name/2 for Windows on files holding Unicode  
characters.

- Fixed crash in answer subsumptive (moded) tabling.

- Start supporting answer subsumptive tabling with incremental  
and monotonic tabling. Works for simple cases. Many possible  
scenarios are still untested.

- @dgelessus started SICStus 4 emulation

# SWI-Prolog Changelog since version 8.3.15

- FIXED: Possible crash of the debugger on the call port. We need  
to set PC to the new predicate before the trace callback or  
clearUninitialisedVars() may reset wrong variables.

- ENHANCED: absolute\_file\_name/3: do not create XDG directories unless  
the requested access is `write` or `append`.

- FIXED: Properly detect change after lazy update of a monotonic table.

- FIXED: Issue#751: call\_with\_depth\_limit/3 with limit -1. David  
Tonhofer. This patch also cleans up mixed types for handling the  
limit and possible limit overflows.

- ADDED: Support answer subsumption together with incremental and  
monotonic tabling.

- FIXED: Make current\_table/2 work for answer subsumption.

- FIXED: Issue#747: Windows: expand\_file\_name/2 Unicode issues.

- ADDED: Pass additional tabling options for answer subsumption.

- ADDED: Initial SICStus 4 emulation (expects\_dialect(sicstus4)).  
This is separate from the existing SICStus emulation  
(expects\_dialect(sicstus)), which emulates almost only SICStus 3  
features. The few SICStus 4-only features that were emulated by the  
sicstus dialect have been moved to the sicstus4 dialect.

- FIXED: SICStus library(lists) emulation now only re-exports predicates  
that exist on SICStus. This fixes name conflicts when code written  
for SICStus imports all of library(lists) and then defines its own  
predicate with a name that isn’t used in SICStus library(lists)  
but is used on SWI, for example flatten/2.

- ADDED: nth/4, is\_list/1, memberchk/2 to SICStus library(lists)  
emulation.

- FIXED: expects\_dialect/1: always load SWI-Prolog library modules in  
`swi` dialect.

- FIXED: Issue#742: expects\_dialect/1: switch `emulated_dialect` flag  
after loading the dialect specific library.

- FIXED: Issue#742: file resolution may be based on the current  
dialect. This patch includes the dialect in the caches.

- DOC: document use of call/N explicitly

- FIXED: We cannot catch a delimited continuation through a  
findall/3. Raise an error and give better messages for attempts to  
table this way.

- DOC: Fixed a typo, added commas and needed spaces.

- DOC: Fixed a type, added commas and needed spaces.

- FIXED: Item#740: cleanup of removed subsumed answers may cause  
wrong enumeration of tabling worklists as well as use-after-free  
(and thus crashes). Reported by Damiano Azzolini.

- FIXED: is\_git\_directory/1 for submodules.

- FIXED: Reloading library(git) due to operator conflict.

- FIXED: is\_git\_directory/1 for submodules.

## Package ssl

- TEST: Issue#159: OpenSSL 1.1.1i changed sequence for `unknown_issuer`  
certificate reporting. Patch by Kurt Roeckx.

---

<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:** [December 26, 2020, 4:55pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-16/3416/2 "2020-12-26T16:55:54Z")

</div>

> [@jan](#):
>
> [SWI-Prolog](https://www.swi-prolog.org/pldoc/doc_for?object=manual) finally got a _transactional database_ .

You mean that the fact base is now transactional, with commit, rollback and all …

Or, perhaps even (XSB like) transaction logic – with backtracking as well.

thank you,

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:** [December 26, 2020, 4:57pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-16/3416/3 "2020-12-26T16:57:55Z")

</div>

> [@grossdan](#):
>
> You mean that the fact base is now transactional, with commit, rollback and all …

Yes, See transaction/1 and friends as well as quite a long discussion here some time ago.
