Ann: SWI-Prolog 7.2.3

65 views
Skip to first unread message

Jan Wielemaker

unread,
Aug 25, 2015, 9:08:48 AM8/25/15
to swi-p...@googlegroups.com
Hi,

I have uploaded SWI-Prolog 7.2.3. This version merges 7.3.6. This is
probably the last merge of 7.3.x into 7.2.x. If all goes according to
plan, 7.3.x will start adding significant new stuff in a month or so.
Highlights:

- fixed several possible crashes.
- clp(fd) and clp(b) enhancements.
- aggregate_all/3 constant space for sum(X), max(X) and min(X).
- sandbox additions
- several enhancements to Pengines.
- fixed possible deadlock in semweb (RDF) package.

Package maintainers are adviced to upgrade to this version.

Enjoy --- Jan


========================================
SWI-Prolog Changelog since version 7.2.2
========================================

* VERSION: Merged version 7.3.6

* FIXED: numbervars/3,4: crash when given a negative
start. New code implements this properly and raises a
representation_error(tagged_integer) if the generated integers are
out of range.

* CLEANUP: Types for numbervars

* DOC: CLP(FD): Introduce and use the term "core relation". Translation
of "Kernrelation" (German), used in Ulrich Neumerkel's excellent
GUPU system.

* DOC: Some PlDoc comments in library(quintus).

* FIXED: Flag stream in error state if an exception was raised while
operating on it.

* ENHANCED: CLP(FD): Fewer attributed variables in call_residue_vars/2.
Examples, previously:

* DOC: CLP(FD): New section about optimisation. Julio Di Egidio.

* ENHANCED: CLP(FD): Avoid residual variable for
all_different([]). Ulrich Neumerkel.

* FIXED: possible crash when accessing unallocated memory after
PL_canonicalise_text()

* ENHANCED: aggregate_all/3: implement min(X) and max(X) using constant
space.

* DOC: Clarified confusing \quote. Jochem Liem.

* DOC: Fixed mode of parse_url/2.

* ENHANCED: Rewriting sum(X) template to use nb_setarg/3 in constant
space.

* FIXED: clp(fd) goal expansion for explicitly qualified goals, as
in clpfd:in(A,B). Markus Triska and Ulrich Neumerkel.

* ADDED: library(sandbox): file name manipulation primitives.

* ADDED: library(sandbox): string_lower/2 and string_upper/2

* FIXED: CLP(FD): Apply goal expansion only if the CLP(FD) predicates
are visible in the load context. Jan Wielemaker.

* ADDED: Sandbox listing/1 if argument is not qualified.

* ADDED: --disable-mt configure option.

* DOC: Deal with \log{N}. Stephen Coda and Michael Hendricks.

* ENHANCED: library(www_browser) has been cleaned and updated.

* ENHANCED: debugger: while skipping, possibly created threads are
started in nodebug mode.

* FIXED: www_open_url/1 tried `firefox -remote openURL(...)`, which is
no longer supported.

* REMOVED: CLP(FD): Removed (undocumented) support for A/B. Please
use A//B.

* ENHANCED: CLP(FD): Recognize "Var in I" in disjunctions. Eyal Dechter.

* FIXED: running thread exit hooks without a foreign context.

* DOC: `dot_lists` rather than `dotlists`. Also fixed internal
identifier for consistency. Boris Vassilev.

* FIXED: pack_install/1: compute type (git/non-git) independently for
dependencies. Anne Ogborn and Wouter Beek.

* FIXED: clause index ->size represents the number of indexable
clauses. This was decremented when a non-indexable clause was retracted.
Thanks to Douglas Miles for help creating a reproducible case.

* ENHANCED: CLP(B): Improve trail stack usage.

* FIXED: ensure checkDefinition() is called with a lock on the predicate
definition as it iterates over the list of clause indexes

* FIXED: Make sure copy_term/2, friends and the recorded database add
created attributed variables to the attvar reference chain. If not,
call_residue_vars/2 is incomplete and GC crashes. Markus Triska.

* ENHANCED: CLP(B): More scalable taut/2 for large conjunctions.
Example: Schur's theorem (from Ramsey theory).

* FIXED: Unification between two CLP(B) variables in certain cases.
So far, the only way I have found to show the problem is to disable
domain and aliasing propagation, by letting satisfiable_bdd/1 consist
only of the single clause:

* ENHANCED: CLP(B): Faster domain and aliasing consistency. We now
determine all variables that are not skipped in any branch of the
BDD in essentially a single pass.

* ENHANCED: CLP(B): The solver is now aliasing-consistent (see commit).
By this, we mean that if taut(X=:=Y, 1) holds, then X = Y is posted.

* ENHANCED: CLP(B): More scalable propagation of domain consistency.
All candidate variables are now determined in a single pass of the BDD.

* FIXED: CLP(B): in internal consistency checks, take into account
that variables may be instantiated due to simultaneous
unifications

* ENHANCED: CLP(B): in residual goals, constrain remaining variables to
Boolean variables also when clpb_residuals is set to bdd.

* ENHANCED: CLP(B): stronger internal consistency checks, enabled by
setting clpb_validation to true.

* ADDED: CLP(B): ?- set_prolog_flag(clpb_residuals, bdd) to see the
BDD as a list of if-then-else nodes in residual goals.

* FIXED: CLP(B): Correctly handle duplicate variables in cardinality
constraint. Witness:

* ADDED: library(sandbox): ?=(A,B) is safe.

* FIXED: pack_install/1: non-determinsm when installing from a
directory. Nicos Angelopoulos.

* TEST: Turned GC issue reported and fixed by Keri into a test.
Only fires when compiled with -DO_DEBUG and -d chk_secure
are used.

* FIXED: reset PC when unwinding from an exception. This prevents the
vmi_state using a PC outside of the query frame's clause

* ADDED: library(prolog_breakpoints): set_breakpoint/5 to manage
breakpoints in included files.

* ADDED: Maintain included-file info for data included using the :-
include(stream(...)). syntax.

* FIXED: Dict keys could not be quoted (e.g., _{'file':"x.pl"}).

* FIXED: Issue#19: wrong space requirement calculation for GC under
call_residue_vars/2 causes an assertion failure.
Ulrich Neumerkel.

* MODIFIED: set libswipl SONAME to major.minor instead of
major.minor.micro. This allows SWI-Prolog to be upgraded
in a major.minor series without having to relink external
binaries

* FIXED: Possible crash when using :- include() into a temporary module
because the notion of the file's current procedure is
not reset after loading a file.

* PORT: Test for mp_bitcnt_t and typedef to `unsigned long` if it is
not defined.


===========
Package chr
===========

* ENHANCED: chr sbag_member'/2: really kill choicepoint on last member:
Before:

* FIXED: CHR: debugger 'skip'. Patch by Alan Baljeu

============
Package clib
============

* FIXED: read_line_to_codes/2,3 and read_stream_to_codes/3: return with
failure when interrupted by an exception.

* ADDED: library(prolog_stream) implements a Prolog stream that performs
I/O with callbacks to Prolog.


============
Package http
============

* FIXED: http_server/2: correct start message when started as
`http_server(Closure, [port(Interface:Port])`.

* ADDED: html_head:mime_include//2 to allow handling extended HTML
head resources. After a patch by Wouter Beek.

* CLEANUP: http_read_json/2,3: detection of JSON content type now uses
http_parse_header_value/3.

* MODIFIED: http_read_data/3 using the option to(string) now actually
produces a string (used to return an atom).

===============
Package ltx2htm
===============

* ADDED: \log{N}

================
Package pengines
================

* ADDED: Rebind pengine thread normal I/O to pengine_input/2 and
pengine_output/1.

* ADDED: Pengine.stringify() for `null` and `undefined`

* FIXED: Pengine.stringify() did not handle booleans.

* FIXED: pengines.js: set the pengines id on `onoutput`, so we can
handle output (error messages) from the create.

* DOC: Fixed first Pengine example. Unavailable server and singleton
warnings may scare new users off.

* DOC: Corrected spelling mistake.

==============
Package semweb
==============

* FIXED: Possible deadlock while deleting literal values.
Broadcasting the died triple may cause a query, which in turn may
cause a scan_exit() which can delete literals. Broadcasting is now
done outside the locked area and destruction is delayed until the
broadcast completes.

* FIXED: Possible data corruption in RDF store while destroying literals.

Marco Verpelli

unread,
Aug 26, 2015, 12:03:35 PM8/26/15
to SWI-Prolog
You may update the download page. The 32 bits version works also with Win 10 Home.

Marco
Reply all
Reply to author
Forward
0 new messages