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.
\=/2for 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
mainwhen 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.
codesstatistics for compiled tables.
XSB: Added timed_call/2 emulation.
FIXED: single-threaded build. Abramo Bagnara.
STATS: removed trie statistics
reevaluatedto 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.
ADDED: limit/2: allow for a limit
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
XSB: extended module
machinewith 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
- DOC: call_with_time_limit. Nicos Angelopoulos.
- CLEANUP: Logtalk linter warnings.
- CLEANUP: Duplicate directive. Logtalk linter.
- ENHANCED: Allow processing thread_signal/2 messages.
- CLEANUP: Avoid duplicate declaration. Logtalk linter.
- BUILD: Issue#506: TIPC does not depend on libedit.
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)