Dear SWI-Prolog user,
SWI-Prolog 9.1.16 is ready for download. Most of the work is on
(language) interfaces and portability. Highlights:
-
Several changes and enhancements to the Janus Python interface.
- MODIFIED: In replies from Prolog, the logical truth is now represented
using a keytruth
rather thanstatus
- More mature support for Well Founded Semantics undefined results.
- Support round trip of Prolog rational numbers to
Fraction
- Support Python Enum.
- Allow for eval(Term) in py_call/2 to evaluate arguments in
Python expresions. - Updated the XSB inspired interface.
- MODIFIED: In replies from Prolog, the logical truth is now represented
-
More work on the C++ interface by @peter.ludemann
-
Updated JPL .class files to Java 8 as the latest OpenJDK no longer
handles version 7. -
Several performance enhancements to arithmetic.
-
Fixed a memory leak in PL_put_term_from_chars() for numbers.
Enjoy — Jan
SWI-Prolog Changelog since version 9.1.15
-
PORT: Partial work to allow MSVC build under Conda. This patch works
around issues for CMake FindThreads.cmake. It also explicitly enables
MSVC/MD
to compile the packages if threading is enabled. -
BUILD: Runtime configuration during boot for Windows As, on Windows,
we install all DLLs in the same directory we do not need to add
the package bin dirs to the foreign search path. But, we must use
prolog_to_os_filename/2 to ensure proper handling of the search based
on the executable. -
FIXED: #1197 function cmpr failing for negative values.
-
FIXED: #1097 ctrl-C in read causes exit from REPL Fix consists of
two parts. (1) if something (libedit) already set the stream error
condition, make S__fillbuf() return with an error immediately and
(2) do not abort the main query loop if we get an abort request. -
DOC: additions and cleanup wrap_predicate/4, pack_install/1, handling
blobs and streams from foreign code, returning from foreign predicates. -
ENHANCED: Allow interrupts during evalExpression()
-
PORT: Make new stuff work again using MSVC
-
ENHANCED: dark theme arithmetic used blue on black. [no ci]
-
PERFORMANCE: Add shortcut to PL_unify_number() Add a shortcut for
the typical case where the number is a small integer, the target is
a variable and we are not short on stack space. -
PERFORMANCE: Simplify clearNumber() Notably improves performance for
float arithmetic. -
FIXED: Memory leak in PL_put_term_from_chars() fast route. This
function implements a fast route for integers and rationals and leaked
the GMP/LibBF object for rationals and large integers. -
ENHANCED: PL_get_float() to raise a float overflow on too large
rational. -
BUILD: Added scripts/configure This script is used for a long time
to maintain multiple versions under the same source tree. See script
for details. [no ci] -
PORT: Work around broken MacOS versions lacking
<term.h>
Reported
by Matthias Gondan after failing build for CRAN -
FIXED: PL_get_nchars() and friends
CVT_INTEGER
handling Broken
in 2ac1553770ac1a9d6753b8b6e72ac2028815a028 -
ADDED: PL_get_nchars(): CVT_XINTEGER Allow converting numbers to
hexadecimal strings. -
DOC: library(occurs) [no ci]
Package cpp
-
ENHANCEMENT: added PlAcquireStream
-
ENHANCED: AtomMap utility
-
DOC: blobs and exceptions
-
ENHANCED: std::string instead of char* in some calls (no code change
needed) - Can add char* interface if needed for performance (unlikely)
PlTerm(term_t) constructor is public, for consistency with PlAtom
Package jpl
- UPDATED: Java standards from 7 to 8. Support for 7 is dropped from
latest OpenJDK releases and 7 is officially EOL for a while.
Package swipy
-
DOC: Handling Undefined
-
ADDED: Class Undefined to deal with WFS undefined results.
-
MODIFIED: Renamed
status
andtruth_vals
totruth
As decided in
Janus meeting, September 20. -
TEST: Install XSB test data if installation includes the tests
-
BUILD: Starting a pyproject.toml
-
DOC: Document handling virtual environments.
-
ADDED: Support Python virtual environments
-
ADDED: Pass instances of class Enum as name (atom).
-
FIXED: Avoid recursive errors crashing while janus.py is being loaded.
It seems we cannot call certain APIs while processing an error. -
ADDED: Map Prolog rational numbers to Python
fractions.Fraction()
. -
ENHANCED: Use hexadecimal conversion for bigints.
-
DOC: Included references
-
COMPAT: Sync py_func/3,4 and py_dot/4,5. Updated docs.
-
MODIFIED: Sync XSB view with current agreement. - pyfunc/3-5,
pydot/4,5 renamed to py_func/3-5 and py_dot/4,5. - Deleted
free_python_object/1 (=py_free/1) -
MODIFIED: Rules when py_object(true) is effective
-
MODIFIED: Use eval(Term) to evaluate Python expressions inline.
-
MODIFIED: Prolog representation of Python sets to use py_set(List)
Was pySet(List).