Branch: development (switch to
stable),
SWI-Prolog Changelog from version 9.3.12 to 9.3.15
[Nov 18 2024]
- FIXED: Handling return values in stack expansion. Introduce
more
bool to correctly distinguish functions returning
true/false/*_OVERFLOW from those raising exceptions and only returning
true/false.
- FIXED: prolog_trace_interception/4: setting up the hook good crash.
[Nov 17 2024]
[Nov 16 2024]
- ADDED: format/2: support
~:D The colon modifier for D forces
the use of Prolog digit grouping using _.
- FIXED: format/2 handling of Unicode characters Regression from
a49fe8cb40fc15b7325a4e4836304cbe6d9ccef0
[Nov 15 2024]
- ADDED: library(prolog_locale) to setup grouped printing of integers.
- ADDED: write_term/2 options
format_float(+Format) and
format_integer(+Format) Using a format seems a more sensible way to
control writing numbers from write_term/2. This patch removes the
previously introduced radix(+Radix) option. If we want this back we
will implement it on top of format_integer(+Format).
- ADDED: write_term/2: option
radix(Radix). Experimental. Under
discussion as PIP-105. The current implementation writes, unlike XSB,
the radix prefix. We either need more options or we should consider
another alternative such as integer_format(+Format)
[Nov 14 2024]
- ADDED: format/2 specifier `~h` This provides compatibility to
SICStus. It also makes write/1 output for floats compatible to SICStus
for deciding between fixed point and exponential notation.
- FIXED: ISO compatible parsing for `fy 2 yf` and similar cases.
[Nov 13 2024]
- TEST: Added ISO ambiguous operator tests. Marked two tests as blocked
as these currently fail.
[Nov 8 2024]
- FIXED: #1331 Module issue in SICStus block/1 emulation. This patch
also reformats the file, removes some dead code and remove the outdated
restriction that it does not work on dynamic or foreign predicates.
[Nov 6 2024]
- ENHANCED: Avoid spurious tracing in push_msg/2.
- DEBUG: First print the Prolog stack "safe" on a crash. This guarantees
that the stack is printed, including details on the clauses involved
and progress in each clause. Next, the stacks are printed with
arguments. This however may crash if the crash is caused by corrupt
data on the stacks.
[Nov 5 2024]
- ADDED: Support SSU DCG rules as
Head[, Guard] ==> DCGBody.
- FIXED:
libary(prolog_pack): detection of valid download URLs.
- FIXED: Build order planning. This reverts
1cf4acbe722604857a2627ecc161f80e16f330ed. That patch was broken.
The reported failure probably had some other cause.
[Nov 4 2024]
- FIXED: Installing a pack should attach the pack itself. This
incorrectly registered the directory of the pack as a directory that
provides packs instead.
- ENHANCED: explain/1 to enumerate all instances of a non-qualified
predicate.
- TEST: rwlocks unit tests for safety and reliability
[Nov 3 2024]
- BUILD:
plunit requires clib package.
[Nov 1 2024]
- ENHANCED: Implement distinct/1,2 and reduced/1,3 using tries.
This reduces the overhead over 5 times.
[Oct 31 2024]
[Oct 29 2024]
- ENHANCED: Re-implement library(nb_set) using closed hash tables.
This provides better performance at lower memory usage. It comes
with a few modifications:
[Oct 24 2024]
- BUILD: Make sure to clear
DISPLAY when running xpce steps
(one more)
[Oct 23 2024]
- 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.
[Oct 22 2024]
- 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.
[Oct 19 2024]
- ENHANCED: Add Prolog navigator to
theme/dark.pl
[Oct 18 2024]
- FIXED: build order for dependencies in packs. Based on #1326, but
fixing build_order/2 rather than reversing afterwards.
- 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
[Oct 17 2024]
- PORT: Added FreeBSD signal names to the name/number map. Contributed
by Dewayne Geraghty
[Oct 15 2024]
[Oct 11 2024]
[Oct 10 2024]
- FIXED: select_dict/3: possible crash. Could crash if the first
argument dict did not have unbound keys. The new implementation is
also faster, building the new dict opportunistically rather than in
a second scan.
[Oct 9 2024]
- FIXED: Build failure on systems without
sem_timedwait()
- FIXED: Avoid message when assertion/1 is interrupted by abort
[Oct 8 2024]
- ADDED: Prolog flag
halt_grace_time: graceful timeout limit
- CLEANUP: Getting Prolog flags from C
- 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.
[Oct 7 2024]
- FIXED: Possible memory leak in various C API functions using
BUF_MALLOC These functions could "stack" intermediate results,
overflowing the string stack when used excessively inside a single
foreign predicate or outside calls from Prolog (i.e., using "main"
in foreign code).
[Oct 6 2024]
- ADDED: PL_get_stream(): SIO_TRYLOCK flag to allow failure if the
stream is locked.
[Oct 5 2024]
- ADDED: catch/3: support constraints on the Ball.
- FIXED: Bail out with fatal error if we cannot allocate a foreign
frame for an exception.
[Oct 4 2024]
- FIXED: Generate a fatal error if there is no local stack emergency
space
- FIXED: Partial unification while searching for a matching catch/3.
As the partial unification is not undone, we may fail to find the
right catch frame.
[Oct 3 2024]
- FIXED: Memory leak in PL_get_wchars() when using
BUF_MALLOC.
- FIXED: Avoid error message when calling halt/0,1 from
-g goals.
Reported by Jos de Roo
- MODIFIED: cancel threads using
unwind(halt(Status)) Older versions used
'$aborted'
- MODIFIED: PL_halt() return status and new flag. If the flag
PL_HALT_WITH_EXCEPTION is used, PL_halt() tries to raise an
exception and returns false. If the halt was cancelled, the return
is now true (was false). Otherwise, the function does not return.
[Oct 2 2024]
- ENHANCED: halt/1: use the
unwind(halt(Status)) if possible.
- CLEANUP: Removed
'$aborted'
- DOC: Status of
unwind(...) exceptions.
- MODIFIED: Re-implement thread_exit/1 based on
unwind(thread_exit(Term)).
- ADDED: Allow
unwind(halt(Status)) to halt from an exception.
- MODIFIED: Introduced
unwind(Term) exceptions.
- ADDED: parse_time/3: support RFC1036 and ASCTIME formats These formats
are old HTTP timestamp formats.
[Sep 30 2024]
- DOC: Added documentation for PL_for_dict()
- FIXED: Windows format_time/3 implementation for time stamps > 32 bits.
While the Windows
time_t is 64 bits, it doesn't seem to localtime()
seems broken handling large time offsets.
[Sep 29 2024]
- MODIFIED: parse_time/2,3: interpret missing timezone as local time.
This patch fixes parsing
YYYY-MM, which used to be a day too early.
[Sep 30 2024]
[Sep 27 2024]
- DOC: #1323 Wrong claim on default for
prefer_rationals flag.
Package bench
[Nov 13 2024]
- FIXED: Avoid division by zero if no tests are executed.
Package clib
[Oct 2 2024]
- COMPAT: Support both old and new abort exception
Package cpp
[Nov 2 2024]
- DEPRECATED: Officially deprecate version 1 of the C++ interface.
For now, we will keep SWI-cpp.h in the distribution. We do not plan
any updates to keep it in sync with changes to SWI-Prolog or the
C++ standard. Users of this old interface are strongly encouraged
to update their program.
- DOC: removed all "(version 2)"
- DOC: Delete documentation for version 1 of the C++ interface
[Oct 12 2024]
- TEST: Fixed file tests for Windows where Prolog and OS paths differ,
[Sep 30 2024]
- FIX: add missing PlStringBuffers in calls to PL_chars(), PL_nchars(),
PL_wchars()
- DOC: adding warning to PlTermv
Package http
[Oct 2 2024]
- 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
[Sep 30 2024]
[Sep 29 2024]
Package jpl
[Nov 14 2024]
- TEST: Fix finding hamcrest on Fedora 41
Package libedit
[Oct 6 2024]
- FIXED: Avoid deadlock when trying to save history from a background
thread.
Package mqi
[Oct 25 2024]
- TEST: Specify encoding in test_prologserver.py [Oct 24 2024]
- TEST: Specify encoding in test_prologserver.py Fixes a problem for
MSYS2. I hope my ad hoc fix is harmless.
- ERROR: test_variable_attributes
(test_prologserver.TestPrologMQI.test_variable_attributes)
----------------------------------------------------------------------
Traceback (most recent call last):
File
"c:/msys64/home/c7201178/swipl-devel/packages/mqi/python/test_prologserver.py",
line 95, in setUp self.initialProcessCount =
self.
process_count("swipl")
^^^^^^^^^^^^^^^^^^^^^^^^^^^ File
"c:/msys64/home/c7201178/swipl-devel/packages/mqi/python/test_prologserver.py",
line 123, in process_count
output = subprocess.check_output(call).decode()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position
237: invalid start byte
[Oct 2 2024]
- COMPAT: Support both old and new abort exception
Package pengines
[Oct 2 2024]
- COMPAT: Support both old and new abort exception
Package plunit
[Nov 6 2024]
- ENHANCED: PlUnit message for tests that succeed with a choicepoint.
[Oct 31 2024]
- FIXED: Report generator state on failing
forall(Generator) test.
This was completely broken. Format has been changed to print the
generator goal rather than just the variables.
Package semweb
[Oct 9 2024]
- FIXED: Make RDF GC thread stop gracefully.
[Oct 2 2024]
- COMPAT: Support both old and new abort exception
Package ssl
[Nov 17 2024]
- PORT: Extended our BIO_ctrl() callback. In Fedora 41, OpenSSL
3.2.2, it appears we need to implement the BIO_ctrl() methods
BIO_C_FILE_TELL and BIO_C_FILE_SEEK for properly loading keys
from files.
[Oct 2 2024]
- COMPAT: Support both old and new abort exception
Package swipy
[Oct 3 2024]
- 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.
Package tipc
[Oct 2 2024]
- COMPAT: Support both old and new abort exception
Package xpce
[Oct 19 2024]
- ENHANCED: #38 Support themes in navigator.
[Oct 18 2024]
- 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.
[Oct 15 2024]
- FIXED: Class tabbed_window: avoid sending ->resize_window when freed.
[Oct 8 2024]
- COMPAT: PceEmacs: implemented
C-x 5 2 and M-,
- FIXED: Pass on
unwind() exceptions from e.g. timer events calling
Prolog.
[Oct 7 2024]
- ADDED: GUI tracer term viewer: allow pinning.
- ADDED: PceEmacs Prolog mode: auto-fill the mode line properly.
[Oct 2 2024]
- COMPAT: Support both old and new abort exception