# Ann: SWI-Prolog 8.3.9

**URL:** <https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-9/3016>\
**Category:** Releases\
**Created:** [October 7, 2020, 2:32pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-9/3016 "2020-10-07T14:32:03Z")\
**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:** [October 7, 2020, 2:32pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-9/3016/1 "2020-10-07T14:32:03Z")

</div>

Dear SWI-Prolog user,

I’m happy to announce SWI-Prolog 8.3.9. This is a rather quick  
re-release due to a couple of old, but serious bugs. Please  
check the full log below for the fixes. The main new thing  
is the [Redis client](https://www.swi-prolog.org/pldoc/doc_for?object=section(%27packages/redis.html%27))

```
Enjoy --- Jan

```

# SWI-Prolog Changelog since version 8.3.8

- FIXED: Restore tries when re-evaluation is abandoned due to an  
exception. Cory Cohen.

- ENHANCED: Issue#685: must\_be/2: verify existence of the type before  
raising an error. David Tonhofer.

- FIXED: format\_predicate/2: prints alarming messages when the letter  
is already defined. Matt Lilley.

- FIXED: Crash when creating a dict from an invalid key.

- ADDED: library(redis).

- ADDED: submodule packages/redis

- FIXED: library(prolog\_xref): handle included data if data is coming  
from a stream for which the encoding is fixed.

- FIXED: When overruling an implicit import to define a predicate locally  
(e.g., dynamic), we should not use the thread-localised definition.

- FIXED: race condition between thread\_local/1 and accessing the  
predicate structure. Vincent Koeman.

- FIXED: write/1 portraying attributes for freeze/2 . Rick Workman.

- FIXED: make library(ansi\_term) load in `--traditional` mode. Falco  
Notgatz.

## Package http

- ADDED: library(http/http\_redis\_plugin) to use a redis DB for storing  
session info.

- ADDED: library(http/http\_session): support for _hooking_ the storage  
layer of this library.

- FIXED: Issue#142: http\_reply\_from\_files/3: Return 301 Moved Permanently  
on directories without trailing /

## Package jpl

- FIXED: Missing unlock trying to find a pool engine if no new engines  
can be created. David Tonhofer.

- CLEANUP: Some renaming mainly; once/1 calls around phrase/2 removed

- CLEANUP: Exported old predicates with new names. Rearranged. Fixed  
comments.

- CLEANUP: Presumably final cleanup of DCG rules & their callers

- CLEANUP: Changing DCG names

- FIX: Minor fix in failed test

- CLEANUP: Filing off some rough edges around jpl\_type\_to\_classname/2

- CLEANUP: Updates after remarks by Jan

- CLEANUP: Added code to identify java identifier chars (not called yet)

- CLEANUP: throwme/2 replaced with latest (and better comments)

---

<div class="post-metadata">

**Author:** ![emacstheviking](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/emacstheviking/32/228_2.png) [@emacstheviking](https://swi-prolog.discourse.group/u/emacstheviking)\
**Post date:** [October 14, 2020, 1:33pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-9/3016/2 "2020-10-14T13:33:00Z")

</div>

Laughing my head off at this:

> eventually, not much of the original interface is left.

Definitely Triggers Broom Jan, thanks for the opportunity to help out a tiny tiny tiny little bit somewhere.

Sean.

PS: If you are not familiar with Triggers Broom,

[![](https://global.discourse-cdn.com/free1/uploads/swiprolog/original/2X/6/69e129d7572b27692bda46046d8dbc5afb8f5f7a.jpeg "Trigger's Broom") ](https://www.youtube.com/watch?v=BUl6PooveJE)

---

<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:** [October 14, 2020, 1:42pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-9/3016/3 "2020-10-14T13:42:36Z")

</div>

Hi Sean,

🙂 Still, a good start helps a lot. As long as you do not mind having your name attached to it, I’m happy.

Your interface was good enough for showing how to execute basic commands. For the single threaded GNU-Prolog (without GC?) I guess that is all you typically want.

---

<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:** [October 14, 2020, 1:50pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-9/3016/4 "2020-10-14T13:50:13Z")

</div>

> [@emacstheviking](#):
>
> Triggers Broom

> **[Gary Strachan - "Write" Said Fred - Whimsical Blogs From Deep Within A...](https://strachan.blog/2016/02/18/the-paradox-of-triggers-broom/)**
>
> It was one of the funniest scenes in arguably the best loved British comedy in the last three decades. A lovable imbecile sat in a café with his mates, basking in the glory of his recent award for …

Now it makes sense. LOL

---

<div class="post-metadata">

**Author:** ![emacstheviking](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/emacstheviking/32/228_2.png) [@emacstheviking](https://swi-prolog.discourse.group/u/emacstheviking)\
**Post date:** [October 14, 2020, 2:18pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-9/3016/5 "2020-10-14T14:18:29Z")

</div>

It was all I needed at the time, YAGNI, etc etc

🙂

---

<div class="post-metadata">

**Author:** ![emacstheviking](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/emacstheviking/32/228_2.png) [@emacstheviking](https://swi-prolog.discourse.group/u/emacstheviking)\
**Post date:** [October 14, 2020, 2:22pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-9/3016/6 "2020-10-14T14:22:27Z")

</div>

It has a name! Ever since I learned about quantum physics back in school I have been troubled by the notion that deep down, the cells -\> atoms -\> e/p/n-trons -\> quarks -\> turtlejuice -\> virtual particles are never the same from moment to moment which begs the question of what actually keeps us in our current form?!?!?! And what dictates that form, yes, I know DNA is the blueprint etc etc but what is the blueprint made of and where is the blueprint for the blueprint etc ?

My head hurts…
