Dear SWI-Prolog user,
SWI-Prolog 8.3.19 is ready for download. Highlights:
- Several bug fixes, notably for incremental and monotonic tabling.
- More SICStus 4 emulation by @dgelessus
- Several documentation fixes by various people
- Addition of single sided unification and committed choice rules
(=>, named after Picat). Used for several predicates in library(lists)
that are single-moded.
The state of the new
Head, Condition => Body rules/clauses is a bit
unclear. Considering how simple they are and how useful they are for at
least some tasks I expect them to stay and do not expect any more
changes to the semantics, possibly excluding the exact exception. If
they prove to be useful enough they are likely to be optimized further.
Docs at SWI-Prolog -- Manual
Enjoy --- Jan
SWI-Prolog Changelog since version 8.3.18
MODIFIED: Use SSU rules for some of the library(lists) predicates:
max_member/2, min_member/2, sum_list/2, max_list/2, min_list/2,
intersection/3, union/3, subset/2 and subtract/3. This causes errors
if the input arguments are non-lists or insufficiently instantiated.
ADDED: Single sided unification with commit clauses using
DOC: get_prolog_backtrace/3: wrong doc for options.
DOC: Fixed “Predicate behaviour and determinism” table. Jan Burse.
FIXED: If we normal incremental re-evaluation considers a monotonic
table valid again we must clear
force_reevalto avoid a second
CLEANUP: Move implementations from deprecated library(oset) to
library(ordsets) and make library(oset) a thin wrapper.
DOC: del_vertices/3 wrong argument order. Moved LaTeX docs completely
to PlDoc for this library. Nicos Angelopoulos
FIXED: We should not decrement the falsecount on incomplete tables
that are created while reevaluating incremental tables.
FIXED: reevaluation completion may be in a merged SCC. In that case
we must be careful not to propagate falsecount through re-evaluating
nodes by setting the reevaluating status to FALSE after completing
all reevaluated tables.
MODIFIED: extend_goal/3 from library(prolog_code) to return the
goal using call/N in case the callable to extend is insufficiently
TEST: Fixed user defined arithmetic tests. Rick Workman.
ADDED: More statistics/2 keys to SICStus emulation, especially ones
introduced in SICStus 4 and later.
ADDED: library(sockets) to SICStus 4 emulation. The server
socket-related predicates are not emulated yet.
ADDED: Prolog flag
max_char_codeand updated docs wrt.
A is "a".
FIXED: Issue#772: tmp_file/2 not to generate the same name in two
ADDED: Partial library(sets) to SICStus 4 emulation.
ADDED: ordsets:ord_member/2 to SICStus emulation.
ADDED: More library(lists) predicates to SICStus emulation
remove_dups/2, rev/2, same_length/3, shorter_list/2,
[proper_]suffix_length/3, cons/3, last/3, head/2, tail/2,
FIXED: Possible crash in PL_get_dict_ex() if the dict data contains
a duplicate key.
ADDED: win_module_file_names/1 to enumerate the Windows DLLs used by
- FIXED: handle pipe(Stream, Options) encoding correctly. @dgelessus
DOC: http_open_websocket/3: udated for handling the
FIXED: predicate option declaration for http_open_websocket/3:
corrected pass-through to http_open/3.
gone 410to list of status replies
- FIXED: Issue#757: Gui tracer fails if variable clustering is disabled
and variables are bound to another variable. Jindrich Kolman.