Dear SWI-Prolog user,
SWI-Prolog 8.5.11 is ready for download. Highlights:
Several Windows issues. Notably a partial solution on supporting
long file names, handle the new Windows 10 and 11 UTF-8 system
code page (65001) and configuration issues. Much better test
coverage by @mgondan1.
Several fixes to source code position logic (affects notably the
Partial resolution for poor rounding on float functions, notably
on MacOS, but to a lesser extend also on other systems by
Start of cleanup and improve library(archive) by @peter.ludemann
Some work to fix access resources from a saved state as a file
res:/filepath. Should eventually allow for a single-
file distribution of the full Prolog development system (on some
Big speedup of show_coverage/1,2, making this tool really useable.
Note that the call below creates annotated files in the directory
annotations are useful for creating a comprehensive test suite. I
think it can also be useful for debugging.
?- show_coverage(Goal, [dir(cov)]).
Added jammy (Ubuntu 22.04) to targets for generating PPAs
Enjoy — Jan
PORT: Issue#83: “label can only be part of a statement” compiler error.
ADDED: Prolog flag
vmi_builtinthat controls whether or not built-in
predicates that are defined in the VM are handled in the VM or called
as normal predicates. The latter was previously associated with debug
mode, but has also other purposes, such as in coverage analysis or
when using trace/1.
ADDED: Low level primitives to collect information about coverage.
This is used by show_coverage/1,2 to achieve only a modest slowdown.
MODIFIED: delete_file/1 to delete a read-only file on Windows for
compatibility with other platforms.
MODIFIED: Windows: use GetACP() to detect that the system runs in
UTF-8 mode and set the default encoding accordingly.
FIXED: Several issues to consistently deal with buffer sizes in
MODIFIED: Floating point rounding now assumes the C correctly
implements floating points functions for the “to nearest” rounding.
It than adds or subtracts one ulp to guarantee that the true value
is between the downward and upward rounded values.
FIXED: Possible race condition importing into a module. Can lead to
termination on a system error.
PORT: Consistently use PATH_MAX and raise it to 32k on Windows.
CLEANUP: Use POSIX PATH_MAX rather than MAXPATHLEN
FIXED: Source layout handling for SSU (=>) whose guard is a
FIXED: Source layout handling for unifications against nested head
FIXED: Make source layout handling aware that debug/3 and assertion/1
may be removed by the optimizer.
DOC: Many enhancements to the foreign language API docs, notably
wrt. atoms and blobs.
ADDED: Sopen_iri_or_file() API to allow foreign code to access the
ADDED: Support repositioning streams on program resources by setting
the buffer size to the size of the resource. This allows the IDE
tools to run on resource files.
FIXED: central resource db handling by opening ``res://` may have
streams closed early during to atom-GC.
ENHANCED: require/1 to simply import if the target module is already
loaded. Reduces startup time.
ENHANCED: open_resource/2,3: allow opening multiple resources
FIXED: open/3 and friends on ‘res://’ paths.
FIXED: fd_degree/2 and fd_set/2 for constant integer arguments.
DOC: added cross-references from absolute_file_name/3 to
ADDED: library(sandbox): allow declaring prolog flags as safe.
TEST: updated check_installation for PCRE2
PORT: skip dll in Rtools (only static libs)
ADDED: open/4 option newline(Mode).
CLEANUP: Removed references to libarchive versions before 3.0.0a -
Version 3.0.0a was released 2008/05/26 - The “seek” functionality
was added 2011/11//18 - The “filter count” functionality was added
2010/02/19 Changed the archive blob from PL_BLOB_NOCOPY to instead
be allocated by PL_unify_blob(), which simplifies cleanup on some
failure situations. Set blob fields to NULL after they have been
freed. Removed unused free_archive()
TEST: Remove assumptions about the build environment and other details
such that the tests also run in different environments such as the
TEST: Added tests for code snippets in documentation and
check_installation Fixed typos in documentation Added tests that
cause memory leaks and exercise error conditions / failure
- TEST: Added foreign language interface regression tests
- ENHANCED: Reduce overhead of session GC
- ENHANCED: Pengines waiting for a new event now wait the first second
without idling. After than they call thread_idle/2 to minimise
their footprint. This avoids garbage collections for short waits
while going into a deeper sleep mode for a long wait.
ENHANCED: show_coverage/2: use new built-in coverage collecting
primitives to achieve only a modest slow down.
ENHANCED: show_coverage/1,2: call-site annotation (sub goals),
several new options to control the output.
CLEANUP: Use PATH_MAX consistently
TEST: Make test_c14n.pl tests independent from newline conventions.
TEST: Make test_sgml.pl independent from newline conventions.
BUILD: Ensure HOME is set to a writable path for generating the SSL
PORT: Avoid deprecated SecKeychainOpen().
CLEANUP: Consistently use PATH_MAX
CLEANUP: Use POSIX PATH_MAX rather than MAXPATHLEN
file->open: allow using resource iris
file->sizeto use information from the stream when the
file is open.
ADDED: Allow opening res:// resources.
ADDED: PceEmacs to recognise Emacs
-*- Var: Value; ... -*-
syntax. For now only processes
FIXED: PceEmasc Consult selection command resulted in an error
message wrt. format/3 and url/1 terms.