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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.