Dear SWI-Prolog user,
SWI-Prolog 9.1.1 is ready for download. This version is identical to
9.0.2 and only provided such that trackers of the development version
do not fall behind the stable version.
Enjoy — Jan
SWI-Prolog Changelog since version 9.1.0
[Dec 6 2022]
- PORT: Build MacOS bundle using LibBF based big integers. Somehow the
build for the universal binaries covering a large series of MacOS
versions (since 10.14) breaks after uograde to MacOS Ventura when
linking against libGMP. The results are random segfaults, bus errors
and memory corruption.
[Dec 5 2022]
-
FIXED: Possibly crash in breakpoint callback after GC/shift.
-
TEST: Make thread signal test behave better under high loads.
[Dec 4 2022]
-
PORT: Make C backtraces work on ARM systems that use libunwind or
glibc backtrace(). -
FIXED: Error handling if prolog_frame_attribute/3 using
parent_frame
runs out of stack. Careful review of this function after reported
crash on 32 bit arm. Might be due to a stack shift in this code,
but I doubt it and cannot reproduce the issue. Surely the current
code is safer. -
DOC: Document prolog_frame_attribute/2 with
parent_frame(-Next)
-
TEST: test may result in another error on 32-bit platforms.
[Dec 2 2022]
- ADDED: library(streams). Intended for various tricks in capturing
and redirecting streams. Currently only provides with_output_to/3
that extends with_output_to/2 to allow capturinguser_output
and
user_error
.
[Dec 1 2022]
- FIXED: WASM shell: failure after clearing output.
[Nov 30 2022]
-
FIXED: breakpoint removal when retracting a clause.
-
PORT: Provide MSVC alternatives for MinGW runtime support.
-
DEBUG: Dump Prolog stack on assertion error.
-
PORT: Drop old MSVC
#ifdef
code in favour of<inttypes.h>
on all platforms.
[Nov 29 2022]
-
PORT: Strict C11 support for VM instruction argument declaration.
-
PORT: Avoid GCC empty struct and named variadic arguments for cpp
to make pl-wam.c compile under strict C11 standard. This does not
solve full portability. pl-codetable.c suffers from related problems. -
PORT: Fixed compilation for Windows after providing the
libswipl
patches
[Nov 28 2022]
-
FIXED: Race condition between destroying indexes of thread-local
predicates on thread exit and the clause garbage collector. -
FIXED: Race condition for creating a functor. We must add the
functor to the global functor array before we can declare it valid. -
FIXED: thread_wait/2: race condition in updating threads waiting for
a module. -
FIXED: clause/2: possible error handling H_LIST_FF if there is a GC
between handling the head and tail.
[Nov 27 2022]
- BUILD: Simplify configuration detection in the build environment by
exploiting thelibswipl
flag if it is read-only (and thus reliable).
[Nov 26 2022]
-
ADDED:
swipl --dump-runtime-variables
to provide the name of the
shared object inPLLIBSWIPL
. -
ENHANCED: Set the Prolog flag
libswipl
based on dladdr() when
possible.
[Nov 25 2022]
- PORT: The C11 standard does not allow for empty structs.
[Nov 24 2022]
-
SNAP: CMAKE_INSTALL_LIBDIR seems undefined inside snapcraft, causing
the build to fail. -
SNAP: Latest snapcraft sets LD_LIBRARY_PATH to provide access to the
“parts”. We should not consider this a broken environment.
Package cpp
[Dec 6 2022]
- FIXED: PlQuery() should resolve the predicate in the target module
if one is provided as well as set the context. This bug breaks
completion in swipl-win.
[Dec 5 2022]
- TEST: Avoid encoding issues when running the tests.
[Dec 4 2022]
-
TEST: Fixed PL_scan_options() test for 32-bit platforms.
-
TEST: Avoid test_common.pl. Although avoiding duplication is good,
it is not a good idea that when build with -DINSTALL_TESTS, this file
ends up in the public library.
[Dec 3 2022]
- DOC: Fixed LaTeX errors and duplicate labels.
[Dec 2 2022]
-
DOC: Add “philosophy” section on classes Remove some obsolete sections
Some cleanup of markup -
ADDED: PlPredicate, PlModule classes, support Pltermv(0) Also removed
some unused parameter defaults and clean up initialization checks.
[Nov 29 2022]
- DOC: fix description of how exceptions work
[Nov 26 2022]
- TEST: Disabled invalid tests on Windows.
[Nov 24 2022]
- DOC: more details about exception handling
Package plunit
[Dec 2 2022]
- MODIFIED: extend message term plunit(end(Unit)) to plunit(end(Unit,
Summary)) where summary provides the status and time spend on the unit.
Package ssl
[Nov 29 2022]
- FIXED: crypto_password_hash/2,3 assumed byte encoding for
base64_encoded/3 while the default changed to UTF-8. Added test.
Package sweep
[Dec 3 2022]
- ADDED: ability to pass command line args directly to swipl
- sweeprolog.el (sweeprolog-handle-command-line-args): new
function, sets up command line argument handling using…
(sweeprolog-command-line-function): new function.
- sweeprolog.el (sweeprolog-handle-command-line-args): new
[Dec 2 2022]
-
ADDED: minor mode for moving to the next hole with TAB * sweeprolog.el
(sweeprolog-forward-hole-on-tab-mode): new minor mode, binding
TAB to… (sweeprolog-indent-or-forward-hole): new command. *
README.org (“Filling Holes”): rephrase and mention new minor mode. -
ENHANCED: indentation after infix operators * sweeprolog.el
(sweeprolog-indent-line-after-infix): adhere to last line indentation
even if non-standard, handle DCG RHS contexts and SSU guards. *
sweeprolog-tests.el: add more tests for indentation.
[Nov 27 2022]
- ENHANCED: use argument names for holes in predicate
completion * sweep.pl (predicate_argument_names/2):
new predicate. (sweep_format_predicate/2): use it, and
revise into… (sweep_format_predicate/4): new predicate.
(sweep_predicate_completion_candidates): use it.
[Nov 26 2022]
-
ADDED: make flymake optionally complain about implicit autoloads *
sweeprolog.el (sweeprolog-note-implicit-autoloads): new user-option.
(sweeprolog-analyze-fragment-flymake): use it. * README.org (“Managing
Dependencies”): mention it. -
ADDED: new command for updating use_module/autoload directives
- sweep.pl (sweep_file_path_in_library/2): new predicate.
(sweep_color_normalized/3): normalize autoload source paths. *
sweeprolog.el (sweeprolog-analyze-buffer-with): new helper function.
(sweeprolog-update-dependencies): new command.
- sweep.pl (sweep_file_path_in_library/2): new predicate.
Package xpce
[Nov 30 2022]
- PORT: Make the xpce source compile clean using GCC -pedantic flag.
Note that an important part of the problems is that XPCE threads data
and function pointers the same. This used to work with a cast to
void*
. This is not allowed in C11. It is allowed to cast both
pointers and functions tointptr_t
, so with a little detour we
get where we need to be. Time will tell whether we will see systems
where this conversion is not allowed.