Ann: SWI-Prolog 6.5.1
Jan Wielemaker <[email protected]>
| Newsgroups | gmane.comp.ai.prolog.swi |
|---|---|
| Message-ID | <[email protected]> |
Hi,
I've uploaded SWI-Prolog 6.5.1. There are a lot of changes. Highlights:
- Detection of `semantic singletons' by the compiler. This proofs
to result in a quite high percentage of real bugs. My rough
estimate is about 1/3th! And this is on established code!
- Singleton detection with quasi quotations (do not claim a
singleton of a QQ introduces a reference to the singleton
in its expansion).
- prolog_load_context/2 provides access to variable names.
- term_expansion/4 and goal_expansion/4 to allow converting
source layout information. This goes through most of the
compiler toplevel, but isn't actually used yet.
- halt/0 can now be called from threads. Various fixes to
program termination, notably for xpce on Windows.
- JPL dll hassle is hopefully resolved.
- Cygwin port is updated.
- Lots of small stuff and cleanup.
Not sure where to go with the stable version. I first thought just
cherry-picking the clear fixes, but there are so many that I consider
updating to the devel version after the devel version proofs to be
stable. Please report issues with the above changes.
Enjoy --- Jan
========================================
SWI-Prolog Changelog since version 6.5.0
========================================
* DOC: keysort/2
* ENHANCED: CLP(FD): isolate global_cardinality/2 from user attributes.
Before:
%?- put_attr(A, edges, [a]), global_cardinality([A,B,C], [0-_,1-_]).
%@ false.
Now:
%?- put_attr(A, edges, [a]), global_cardinality([A,B,C], [0-_,1-_]).
%@ put_attr(A, edges, [a]),
%@ A in 0..1,
%@ global_cardinality([A, B, C], [0-_G4383, 1-_G4389]),
%@ B in 0..1,
%@ _G4383 in 0..3,
%@ C in 0..1,
%@ _G4389 in 0..3.
* FIXED: Dummy empty warning if no compiler warning refers to a variable.
* ENHANCED: CLP(FD): Better isolation from user-defined variable
attributes. Example:
:- use_module(library(clpfd)).
distinct(Vars) :- Vars = [A,B,C,D], all_distinct(Vars), [A,B,C]
ins 0..2.
Before:
%?- put_attr(X, edges, [x]), Vars = [X|_], distinct(Vars).
%@ false.
Now:
%?- put_attr(X, edges, [x]), Vars = [X|_], distinct(Vars).
%@ Vars = [X, _G1856, _G1859, _G1862],
%@ put_attr(X, edges, [x]),
%@ X in 0..2,
%@ all_distinct([X, _G1856, _G1859, _G1862]),
%@ _G1856 in 0..2,
%@ _G1859 in 0..2.
That is, users can freely use the "edges" attribute themselves.
* ENHANCED: CLP(FD): Remove branch singletons.
* FIXED: Inlined unification must revert to normal unification if occurs
check is active.
* TEST: compensate for optimization
* FIXED: Mixup in truth of == and \== predictable warnings. Keri Harris.
* ADDED: Move multiton detection into the compiler, so this compiles
clean: == t :- (v(_A);v(_A)). ==
* FIXED: Detection of `multitons' (broken after singleton detection
extension for dealing with quasi quotations).
* FIXED: myplus/4 in bounds.pl. Note that bounds is deprecated in
favour or library(clpfd). Markus Triska.
* ENHANCED: :- at_halt/1 is now term-expanded, such that reloading the
file does not re-register the hook.
* FIXED: Apply changes that where missed due to a git conflict
* UPDATED: Handle new PL_on_halt() interface
* MODIFIED: Program termination: - at_halt/1 handlers can veto
termination of halt/0 by calling
cancel_halt/1. - PL_at_halt() handlers now have a declared
return type. In
the future, they will be able to cancel termination by
returning a non-zero status. Now a warning is printed. -
halt/1 and PL_halt() can be called from any thread.
* FIXED: set_stream/2 issues with recent patch
* ENHANCED: safe_goal/1, various enhancements: - Distinguish undefined
predicates - Deal with library meta-predicates (security fix) -
Module aware call/N support - Print context of encountered problem
* CLEANUP: Use DCG // notation for declarations
* FIXED: license/1: list known licenses (found by singleton analysis)
* ENHANCED: read_term/3: singleton detection with quasi
quotations. Variables appearing only ones are searched in the quasi
quotation results. If found there, they are no real singletons.
* ADDED: library(sandbox): added a lot of safe primitives.
* FIXED: safe_goal/1: Catch instantiation_error when trying to proof
safety of a general goal.
* MODIFIED: Make set_stream/2 behave sensibly on stream pairs. Daniël
de Kok.
* CLEANUP: Implementation of set_stream/2.
* ADDED: Singleton checking inside \+
* DOC: var_branches style check
* CLEANUP: Removed two useless assignments
* FIXED: nb rbtrees (singleton)
* MODIFIED: Setting style_check/1 and expects_dialect/1 in ~/.plrc
changes the default for the session. The settings used to be
scoped to the file. This scoping is now controlled by a new option
=scope_settings= to load_files/2.
* ADDED: style_check/1: ?- style_check(?(Style)). to return active
style checks on backtracking.
* DOC: term_expansion/4, etc.
* DOC: Document extended singleton warnings
* DOC: style_check/1 new =no_effect= option
* DOC: user term_expansion is followed by DCG!
* CLEANUP: Avoid new warnings in test cases. Test cases sometimes use
ugly code by design ...
* ADDED: compiler warnings for BIPS that have no effect and singleton
variables in branches (semantic singletons).
* ADDED: Support for warning messages from the compiler
* ADDED: Provide prolog_load_context/2 =variable_names= and implemented
goal/term expansion with 4 arguments to process layout information.
* FIXED: Default handling in setting (spotted by variable balance
checking)
* CLEANUP: some documentation glitches
* ADDED: New style-check options. We will include these into the stable
branch to avoid warnings on code calling style_check/1.
* TEST: Fixed test code for timeout handling.
* CLEANUP: Removed bogus test
* FIXED: Remove meta_predicate/1 declaration for '|'/2. This is since
long not a predicate anymore.
* CLEANUP: Use '$type_error'/2.
* FIXED: Colourise [:|+] meta-declaration.
* CLEANUP: Rename $-predicates in DCG expander. This is not needed since
this code is in a module. Also removed a lot of outdated comments
and added some new ones.
* FIXED: base32//1: Singleton I3
* CLEANUP: library(clpp/bounds): singletons. Not sure whether this
was intended.
* CLEANUP: Branch singletons
* CLEANUP: Unification against unused variable
* CLEANUP: In DCG, \+ \+ {...} leads to useless unifications. We now
use { \+ \+ G }. That remains silent. Eventually, this can (and
should) be improved in the DCG compiler.
* FIXED: Emulated shell commands for non-atom arguments.
* FIXED: library(prolog_pack): parsing of versions with * in them.
* FIXED: Pass thread-reference in all branches
* FIXED: library(prolog_colour) to colour "..." terminals properly
* PORT: Cygwin: install package shared objects in the right
location. Corinna Vinschen.
* PORT: Updated Cygwin port by Corinna Vinschen
* FIXED: make/0: avoid loading files twice. Paulo Moura.
* FIXED: PL_thread_engine_attach() did not initialise the thread
locale. Carlo Capelli.
* FIXED: Make sure the config var SO_PATH is set to PATH in Windows,
and not WINEPATH.
* CLEANUP: Avoid using SO_PATH for two different purposes
* FIXED: DCG argument of phrase_from_stream/2 is not identified as such
(meta_predicate/1).
=========
Package R
=========
* FIXED: Mixup of Ruo/Ro variables in r_lines/6
===============
Package archive
===============
* PORT: Deal Win64 off_t handling
===========
Package chr
===========
* ADDED: style_check(-no_effect) to compensate for some unifications
that have no effect. Suggests that is some room for optimization.
* CLEANUP: Avoid (extended) singleton warnings.
* FIXED: delete_first_ht/3: Not only compute load, but also update it.
============
Package clib
============
* UPDATED: Handle new PL_on_halt() interface
* PORT: Cygwin updates by Corinna Vinschen
===========
Package cpp
===========
* DOC: Document PREDICATE0() and NAMED_PREDICATE()
* ADDED: PREDICATE0(name) as alternative to PREDICATE(name, 0) that
avoids unused parameter warnings.
* MODIFIED: NAMED_PREDICATE() takes a string as name.
* FIXED: PREDICATE() macro issues
* ADDED: Macros NAMED_PREDICATE() and NAMED_PREDICATE_NONDET() to
allow defining predicates that have a name that cannot be expressed
as a C identifier. This patch also casts unused variables to (void)
to avoid warnings. With help from Carlo Capelli.
============
Package http
============
* CLEANUP: More elegant implementation for computing byte-length
in encoding
* CLEANUP: Branch singletons
* CLEANUP: Another branch singleton.
* FIXED: Singleton in interactive_httpd->authorise causes poor error
message.
* CLEANUP: Removed detection of unused OpenID NS
* INSTALL: Avoid double installation of shared objects. Corinna Vinschen.
* DOC: Improved documentation of cookie handling
===========
Package jpl
===========
* PORT: Use win_add_dll_directory/1 and generalise the search a bit
=============
Package pldoc
=============
* CLEANUP: Avoid semantic singleton message
==============
Package plunit
==============
* FIXED: Only share variables between options and body to maintain
first-var and singleton properties.
* CLEANUP: Singletons
==============
Package semweb
==============
* FIXED: Avoid unlocking the RDF store directory twice.
* FIXED: rdfe_undo (bug found by balanced var check)
* FIXED: Loading Turtle from a stream did not reset the stream encoding.
* FIXED: Detecting subjects for turtle writer.
=============
Package space
=============
* FIXED: sem_time_candidate
* FIXED: owl_time_xsd_candidate/3 error spotted by singleton detection.
===============
Package windows
===============
* CLEANUP: Do not ignore return values and delete dead code.
============
Package xpce
============
* FIXED: Locking issue that causes long delays on halt if xpce is
running in separate thread.
* FIXED: Two new singleton warnings (one was a bug).
* FIXED: Priority issue in GUI term pretty printer
* UPDATED: Handle new PL_on_halt() interface
* ENHANCED: Allow cancelling halt
* CLEANUP: Variable style issues.
* PORT: Rename installation helper xpce-install into xpce-copy to prevent
Windows from trying to run this program as admin. Corinna Vinshen.
* FIXED: Start xpce from a background thread.
* PORT: update of the Cygwin port by Corinna Vinschen
* CLEANUP: Avoid more semantic singletons
* FIXED: Semantic singletons. One fixes a bug in the class
prolog_predicate.
_______________________________________________
SWI-Prolog mailing list
[email protected]
https://lists.iai.uni-bonn.de/mailman/listinfo.cgi/swi-prolog