Dear SWI-Prolog user,
SWI-Prolog 8.5.5 is ready for download. Most of the patches address
portability issues and some regression that resulted from more use of
color and hyperlinking on modern terminals. Highlights:
- Security issue (loading init.pl from current directory).
- Allow suspend/yield from foreign code. After discussion with
@maren. - Several enhancement to print_term/2 (print big terms with
layout). Both fixes (invalid output), better handling of
terms with operators that exceed the line width, dynamic
detection of the console width, etc. - Extend library(apply_macros) to expand maplist calls with
a small compile-time known list to a conjunction of calls. - Fixes to read/1 and friends for postfix operators (@keke)
And of course the usual list of small enhancements and fixes.
Enjoy --- Jan
SWI-Prolog Changelog since version 8.5.4
-
TEST: Started a few operator tests
-
FIXED: handling postfix operators must reduce the left side before
reducing the postfix operator. -
ENHANCED: Issue#24: clause_info/4: reject if term layout returned
by expand_term/4 is bogus. This forces the guitracer to revert
to decompiling. -
FIXED:
arg xf xf
(cascading postfix operators) where the priority
of the first is higher than the second must generate a syntax error
rather than an incorrect term. -
DEBUG: Fixed duplicate debug id
-
FIXED: print_term/2 handling of postfix operators.
-
SECURITY: running plain
swipl
loadsinit.pl
from the current
directory if this file exists. It is not advised to load customisation
files from the current directory. We now only load init.pl when
explicitly called usingswipl -f init.pl
while an implicit init
file is only loaded from theuser_app_config
path alias. -
ENHANCED: library(apply_macros) now expands maplist calls with lists
known at compile time into a sequence of calls if this is safe and
the lists are at most 10 elements long. -
ADDED: copy_term/4 and copy_term_nat/4. These predicates provide a
partial renaming of variables and is used in s(CASP). This patch also
improves out-of-memory handling and adds a test suit for copy_term. -
DOC: foreach/2 by @swi
-
FIXED: pack_rebuild/1 if the pack is installed but does not provide
binaries for the current architecture. @nicos. -
FIXED: SWISH Issue#146: failure to render stacktrace due to failure
of message_to_string/2 on ansi(Style, Fmt, Arg) if Arg is not a list. -
ADDED: PL_can_yield() to figure out whether the current execution
context allows for yielding control. -
DOC: foreign yield interface
-
ADDED: Allow yield/resume from foreign predicates.
-
MODIFIED: Query identifiers now keep track of the engine to which they
are associated. As a result, they are now anonymous pointers rather
than (pointer wide) integers. Does not affect compatibility except
source compatibility when the value is combined with integral types. -
BUILD: Disable MQI if multi-threading is not enabled.
-
FIXED: print_term/2 from entering a loop. Also fixes unneeded
parenthesis in lists. -
FIXED: finding clauses from a source location could crash on thread
local predicates -
FIXED: conjunction/disjunction.
-
FIXED: print_term/2: respect write options when computing with of
native output. -
MODIFIED: print_term/2 to get the default right margin from tty_size
if the output is a tty and tty_size/2 succeeds. -
ENHANCED: mkconj/3 and mkdisj/3 to produces a right-grouped term, e.g.
?- mkconj((a,b),c, Conj) Conj = (a,b,c)(was Conj = ((a,b),c)).
-
FIXED: We must preserve the pack registration when creating a saved
state to make loading foreign resources work. -
ENHANCED: main/0 to avoid setting up application signal handling and
termination when run interactively. -
FIXED: Issue#917: separate S_DYNAMIC and S_MULTIFILE. Jos de Roo.
-
ADDED: print_term/2: options fullstop(Boolean) and nl(Bool). Also lots
of documentation restyling and removed old conditional compilation. -
ENHANCED: print_term/2 to deal with operator expressions that exceed
the line width. -
FIXED: print_term/2: max priority of list elements and compound term
arguments to 999 to force parenthesis. -
FIXED: Issue#917: WAM Table mismatch: wam_table[119(s_static)] ==
wam_table[124(s_multifile)] -
SNAP: Reverted to core20 because Qt is broken on core20.
-
FIXED: Ensure VMI instruction are on unique addresses. This patch
extends 7bf463db4dcc7b4e27c820ef8fc6f94fd8116720 for the case that
two VMIs jump to the same real implementation. -
SNAP: Trying to switch to core20 base. See
Old version of fontconfig Ā· Issue #67 Ā· octave-snap/octave-snap Ā· GitHub -
PORT: Guarantee two VM instructions are not optimized to use the
same code. -
FIXED: Ensure bigints are properly indexed on 32-bit platforms.
Package http
- FIXED: Handle ansi(Style, Fmt, Args), url(Pos) and url(URL, Label)
message line elements when formulating an HTTP response.
Package jpl
-
CLEANUP: Type correctness in debug messages.
-
COMPAT: Allow qid_t to be an opaque pointer.
Package pengines
- FIXED: Pengine emulation of tab/1 to accept an expression.
Package ssl
- PORT: Fix build on OpenBSD 7.0 using LibreSSL LibreSSL 3.4.0 made
struct ssl_session_st opaque.
Package xpce
-
FIXED: GUI tracer: avoid instantiation error. Kwon-Young Choi.
-
FIXED: Allow the Prolog Navigator to work with zero-arity compounds.