Dear SWI-Prolog user,
SWI-Prolog 9.2.8 (stable) is ready for download. It provides a
large number of backports from the development series, dealing
with portability, stability and license issues. It also provides
some isolated new features to simplify “forward compatibility”.
Enjoy --- Jan
SWI-Prolog Changelog since version 9.2.7
-
BUILD: Make sure to clear
DISPLAY
when running xpce steps While
the build works without a DISPLAY variable, an invalid variable causes
the build to fail. -
TEST: Disable collation_key/2 test for MacOS Macos Sequoia (15)
wcsxfrm() returns garbage. -
FIXED: Avoid corruption in setjmp()/longjmp() Clang demands using
a volatile variable for protecting the throw environment’s parent.
This is probably correct, although it seems weird to place this
variable in a register. -
ENHANCED: Add Prolog navigator to
theme/dark.pl
-
FIXED: expand_term/2 to succeed twice when expanding a toplevel
list. Results in duplicate clauses when compiling[f(1), f(2)].
.
Reported by Uwe Neumerkel. -
FIXED: pack management: find available versions from wildcard URL.
Patch by Nicos Angelopoulos -
PORT: Added FreeBSD signal names to the name/number map. Contributed
by Dewayne Geraghty -
ENHANCED: file_autoload_directives/3: deal with library(main) hooks.
-
ADDED: PL_print_message() for calling print_message/2 from C
-
FIXED: print_term/2: indentation of right argument of infix term.
-
FIXED: Allow breakpoints in arg(C,T,F) I.e., arg/3 calls with a known
argument and the 3th index being a first var. These map to the
B_ARG_CF
VM instruction. -
DOC: Added documentation for PL_for_dict()
-
FIXED: Windows format_time/3 implementation for time stamps > 32 bits.
While the Windowstime_t
is 64 bits, it doesn’t seem to localtime()
seems broken handling large time offsets. -
ADDED: date_time_stamp/2: allow leaving components unbound from
the right. -
DOC: #1323 Wrong claim on default for
prefer_rationals
flag. -
ADDED: is_message_queue/1 to test the existence of a message queue.
-
FIXED: pack_publish/2 reporting (claimed failure)
-
ADDED:
swipl pack publish --server=URL ...
Allows publishing at
an alternative server. -
FIXED: Package manager,
swipl pack publish .
Broken detection of
git directory and failure do deal withrequires(prolog:flag(_Value)).
to test for existence of a Prolog flag.
-
FIXED: Possibly memory leak in LibBF arithmetic A thread race condition
may lead to loosing cache values from get_trig(). Fixed using C11
atomics. -
FIXED: Use stack variable after return for LibBF bignums This leads
to incorrect results and crashes when using really big bignums.
The LibBF bignum implementation is by default used for the WASM
version and the MacOS binaries. -
ENHANCED: install_pack/1,2 to prefer https over http for downloading.
Unlessinsecure(true)
orswipl pack install -k <pack>
is given,
possible HTTP links are automatically rewritten to HTTPS. -
ENHANCED: pack_install/1: warn if files are downloaded over HTTP
-
MODIFIED: argv_options/3: with type (bool|sometype) We now consider
the option boolean unless written as--opt=value
Before, the
option was considered boolean if it was the last argument or the next
argument started with a-
. -
FIXED: argv_options/3 handing of
boolean|Type
on last option -
ENHANCED: Arithmetic performance. This patch reverts
18d5d539af0807808ba6fee6ec66394aaec589f1 except for clang as it does
cause a significant slowdown on some systems. -
PORT: Call gettid via its glibc wrapper if possible
-
LEGAL: Resolved license issues for dialect/xsb/basics.pl Hi Jan,
As the coder of a number of (but by no means all) the predicates
in XSB’s basics.P, I’m perfectly fine with you releasing under the
BSD-2 license. Regarding the issues with XSB’s licenses, we’ll have
to consider it and come to some decision. Best, -David -
DOC: Updated limits section
-
DOC: Update 32/64 bit notes
-
FIXED: #1317 thread_exit/1 can crash after changes to thread_signal/2.
-
FIX: include stdbool
Package cpp
-
TEST: Fixed file tests for Windows where Prolog and OS paths differ,
-
FIX: add missing PlStringBuffers in calls to PL_chars(), PL_nchars(),
PL_wchars() -
DOC: adding warning to PlTermv
-
DOC: Added C++ version of foreign.doc’s calc.c example
-
MODIFIED: Return type wrappers changed to
bool
, matching SWI-Prolog.h
This matches the changes in SWI-Prolog.h with commit a1e914f -
DOC: added blob example (wrapped pointer)
-
ENHANCED: PlTerm::get_file_name() returns std::string
Package http
-
COMPAT: Support both old and new abort exception
-
FIXED: http_reply_file/3: be more tolerant about if-modified-since
Recent systems provided file times in sub-second, while HTTP typically
looses this. -
FIXED: Steadfastness of http_timestamp/2
-
ADDED: http_parse_header_value/3: support
expires
For compatibility,
this is not converted by default. -
ADDED: http_timestamp/2: support mode (-,+), i.e., parsing
-
ADDED: Allow for throw(http_reply(hangup)) to simply hangup the line.
This is not a valid reply, but can be used to quickly terminate
connections as well as for testing error scenarios.
Package semweb
-
FIXED: Make RDF GC thread stop gracefully.
-
COMPAT: Support both old and new abort exception
Package sgml
- DOC: xsd_time_string/3 XSD strings in table were wrong.
Package swipy
-
DOC: Python signal handling
-
ADDED: janus.heartbeat() to make Python process interrupts while
Prolog runs. -
ADDED: propagate keybaord interrupt.
-
ENHANCED: Cooperate with Python sys:exit() Calls from Prolog to
Python, where Python raises a SystemExit() exception are mapped to
Prolog unwind(halt(Status)) exceptions or, for older versions into
abort/0, recording the exit status requested. Consisently, when
control comes back from Prolog to Python, the unwind(halt(Status))
raises SystemExit(Status) or, abort with recorded exit status raises
this Python exception. -
PORT: Avoid compiler warnings on 32 bit platforms
Package xpce
-
ENHANCED: #38 Support themes in navigator.
-
FIXED: #38 Avoid loading the GUI tracer when trace/util.pl is loaded.
The navigator loads this, but should not load the GUI debugger itself. -
FIXED: Class tabbed_window: avoid sending ->resize_window when freed.
-
COMPAT: PceEmacs: implemented
C-x 5 2
andM-,
-
FIXED: Pass on unwind() exceptions from e.g. timer events calling
Prolog. -
ADDED: GUI tracer term viewer: allow pinning.
-
ADDED: PceEmacs Prolog mode: auto-fill the mode line properly.
-
COMPAT: Support both old and new abort exception
-
ADDED: Configure how the GUI tracer behaves if another threads hits it.
The default now is to block such threads. Alternatively it may be
set tonodebug
, meaning the thread continues in nodebug mode or
trace
, meaning it opens a secondary trace window. The latter is
how it used to work. -
FIXED: Argument indentation on next line
-
ADDED: PceEmacs: Indent dict values relative to the key when on
next line -
FIXED: PceEmacs language_mode<-argument_indent Should fail if there
is no argument. -
ADDED: Allow disabling the message capturing popup for the session.
-
SCALE: Predicate browser of profile/1 GUI.
-
LEGAL: Resolved license issues wrt xdnd.[ch] by Paul Sheer (LGPL)
This turns xpce on X11 effectively into LGPL. On Windows, this code
is not used and thus BSD-2 is effective. -
FIXED: Types for AllocColor
-
PORT: Changed XPM Windows emulation from K&R to ANSI C Modified using
GitHub - license-fn/un-obsolize: Convert obsolete (K&R) C function declarations and definitions to ANSI equivalents. -
FIX: conflicting declarations noticed only by clang (not gcc)