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
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
Possible crash in the debugger (trapped by SWISH)
Fixed expand_file_name/2 for Windows on files holding Unicode
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
Enjoy — Jan
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
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
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.
SICStus 3 and 4 are incompatible enough in some aspects that they
be emulated properly as a single dialect. See this discussion:
Expects_dialect(sicstus): how to handle SICStus 3 vs. 4 API conflicts
The SICStus 4 emulation currently supports all of library(system) and
library(timeout), parts of library(lists) and library(terms), and a few
builtins. library(sockets) is not emulated yet, because its API has
changed completely between SICStus 3 and 4. library(arrays) has been
removed entirely in SICStus 4, so it is not emulated by the sicstus4
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)
FIXED: expects_dialect/1: always load SWI-Prolog library modules in
FIXED: Issue#742: expects_dialect/1: switch
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.
- TEST: Issue#159: OpenSSL 1.1.1i changed sequence for
certificate reporting. Patch by Kurt Roeckx.