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
graphical debugger). -
Partial resolution for poor rounding on float functions, notably
on MacOS, but to a lesser extend also on other systems by
@ridgeworks. -
Start of cleanup and improve library(archive) by @peter.ludemann
-
Some work to fix access resources from a saved state as a file
usingres:/filepath
. Should eventually allow for a single-
file distribution of the full Prolog development system (on some
platforms). -
Big speedup of show_coverage/1,2, making this tool really useable.
Note that the call below creates annotated files in the directorycov
. The
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
SWI-Prolog Changelog since version 8.5.10
-
PORT: Issue#83: “label can only be part of a statement” compiler error.
-
ADDED: Prolog flag
vmi_builtin
that 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
os/windows/uxnt.c. -
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
conjunction. -
FIXED: Source layout handling for unifications against nested head
variables. -
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
resources. -
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
concurrently. -
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
file_search_path/2. -
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).
Package archive
-
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
installed environment. -
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
Package cpp
- TEST: Added foreign language interface regression tests
Package http
- ENHANCED: Reduce overhead of session GC
Package pengines
- 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.
Package plunit
-
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.
Package sgml
-
CLEANUP: Use PATH_MAX consistently
-
TEST: Make test_c14n.pl tests independent from newline conventions.
-
TEST: Make test_sgml.pl independent from newline conventions.
Package ssl
-
BUILD: Ensure HOME is set to a writable path for generating the SSL
test certificates. -
PORT: Avoid deprecated SecKeychainOpen().
Package xpce
-
CLEANUP: Consistently use PATH_MAX
-
CLEANUP: Use POSIX PATH_MAX rather than MAXPATHLEN
-
ADDED:
file->open
: allow using resource iris -
ENHANCED:
file->size
to 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 processestab-width: Width;
-
FIXED: PceEmasc Consult selection command resulted in an error
message wrt. format/3 and url/1 terms.