Dear SWI-Prolog user,
SWI-Prolog version 8.5.7 is ready for download. This version fixes
(again) several portability issues, fixes a couple of crashes, improved
compatibility and fixes several issues in swipl-win, both the Qt and
native Windows version. Highlights:
- As followup to a crash reported by Paulo Moura in the Logtalk suite,
a couple of incompatibilities were resolved. Notably for format/2.
One is a MODIFIED: the goal for
~@is now executed as
\+ \+ Goal,
i.e. variable bindings for the goal are lost.
- The parser now parses +42 as +(42) instead as simply the number 42.
This is required by the ISO standard. Somehow this was never spotted.
- Crashes: two bugs in rational number handling,
set_prolog_flags(threads, …). SSU issue with clause indexing.
- Enhancements to print_term/2.
- Some more input validation (option/2, http_server/2)
- Encoding issues: MQI and MacOS SWI-Prolog.app
- MacOS: SWI-Prolog.app, encoding, working directory is now $HOME
and silenced message box on termination.
- Windows: XPCE fixes to avoid message boxes to hide behind other
windows and PceEmacs too open multiple windows for the same file
if the current window is iconized.
Thanks for all feedback and patches!
Enjoy --- Jan
MODIFIED: MacOS SWI-Prolog.app working directory and locale setup.
swipl-winto start in ~/Documents.
MODIFIED: MacOS: set LC_CTYPE to UTF-8 if neither LANG nor LC_CTYPE is
set. Also set the
LC_CTYPEis set to
PORT: Started Apple specific predicates. Adds
PORT: Fix compilation using clang in debug mode.
FIXED: make/0 to consider a file modified if some indirectly included
file is modified. Used to only consider directly included files.
FIXED: Possible GC crash on a rational number appearing in a clause
FIXED: Indexing issue for assessing possible clauses indexes in SSU
code. Can lead false “No matching clauses” errors.
DOC: read_string/3: clarify characters.
ENHANCED: option/2: verify the Options argument.
CHECK: Verify that the format/2,3 arguments are a list. Quintus
allowed for not using a list when only a single argument was required.
MODIFIED: Read +digits as a term rather than a number. This changes
also removes the space when writing e.g. +42. Reading +digits as
a number predates the ISO standard and current practice. It was in
SWI-Prolog since version 2.5 …
MODIFIED: format/1-3: enforce first argument to be text. Now raises
an exception if the first argument is a number, etc.
~@, running a goal now discards possible
bindings created by the goal. Compatibility with SICStus.
COMPAT: format/2: a numeric argument to
the string to the given number of characters.
COMPAT: format/2: ~r uses default radix of 8, compatible with SICStus
and GNU-Prolog (used to raise an exception). Paulo Moura.
set_prolog_flag(threads, Val)deadlocked. Paulo Moura.
FIXED: big integers constants in arithmetic expressions under
optimization could be compiled as A_MPQ (rational), resulting in
a crash. Paulo Moura.
DOC: further enhancement to untable/1 docs.
DOC: document the role of untable/1.
ADDED: foldsubterms/5 and use this to bootstrap foldsubterms/4,
mapsubterms/3 and mapsubterms_var/3.
ENHANCED: print_term/1,2: actually handle the
(fix) and make its default the current column.
FIXED: print_term/1,2: avoid dependency on library(backcomp).
- ENHANCED: verify server address when starting an HTTP server and
raise an error if this is invalid.
FIXED: Hang with multi-byte UTF8 characters reported by @Losbarthos
Details in: https://github.com/SWI-Prolog/packages-mqi/issues/14
The MQI implementation had a bug where sends to MQI expected the
message header to provide a count of Unicode code points instead of
what it should have been: UTF8 bytes. This has been corrected but is a
breaking change, so:
ADDED: A simple protocol versioning interface to the MQI. There is
now a mqi_version/2 predicate and the MQI returns Major and Minor version
in its response to an initial connect message.
ADDED: The swiplserver Python library properly detects the original
and fixed versions and works against both of them.
TEST: Added tests for multi-byte UTF8 characters
- BUILD: Silence message about enabling tests. We want the cmake run
as quiet as possible.
FIXED: term_expansion/2 for rdf_meta/1 contained a !, preventing
other rules to fire.
ADDED: rdf_meta/1: apply conversion in SSU heads.
FIXED: rdf_global_term/2: Allow for zero-arity compounds.
COMPAT: do not require white space after the subject and predicate
of ntriple format.
error: ‘rsa’ undeclaredfor old OpenSSL and LibreSSL.
- CLEANUP: Avoid messagebox when terminating.
FIXED: Issue#10 for swipl-win:
box in the background.
FIXED: Issue#14 (swipl-win, should be xpce)
emacs_frame->on_current_desktopfailed if the frame is
iconized. This keeps creating new frames rather than reusing them.
FIXED: frame->expose for Windows when xpce is running in the