Re: Ann: SWI-Prolog 6.5.1
"Abdallah, Samer" <[email protected]>
| Newsgroups | gmane.comp.ai.prolog.swi |
|---|---|
| Message-ID | <[email protected]> |
Hi Nicos, Thanks for this information - I didn't realise Prism had been ported to YAP. I'm trying it out now! And it will be a great help that SWI and YAP are already so close to each other. Given that Prism is already in YAP and YAP has good CHR implementation, I'll also have a look at combining CHR with Prism along the lines of Sneyers, Meer and Vennekens' CHRiSM system. The problem I'm working on involves parsing a probabilistic context sensitive grammar, and the multi-headedness of CHR suggests a way to handle the context sensitivity. Samer. On 13 Aug 2013, at 14:07, Nicos Angelopoulos <[email protected]> wrote: > > 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