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