Dear SWI-Prolog user,
NOTE Google is giving false alarms on this site. See Parts of website blocked by Google Safe Browsing?
SWI-Prolog 8.1.15 is ready for download. This versions comes with with
some enhancements, bug fixes and a big change to the location of user
config and data file locations. Highlights:
-
New default file_search_path/2 aliases for user_app_{config,data},
common_app{config,data} and app_{config,data}. Moved locations for
all hidden files normally kept in the user’s home directory. See
https://www.swi-prolog.org/modified/config-files.html. -
Race condition between AGC and message_queue_destroy/1 that can
cause crashes. The bug has been there a long time. Keri Harris
found and fixed it. -
Replace unreachable volatile atoms by ‘<garbage_collected>’, improving
the effectiveness of atom garbage collection. -
Galileo Sartor provided a specification for generating a
snap package. Can be used to generate
your snap. Some more work will follow to get an official snap
version, providing up-to-date binaries that run on many Linux
distros. Thanks! -
Improve trie_gen/2,3 when matching an instantiated value
against a trie choice node that contains variables. Mostly
improves performance for some incremental tabling use cases. -
Improved randset/3 and randseq/3 performance.
-
More rewrites to the execution profiler. More will follow.
-
XSB: Emulate
standard
module and support using XSBsgpp
preprocessor.Enjoy — Jan
SWI-Prolog Changelog since version 8.1.14
-
MODIFIED: Introduced user_app_{config,data} and common_app{config,data}
and make app_{config,data} and alias for the user and common versions
(in that order). -
ADDED: win_folder/2: keys
common_appdata
andlocal_appdata
. -
SNAP: Add snap package
-
DOC: Updated customization files and install them.
-
MODIFIED: Place the personal init file in a common place on all
operating systems. This directory is located in one of the
directories below and namesswi-prolog
- Windows: CSIDL directory
APPDATA (see win_folder/2) - Otherwise
- $XDG_CONFIG_HOME
- $HOME/.configIn this directory we find:
- init.pl (previously .swiplrc or swipl.ini (Windows) Personal
initialization file - lib (previously ~/lib/prolog) Personal library
- xpce (previously ~/.xpce) Directory holding xpce application data
If you use multiple versions we suggest to create the new hierarchy and
make symbolic links from the old locations. Windows users will have to
live with copies. - init.pl (previously .swiplrc or swipl.ini (Windows) Personal
-
FIXED: Windows: tmp_file/2 memory leak
-
PORT: Use _NSGetEnviron() instead of
environ
on MacOS when available. -
ADDED: PL_put_uint64(). Suggested by Mathijs van Otterdijk.
-
FIXED: lock queue table when performing AGC as another thread may be
destroying a message queue -
DOC: XSB dialect issues.
-
XSB: Added library(dialect/xsb/gpp) to use the XSB preprocessor.
-
XSB: Exploit peek_string/3 to realise the required two phase processing
of XSB files if the input cannot be repositioned. -
ENHANCED: peek_string/3 now allows peeking the remainder of long
inputs using a huge value for the peek length while allocating
the minimum of the peek length and the input length rather than
always allocating the peek length. -
ADDED: prolog:open_source_hook/3 to allow hooking the final open for
the compiler. -
FIXED: statistics/2 for
table_space_used
multiplied the value
incorrectly with sizeof(trie_node). New stats also include the
trie itself and the call trie. It ignores node indexes though. -
XSB: Added emulation of Term Writing to Designated I/O Streams,
modulestandard
. -
ENHANCED: If a significant part of the clauses that are candidate
for CGC have an (atom) clause reference, first call AGC. -
ENHANCED: GC: remove links to unreachable volatile atoms.
This improves the efficiency of atom garbage collection. -
FIXED: profile/2 using cumulative(true) without GUI. Abramo Bagnara.
-
ENHANCED: trie_gen/2,3 for when matching an instantiated value
against a trie choice node that contains variables. Test by
Edward Schwartz. -
ENHANCED: library(random): performance of randset/3 and randseq/3
for selecting a small number of elements in a large range. -
MODIFIED: low-level profiler access predicates to communicate
about predicates using predicate indicators rather than heads.
This simplifies the code and makes most data structures ground.
Note that the hookuser:prolog_predicate_name/2
is now called with
a predicate indicator rather than a head. -
FIXED: profile_data/1. Broken after adding profile_procedure_data/2.
-
ADDED: profile_procedure_data/2 to quickly interrogate individual
predicates.
Package xpce
-
MODIFIED: Load PceEmacs extensions from
app_config('xpce/emacs')
instead of~/lib/xpce/emacs
-
ENHANCED: Allow edit script and PceEmacs mode to pass the column
to edit. -
MODIFIED: Place PceEmacs socket in xpce’s data directory
-
MODIFIED: Inherit new SWI-Prolog search for storing application data.
-
FIXED: Details menu and single click in pce profiler view.
-
COMPAT: Sync with new profile data format and reuse more code from
the core Prolog system.