Ann: SWI-Prolog 8.3.9

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

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

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

  • 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)

1 Like

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.


PS: If you are not familiar with Triggers Broom,

Hi Sean,

:slight_smile: 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.

Now it makes sense. LOL

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


1 Like

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…