Dear SWI-Prolog user,
SWI-Prolog 8.1.14 is available for download. This version provides some
important bug fixes and more XSB compatibility. Highlights:
- Ports: zip API for Endroid (by erlanger)
- Unicode: fixed tmp_file_stream/3, surely for Unix and hopefully
for Windows. May fix check_installation/0 for Windows users with
non-ascii login name. - Tabling: fix in tries, mostly affecting answer subsumption, speedup
incremental dependency graph maintenance when calling incremental
dynamic predicates, XSB compatibility extensions and fixes. - Cleaning issues reported by Paulo Moura’s Logtalk linter.
- Speedup
\=/2
for simple cases. - Work on cleaning up the profiler API. Now provides all four ports,
but the counts are sometimes incorrect. Only the call port count
is fully reliable. - Allow thead_signal/2 to
main
when using the libedit commandline
editor (default on Unix).
Notably the latter two are to support the develpment of a web dashboard
to monitor SWI-Prolog processes, currently mostly tabling. See
Enjoy --- Jan
P.s. MacOS binary will follow later today.
SWI-Prolog Changelog since version 8.1.13
-
FIXED: tmp_file_stream/3 for unicode temp directory. Surely fixed
on non-Windows. I do not have the right setup to test on Windows. -
PORT: Android minizip to use consistent file api
-
ENHANCED: profile_data/1: find predicates from the stored call graph
rather than enumerating all known predicates. Provides a big speedup. -
FIXED: profiler: avoid falsely reported self-recursion on auto-loaded
predicates, as well as other double checks in this event. -
FIXED: profiler: bump redo access on parents.
-
ADDED: Make number of passes through the exit port available from
the profiler data -
ADDED: profile_data/1 to library(statistics) and use dicts for dealing
with the profile data structures. -
XSB: Silently ignore debug_ctl/2 calls that are not supported. Added
xsb(compat) debug/1 topic to report possible compatibility issues. -
FIXED:
clauses
andcodes
statistics for compiled tables. -
XSB: Added timed_call/2 emulation.
-
FIXED: single-threaded build. Abramo Bagnara.
-
STATS: removed trie statistics
gen_exit_count
andgen_fail_count
.
Addedinvalidated
andreevaluated
to track incremental tabling. -
ENHANCED: Instead of using the wrap_predicate/4 interface to trap
calls to dynamic incremental predicates use a dedicated supervisor
instruction in the VM. -
ENHANCED: Speedup \=/2 using a shortcut for the simple cases.
-
FIXED: trie_gen/2,3: deal with last-argument optimization. Reported by
Hakan Kjellerstrand, also issue#490. -
XSB: Support
debug_ctl(hide, Preds)
-
ADDED: limit/2: allow for a limit
infinite
-
XSB: Several enhancements to the emulation: Added (very partial)
fmt_write/2,3, domain_error/4, print_backtrace/1, xsb_backtrace/1
and fixed incr_asserta/1 and incr_assertz/1. -
XSB: Started extended version of XSB’s library
lists
. -
XSB: extended module
machine
with conset/2, conget/2 and parsort/4. -
XSB: provide incr_asserta/1 and incr_assertz/1.
-
XSB: Started implementing debug_ctl/2.
-
CLEANUP: subsumes_chk/2 and subsumes/2 are provided by library(terms).
-
FIXED: ansi_format/3: handling of h(Name) for 8-bit color
specification. Paulo Moura using Logtalk linter. -
FIXED: library(prolog_colour): prolog_colourise_query/3.
-
ADDED: library(prolog_code), providing several commonly used predicates
to reason about Prolog programs. -
ENHANCED: error checking and reports from ‘$pi_head’/2, propagating
into better messages from several built-in predicates. -
FIXED: library(prolog_codewalk): limit initialization goals to
target module.
Package clib
- DOC: call_with_time_limit. Nicos Angelopoulos.
Package cql
- CLEANUP: Logtalk linter warnings.
Package http
- CLEANUP: Duplicate directive. Logtalk linter.
Package libedit
- ENHANCED: Allow processing thread_signal/2 messages.
Package pengines
- CLEANUP: Avoid duplicate declaration. Logtalk linter.
Package tipc
- BUILD: Issue#506: TIPC does not depend on libedit.
Package xpce
-
CLEANUP: Make the profiler run on library(statistics) instead of
replicating the code. -
FIXED: profiler table header for clusters
-
ADDED: Graphical profiler: show exit and fail counts.
-
PORT: Use new ‘$prof_procedure_data’/10 (extra Exit arg)