Re: Ann: SWI-Prolog 6.5.1

"Abdallah, Samer" <[email protected]>
Newsgroups gmane.comp.ai.prolog.swi
Message-ID <[email protected]>
Hi Jan,
Thanks for the new version - I have a few versions to catch up now,
but if you're wondering what to do next, might I suggest …
 [whispering] tabling?
I'd love to be able to implement something like this
	http://sato-www.cs.titech.ac.jp/prism/
on SWI. BProlog seems like a good Prolog but in terms of general
usability, not to mention my investment in libraries, SWI is a lot better
for me. I realise adding any sort of efficient tabling probably involves a major 
reworking of the base code - is it at all doable?

Samer.

On 12 Aug 2013, at 21:43, Jan Wielemaker <[email protected]>
 wrote:

> 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.