Dear SWI-Prolog user,
SWI-Prolog 9.3.11 is ready for download. Highlights:
Changes
- Added swi-prolog-win package to Ubuntu PPA distribution.
This provides the console with menus appswipl-win
. - Reorganize file layout for MacOS bundle to conform to
Apple’s requirements. This prevented code signing the
bundle. Unfortunately the code is still not signed as
that prevents using Xquartz (for xpce) and the Python
and Java bindings. - Changed the C API functions that return a Boolean result
to use<stdbool.h>
bool
type. Use thebool
type
througout the core sources. Packages have only been
updated to work with or without<stdbool.h>
, so they
can remain shared with the stable releases. - Support Alias(Dir) syntax in py_add_lib_dir/1,2.
Fixes
- Fixed a possible stack corruption in PL_unify_text(),
found by @maren using read_file_to_string/3 on a large
input. - Fixed race conditions in thread_signal/2, possibly leading
to use after free. - Fixes resources parsing in xpce that caused xpce to stop
working on systems when a language configuration (locale)
that uses something else than the . for floating point
numbers. - Fixed several tests to be more robust.
- Fixed several portability issues with help of @mgondan1
SWI-Prolog Changelog since version 9.3.10
-
DOC: Update 32/64 bit notes
-
FIXED: #1317 thread_exit/1 can crash after changes to thread_signal/2.
-
APPLE: Add code signing for creating the .dmg image The image is
signed if$CODESIGN_ID
is set to the certificate id to be used
withcodesign -s
. Unfortunately, this is not the whole story.
As a result, we can no longer load shared object that are not part
of the disk image, which means we cannot use Xquartz, Python or Java. -
MODIFIED: Apple: better support MacOS bundle hierarchy Make the binary
bundle match the MacOS guidelines. In particular- Move the Prolog “home” to Contents/Resources/swipl
- Move modules (*.so files) to Contents/Plugins/swipl
- Remove the need for
swipl.home
by using compiled-in relative
path to find the home. - Added a flag
bundle
to make the system aware it is using the
bundle hierarchy. - Moved
foreign
path definitions frominit.pl
to the
library(shlib), where we now use conditional compilation to get
the paths right for the target platform.
-
FIX: include stdbool
-
DOC: Explain issues and features of the C-API Boolean functions.
-
DOC: Fix bool types for PL_* functions
-
MODIFIED: Return type of most C API functions is now
bool
This
should have very few consequences to applications, even preserving
binary compatibility. The change adopts the upcoming C23 standard
and makes it easier to understand the API. -
CLEANUP: Use
true
andfalse
throughout the core C code. -
COMPAT: Adopt stdbool.h This patch avoids conflicts the type
bool
and its valuestrue
andfalse
as defined in<stdbool.h>
while
these will be promoted to C keywords in the upcoming C23 standard. -
FIXED: Race conditions in thread_signal/2 and friends.
-
TEST: Avoid interference between thread_wait tests. Tests send
concurrent signals using a detached thread that could still be running,
affecting subsequent tests. -
TEST: Test for getting an I/O error on a broken pipe may succeed.
Turns out the pipe size on Asahi/Fedoare 40 is 256K. Now writing a
max of 1.2Mb rather than 100K. -
ADDED: Prolog flag
dir_sep
Complementspath_sep
andpath_max
to get properties on the file naming conventions and limits. -
FIXED: #1311 Possible stack corruption in PL_unify_text() Cause of this
crash is a failure to verify return from PL_new_term_ref(). There were
more issues with the code though. Lack of local space could corrupt
a string living on the stack. We can discard the term reference. -
INSTALL: modify cmake ilink to install symlink in CMAKE_INSTALL_PREFIX
This ensures that when installing package selections to different
install prefixes, the links end up in the right location. This is
used by package maintainers to generate multiple packages from the
same build. -
FIXED:
swipl-win.exe
: Run/New thread menu -
SNAP: added libxinerama1
Package debian
- ADDED: Debian/PPA package
swi-prolog-win
This package provides
the Qt console.
Package archive
- TEST: Try to make this pass using address sanitizer.
Package clib
-
COMPAT: Use preferred C API.
-
COMPAT: Avoid conflicts over th stdbool.h constants
true
andfalse
.
Package jpl
-
COMPAT: Get
bool
fromstdbool.h
-
TEST: Disable prolog-in-java tests when using a sanitizer
-
INSTALL: modify cmake ilink calls to not include CMAKE_INSTALL_PREFIX
Package odbc
- COMPAT: Avoid conflicts over th stdbool.h constants
true
andfalse
.
Package semweb
-
FIXED: rdf_murmer_hash def and decl type agreement
-
FIXED: #116 Allow for blank node as GRAPH label. Jos de Roo.
Package swipl-win
- INSTALL: modify cmake ilink calls to not include CMAKE_INSTALL_PREFIX
Package swipy
- FIXED: py_add_lib_dir/1 and py_add_lib_dir/2 py_add_lib_dir/1,
when used as a directive, added the path as first, while the docs
claim last. py_add_lib_dir/1,2 now accept Alias(Sub) paths.
Package xpce
-
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)
-
SCALE: Replace X11
right_ptr
cursors byarrow
. Only the major
cursors of the X11 cursor font are replaced by scalable cursors from
the theme. Usingright_ptr
therefore shows a very tiny cursor on
hi-res screens. -
FIXED: Possible buffer overrun in
list_browser->insert_self
-
FIXED: #35 new resource length as e.g.
3.8mm
are locale sensitive
This causes xpce tools to fail to start if the locale defines the
decimal point to be anything different from ‘.’.