Re: Ann: SWI-Prolog 6.5.1

Nicos Angelopoulos (Univ of York) <[email protected]>
Newsgroups gmane.comp.ai.prolog.swi
Message-ID <20130813140747.1ffa2a91__47566.9267391369$1376400452$gmane$org@ampelos>
Dear Samer,

If you want to stay compatible with SWI,
your current best bet is to use Yap Prolog.
Yap is to a large extent compatible with SWI. 
Your milage will depend on which SWI libraries you rely on.
I think the rule of thumb is that everything works except for 
libs that depend on threads and stuff that were added the last 6-12 months.

In development branch of Yap, Prism seems to be a standard library (please note that i have no experience with using this).
άμπελος;prism/exs% yap
YAP 6.3.4 (x86_64-linux): Wed Aug  7 15:07:41 BST 2013
MYDDAS version MYDDAS-0.9.1
 % reconsulting /home/nicos/.yaprc...
?-[library(prism)].
,,,,,,
,,,,,,
	including some worrisome warnings

?- prism(bloodABO),go,print_blood.
.....


You are right this scenario would be an excellent motivation for tabling.
As far as Prism is concerned, the SWI port would be mostly for educational reasons. 
I don't think that performance wise it can get anywhere near BProlog and Yap without serious
time investment.

SWI and Yap did great work a couple of years back and have to some extend continue 
this work to provide the same libraries. I think they actually use a common repository for some of them.
In an ideal word you either want
	a. Yap engine and Swi libs
	b. a common core API that will separate the libs from the inference engine,
	   thus making all libs automatically visible to both systems

Of course, this is from a user perspective.
Developers obviously have different priorities, such as viability, finance, prestige and guarding of user-bases among others.

Regards,


Nicos Angelopoulos
---
http://bioinformatics.nki.nl/~n.angelopoulos


On Tue, 13 Aug 2013 09:13:11 +0000
"Abdallah, Samer" <[email protected]> wrote:

> 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
> 
> 
> _______________________________________________
> SWI-Prolog mailing list
> [email protected]
> https://lists.iai.uni-bonn.de/mailman/listinfo.cgi/swi-prolog
_______________________________________________
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.