Dear SWI-Prolog user,
I’m happy to announce SWI-Prolog 8.3.13. Version 8.3.12 has lived for half an hour before discovering an issue with ninja install
This version fixes some issues and provides some useful extensions and documentation enhancements. Highlights:
-
Last release introduced a regression in PL_get_chars() that affected the
C++ interface and the Qt based swipl-win console on MacOS and Linux. Fixed. -
Enhancements to PL_get_nchars(), fixing Redis interface for handling Unicode
and providing a significant speedup for non-ASCII messages. -
Fix to the debugger where a redo could undo bindings in the wrong stack
frame (leading to wrong behaviour in debug mode). Old bug. -
Fix to arg/3 when called as arg(-,+,–). Reported by Edison Mera.
Introduced when moving arg/3 to the VM in 8.3.7. -
A couple of bug fixes in tabling.
-
Eric zink contributed a new section on the command line debugger that
was well received on his blog. This also led to some enhancements to
the Markdown pipeline for generating documentation, notably citations,
automatic links and tables. -
Both the HTTP server and client can now use Unix domain sockets after
discussion on Discourse.Enjoy — Jan
SWI-Prolog Changelog since version 8.3.11
-
DOC: spy/2 does not exist.
-
DOC: Reformatting textdebugger.md, use [@cite] and fix some code
annotations to use``
. -
DOC: CHR section names to include CHR to make them easier to find
and reduce ambiguity in search results. -
DOC: Rewrote “Overview of the Debugger” I extended the text/command
line debugger overview to add more detail and examples for newer users.
It is pretty much a rewrite, but I reused some of the text from
the original.The feedback threads on discourse for it are here:
Learning how to use the Prolog Command Line Debugger? Try this new overview!
and here:
Feedback please on proposed update to Tutorials/Beginner/Debugger.I wrote it as a markdown file in attempt to avoid
learning latex :-). Seemed to work pretty well (writeup here:
Using markdown with pldoc to generate manual content - #2 by jan),
but required using the latext \input command to get the input into the
master overview.doc and and update to CMakeLists.txt to build.I confirmed that the HTML builds and looks right.
-
ADDED: transaction/2: option bulk(Boolean)
-
ADDED: transaction/2, providing additional options to transactions.
-
MODIFIED: When using use_module/1,2 and friends on a non-module
file the error has changed fromdomain_error(module_file, File)
todomain_error(module_header, FirstTerm)
to simplify debugging.
Notably this error can be the result of term_expansion/2 that rewrites
begin_of_file
or the module header to something that is not a module
header. -
FIXED: Do not use sandboxing during autoloading. Note that the
autoload directive is not permitted in sandboxed code, so users cannot
load untrusted code using autoload/1,2. -
FIXED: debugger could reset wrong variable when debugging a redo
action. May lead to incorrect behaviour in debug mode. -
ENHANCED: xterm interactor font selection and size specification.
-
FIXED: set_prolog_flag/2: propagate errors from switching debug mode
using thedebug
flag. -
ADDED: PL_put_term_from_chars(): flag
CVT_EXCEPTION
to raise an
exception on a failure rather than returning the exception term. -
ENHANCED: PL_get_nchars(): immediately write to a UTF-8 string if
REP_UTF8
is specified. This used to first write ISO Latin 1, then
wchar and finally transfer to UTF-8 for terms that cannot be represented
as ISO Latin 1. -
FIXED: PL_get_nchars(): avoid pending exception in write conversion
if the term cannot be represented as ISO Latin 1. -
FIXED: XDG path handling for
common_config
.common_data
returned both the common data and config paths, while common config had
no locations. -
FIXED: incremental tabling with answer subsumption call to start
reevaluation. -
ADDED: Started to deal with the relation between transactions and
tabling. Currently deals with rolling back answers from monotonic
tabling. -
FIXED: arg/3 when compiled as B_ARG_VF did not correctly use the slow
route if the argument is unbound. Edison Mera. -
TEST: wrong format/3 usage causing a failure unrelated to the test.
-
TEST: Relax XSB tabling test abol_test3b.P as reclaiming the tables
is not guaranteed. -
FIXED: Possible race in shared table handling. Leads to “Oops,
worklist trie doesn’t point back at me!” messages. -
FIXED: PL_get_chars() and friends handling of
CVT_WRITEQ
. This is
(among others) used as fallback serialization in the C++ interface.
Package clib
- ADDED: uri_resolve/3 and related predicates that take a base URI
to accept a string in addition to an atom for the base URI.
Package cql
- DOC: Add CQL to the section headers to improve searching.
Package http
-
ADDED: http_open/3 to accept unix_socket(+Socket).
-
ADDED: http_server/1,2: allow binding to a Unix domain socket.
Package ltx2htm
- ADDED: Support
tabulary
environment.
Package pldoc
-
ADDED: Create a link from … flag
`name`
… if name is a
current Prolog flag. -
ADDED:
`name/arity`
to create a link asname/arity
. Using
double backticks creates a predicate indicator that is not a link. -
ENHANCED: Use LaTeX package tabulary for dealing with tables that
have one or more columns with long text in cells. -
ADDED: PlDoc Wiki tables to use a possible column alignment
specification and interpret the header. -
ADDED: Markdown notation
[@cite;@cite;...]
to allow for citations
in the Markdown in the documentation pipeline. After discussion with
Eric Zinc.
Package redis
- FIXED: Raise an exception if a Prolog term does not have valid syntax.
Package xpce
- ENHANCED: Cleanup trace/spy dialog