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