minor CHR updates
[chr.git] / ChangeLog
blob6a77858567f0b3f6fb2c14c817c9187f22dc4011
1 [Jan 29 2008]
3  * EHANCED: CHR performance: compacted indexing code
5 [Jan 28 2008]
7  * ADDED: CHR: chr_constants/1 built-in type for enumerated constants
9 [Jan 27 2008]
11  * ENHANCED: CHR: performance improvements (success continuation, Prolog code optimization)
13  * COMPAT: Removed min_list/2 from library(hprolog) as this is now in library lists.
15 Jan 24, 2008
17   * TS: Exploit success continuation information.
19 Jan 23, 2008
21   * TS: Bug fix in continuation optimization.
22   * TS: Fixed singleton variable.
23   * TS: Suppress debug message.
25 Jan 22, 2008
27   * TS: Rewrite Prolog code: common prefix elimination in
28         successive clauses of the same predicate. 
29   * TS: Tries stores enabled by default again.
30   * TS: Success and failure continuation optimization for
31         propagation occurrences.
33 Jan 14, 2008
35   * TS: Fix performance bug in locking of guard variables.
36   * TS: Fix performance bug in spurious hash_term call.
38 Jan 10, 2008
40   * TS: Type check constraint declarations.
41   * TS: Trie stores hidden behind `experimental' option.
42   * TS: New option `verbose' prints constraint indices.
43   * TS: Don't compute term_hash for int and natural types.
45 Jan 9, 2008
47   * TS: Avoid trivial warning for declare_stored_constraints.
48   * TS: Bug fix: missing full store was causing compiler to loop.
50 Jan 9, 2008
52   * TS: Bug fix: atomic_constants store was causing compiler
53         to loop.
54   * TS: Clean-up and avoid adding additional global_ground store
55         if atomic_constants store covers all cases.
56   * TS: Clean-up and bug fix.
58 Jan 7, 2008
60   * TS: Performance improvement: use new store
61         implementation for multi-argument lookups
62         on manifest ground terms. Should be faster than 
63         hashtable.
65 Jan 4, 2008
67   * TS: Performance improvement: use new store
68         implementation for single-argument lookups
69         on manifest atomics. Should be faster than
70         hashtable. Will be generalized to arbitrary
71         manifest ground lookups and non-manifest
72         atomically typed lookups .
73         
74 Jan 3, 2008
76   * TS: Modified error messages of declare_stored_constraints
77         option, to distinguish between stored, temporarily stored
78         and never stored.
79   * TS: write/1, writeln/1 and format/2 are now treated as non-binding
80         builtins.
81   * TS: Properly inline inthash constraint lookup.
83 Dec 31, 2007
85   * TS: Additional assertion # default(Goal) for the
86         declare_stored_constraints, which specifies that
87         an unconditional simplification rule for the constraint
88         must be added to the end of the program. The Goal
89         parameter specifies the goal of that rule, e.g.
90         true or fail or throw(...). Experimental.
92 Dec 29, 2007
94   * TS: Experimental option declare_stored_constraints for
95         telling the compiler to warn for stored constraints
96         that are not asserted to be stored. Use the
97                 :- chr_constraint f(...) # stored.
98         notation for asserting that a constraint is expected to
99         be stored.
101 Dec 27, 2007
103   * TS: Inline constraint lookup.
105   * TS: Precompile term hashing.
107 Sep 26, 2007
109   * TS: Code cleaning was hampered by line numbers.
110         Reported by Mike Elston.
112 May 2, 2007
114   * PVW: Bug fix in observation analysis.
115   * PVW: Consistency checks of experimental history pragma.
117 Apr 5, 2007
119   * TS: Lessened worst bottlenecks in CHR compiler,
120         in the guard simplification phase.
122 Mar 26, 2007
124   * TS: Experimental dynattr option, for dynamic size attribute terms.
126 Mar 16, 2007
128   * TS: Extended observation analysis (abstract interpretation)
129         to deal with disjunctions. With Paolo Tacchella.
131 Mar 14, 2007
133   * TS: Renamed hprolog:substitute/4 to substitute_eq/4, because of
134         name conflict with library(edit).
136 Mar 12, 2007
138   * TS: Use line numbers in error and warning messages.
140 Mar 8, 2007
142   * TS: Added maintenance of line numbers through CHR compilation
143         as an option: chr_option(line_numbers,on).
145 Mar 5, 2007
147   * TS: Bug fix: setarg/3 instantiation error reported by Mike Elston.
148         Caused by missing suspension argument in debug off, optimize off
149         mode.
151 Feb 22, 2007
153  * LDK: O(1) removal from hashtables, with experimental
154         chr_option(ht_removal,on).
156 Jan 25, 2007
158  * PVW: Bugfixes for optional use of CHR constraints in rule guards.
160 Jan 18, 2007
162   * PVW: Optional use of CHR constraints in rule guards.
164 Nov 20, 2006
166   * TS: Bug fix in compiler_errors.pl.
168 Oct 25, 2006
170   * TS: Bug fix in occurrence subsumption by Jon Sneyers.
172 Oct 18, 2006
174   * TS: New preprocessor feature.
176   * TS: Parametrization of experimental chr_identifier type.
178 Oct 16, 2006
180   * TS: More inlining.
182   * TS: Stronger static type checking.
184   * TS: Omitted buggy FD analysis from bootstrapping process.
186 Oct 12, 2006
188   * TS: More inlining.
190   * TS: Experimental chr_identifier type.
192 Oct 10, 2006
194   * TS: Allow for empty type definitions aka phantom types. These are 
195         useful for some type-level tricks. A warning is issued so the 
196         user can check whether a phantom type is intended. No other
197         phantom type-specific checks are in place yet.
199   * TS: Fixed static type checking of built-in types.
201 Oct 9, 2006
203   * TS: The dense_int type can now appear on the rhs of type alias
204         definitions.
206 Oct 3, 2006
208   * TS: Fixed bug concerning matchings between ground and possibly
209         non-ground arguments.   
211 Oct 2, 2006
213   * TS: Fixed a bug in code generation, overeager removal of a clause.
215 Sep 28, 2006
217   * TS: Refactored some code.
219 Sep 22, 2006
221   * TS: Add exception handler to initialize chr_leash in new threads.
222   
223 Sep 18. 2006
225   * TS: Bug fix for programs in debugging mode.
227 Aug 30, 2006
229   * JW: Fixed make clean
230   * JW: Enlarged stacks to make build succeed
232 Aug 24, 2006
234   * JW: Add target ln-install
236 Aug 21, 2006
238   * TS: Fixed wrong arities in not inlined predicates. Mike Elston.
240 Aug 18, 2006
242   * TS: Code clean-up, more inlining, only generate used imports.
244 Aug 17, 2006
246   * TS: Inlining and more specialization of auxiliary predicates.
248 Aug 10, 2006
250   * TS: Fixed bug for constraints without rules in debug mode.
252   * TS: Compiler clean-up
254   * TS: Experimental var_assoc_store.
257 Aug 9, 2006
259   * TS: Various minor code generation improvements, including smaller
260         suspension terms.
262 Aug 8, 2006
264   * TS: Absolutely no lock checking when check_guard_bindings is disabled.
266 Aug 4, 2006
268   * TS: Minor optimizations for (-) arguments.
270   * TS: Important optimization for awakening fewer suspended constraints
272 Aug 3, 2006
274   * TS: Fixed typo in static type checker.
276   * TS: Documented static and dynamic type checking.
278 Aug 2, 2006
280   * TS: Fixed bug (type alias related) in static type checker. Mike Elston.
282   * TS: Added static type checking on variable matching in rule heads.
284   * TS: Added static type checking on CHR constraints in rule bodies.
286 Aug 1, 2006
288   * TS: New (limited) compile time type checking of rule heads.
290 Jul 28, 2006
292   * TS: New experimental robustness feature in debug mode:
293         runtime type checking of CHR constraints.
295 Jul 5, 2006
297   * TS: Minor bug fixes.
299 Jun 22, 2006
301   * TS: Improved performance of ai_observation_analysis,
302         mainly via additional tabling and passive declarations.
304 Jun 8, 2006
306   * TS: Disabled some code only intended for SICStus.
308   * TS: Fixed bug in removal of constraints. Spotted by Leslie De Koninck.
310 Jun 7, 2006
312   * TS: Next fix to tracer. Cconstraints in propagation
313         rules are shown in textual order.
315 Jun 2, 2006
317   * TS: Next few fixes to tracer. Constraints in simpagation rules
318         are now shown on the right side of the backslash.
320 Jun 1, 2006
322   * TS: Synchronization with SICStus version of K.U.Leuven CHR.
324   * TS: First few fixes to tracer. Cconstraints in simplification
325         rules are shown in textual order. Constraint insertions
326         are always shown.
328 May 17, 2006
330   * TS: Termination bug fixed in guard_entailment.
332   * TS:  Runtime library predicate run_suspensions is now specialized
333         per constraint, avoiding requirement of fixed suspension layout.
335   * TS: Further update to suspension term layout. Only constraints for
336         which the propagation history is used get a history field.
338 May 9, 2006
340   * TS: Ignore propagation rules with trivial body 'true'.
342 Apr 24, 2006
344   * TS: Guard entailment now first simplifies the formula it processes,
345         in order to reduce the number of disjunctions, to obtain a smaller
346         search tree.
348 Apr 22, 2006
350   * TS: Bug fix by Jon Sneyers:  type aliases now support built-in types.
351         Spotted by Mike Elston.
353   * TS: Small refactorings based on Ciao port experience.
355   * TS: Removed -singleton stylecheck option now that portray_clause
356         prints singleton variables as _.
358 Apr 19, 2006
360  * JW: Make library(chr) load its private stuff silent.
362 Apr 14, 2006
364  * TS: Bug fix: too many guards were locked.
366 Apr 11, 2006
368   * TS: Most runtime library predicates are now specialized
369         per constraint, avoiding generic =.. and lists code.
371         Mayor update to suspension term layout. Layout may now
372         differ from one constraint to the other. Some unused suspension
373         fields (continuation goal and generation number) are omitted.
374         Further analysis can remove more fields.
376         Default store constraints now each have
377         their own global variable: a list of all the suspensions.
378         Removal from this list is now O(1) thanks to setarg/1 and
379         back pointers in the suspension terms. This can cause time
380         time complexity improvements in solvers that always have 
381         variable indexing on their constraints.
383         Ground, non-indexed constraints are now removed from
384         their global list store in O(1), as for the default store.
386         Minor bug fixes in a number of places.
388 Mar 16, 2006
390   * TS: Fixed subtle bug in ai_observation analysis,
391         that caused goal sequences to only generate
392         the optimistic default answer pattern, leading
393         to invalid 'not observed' conclusions.
394   * TS: Variable indexing/suspension analysis now ignores functor/3
395         in guards. Could be extended to other built-ins
396         that cause an error when arguments are not
397         properly instantiated.
399 Mar 11, 2006
400   
401   * TS: Renamed global variable id to chr_id in chr_runtime.pl.
403 Mar 9, 2006
404   * JS: Synchronization with experimental version:
405         - minor optimizations, e.g. efficient lookups with statically known
406           instantiated data 
407         - new alternative syntax for passive declarations
408         - new dense_int built-in type + underlying store
409         - new type alias definitions, like in Mercury
411 Mar 4, 2006
412   * BD: small changes in chr_compiler_options.pl and chr_translate.chr
413         affecting only the SICStus port
415 Mar 3, 2006
416   * BD: lots of changes related to porting to SICStus
417   * TS: Now exception/3 hook is only used in SWI-Prolog
419 Mar 2, 2006
421   * TS: Use exception/3 hook to catch undefined 
422         global variables of chr_runtime.pl and CHR modules,
423         for multi-threaded programs and saved states.
425 Feb 9, 2006
427   * JW: Fix "make check" path issues.
428   * TS: Removed all is_chr_file tests when loading file.
430 Feb 8, 2006
432   * BD: chr_swi.pl: option(optimize --> :- chr_option(optimize
433   * TS: Removed obsolete experimental optimization option.
434   * TS: Correctly report variable pragmas!
435   * TS: No constraints declared is no longer a special case.
437 Jan 19, 2006
439   * BD: chr_swi.pl - use_module(hprolog added for SICStus port
440   * TS: Removed operator declaration for '::'. No longer used.
442 Dec 23, 2005
444   * TS: Removed chr_constraints declaration again, in favor
445         of only the chr_constraint declaration and modified
446         documentation accordingly.
447   * TS: Modified documentation based on recommendations of Bart Demoen.
448   * TS: Added chr_info/3 predicate to chr_compiler_errors, as suggested by
449         Jon Sneyers. Now print banner on calling compiler.
451 Dec 13, 2005
453   * TS: warnings are now written to user_error stream.
455 Dec 12, 2005
457   * TS: option and constraints declarations are now deprecated. They
458         are replaced by chr_option and chr_constraint(s).
459   * TR: Made an interface for warnings and errors. Errors now implemented
460         with exceptions.
461   * TR: Revised documentation.
463 Dec 2, 2005
464   * BD: chr_translate.chr, chr_translate_bootstrap2.chr
465            mutables "abstracted"
466   * BD: chr_translate_bootstrap1.chr
467            atomic_concat - some duplicate code of it is in more than one file :-(
468            create_get_mutable definitions if-deffed
469            verbosity_on/0 for porting
470         hprolog.pl
471            definitions of init_store/2, get_store/2, update_store/2
472            and of make_init_store_goal/make_get_store_goal/make_update_store_goal
473            removed prolog_flag/3 (seemed  nowhere used)
474         chr_translate_bootstrap2.chr
475            make_init_store_goal/make_get_store_goal/make_update_store_goal introduced
476            verbosity_on/0 for porting
477         chr_translate_bootstrap.pl
478            atom_concat -> atomic_concat
479            verbosity_on/0 for porting
480            conditional import van library(terms)
481         chr_translate.chr
482            make_init_store_goal etc. introduced
483         create_get_mutable_ref wherever needed (chr_translate*)
486 Nov 30, 2005
487   * BD: chr_runtime.pl:
488            chr_init for SICStus
489            included contents of chr_debug.pl
490            removed show_store/1
491            create_mutable changed into 'chr create_mutable'
492            got rid of explicit inlining and did it by goal expansion
493            inlining also of 'chr default_store'
494   * BD: chr_swi.pl:
495            removed :- use_module(chr(chr_debug))
496            module header: version for SICStus
497   * BD: chr_debug.pl: emptied
498   * BD: chr_translate.chr:
499            system specific declarations factored out in insert_declarations
500            changed two atom_concat/3 into atomic_concat/3 (because arg 2 was sometimes an int)
501   * BD: chr_compiler_utility.pl:
502            put atomic_concat/3 there 
503            adapted atom_concat_list/2 to use it
504   * BD: chr_swi_bootstrap.pl:
505            introduced chr_swi_bootstrap/2 for ease of porting
506            exported also chr_compile/3
507            porting code for get_time stuff/read_term/absolute_file_name
508   * BD: builtins.pl, a_star.pl, clean_code.pl:
509            some ifdefs
512 Nov 29, 2005
513   * BD: hprolog.pl: removed strip_attributes/2 and restore_attributes/2
515 Nov 29, 2005
516   * BD: chr_swi.pl: Removed code that took Handler for Module (in chr_expand(end_of_file)
517                     Added :- chr_option(_,_) with same meaning as option(_,_)
518                     is_chr_file: .chr is no longer a recognised suffix
519                     added use_module(library(lists))
520                     changed calls to source_location/2 into prolog_load_context/2
521   * BD: chr_translate.chr: chr_translate/2: added end_of_file to translated program
522                            adapted SICStus compatibility message
523                            made :- chr_option(_,_) available
524                            changed precedence of + - ? to 980 (these ops are
525                                      probably not local enough to the module)
527 Nov 21, 2005
529   * TS: Further synchronization with hProlog.
531 Nov 18, 2005
533   * TS: Removed dead code in guard_entailment.chr
534   * TS: Fixed performance bug: now lookup is indexed
535         on maximal number of arguments.
536   * TS: Removed some redundant intermediate predicates
537         in chr_runtime.pl.
538   * TS: It is now possible to disable the printing
539         of the CHR constraint store per module,
540         through the option toplevel_show_store on/off
541   * TS: Synchronized with hProlog
542   * TS: bug fix in functional dependency analysis
544 Nov 17, 2005
546   * TS: Removed two dead predicates in chr_translate.chr
547         and hooked up the late_storage_analysis
548         that was being bypassed.
549   * TS: Renamed global_term_ref_1 to default_store.
550   * TS: Removed redundant predicate values_ht.
551   * TS: Compiler no longer generates dead code for never stored constraints,
552         i.e. attach/detach predicates.
553         This reduces the generated .pl by about 700 lines.
555 Nov 10, 2005
557   * TS: Two more bug fixes for constraints without
558         active occurrences that trigger.
560 Nov 4, 2005
562   * TS: Small optimization of code for constraints
563         without any active occurrence.
564   * TS: Fixed bug caused by previous bug fix:
565         added only_ground_indexed_arguments/1 test
566         to separate out that meaning from may_trigger/1.
568 Nov 3, 2005
570   * TS: Removed strip_attributes code.
571   * TS: Fixed bug that causes new constraints to be added on triggering.
573 Oct 25, 2005
575   * TS: Two minor bug fixes.
577 Oct 19, 2005
579   * TS: Fixed bug due to overly aggressive inlining of get_mutable_value.
581 Oct 18, 2005
583   * JS: Compiled code is broken, if debug is off and optimize too.
584         Debug off now entails optimize on.
586   * TS: Some fixes of the documentation. Thanks to Bart Demoen
587         and Thom Fruehwirth. 
589 Sep 2, 2005
591   * TS: Synchronized with hProlog.
593 Aug 31, 2005
595   * TS: Added missing operator declarations for prefix (?).
597 Aug 9, 2005
599   * JW: import lists into chr_compiler_utility.pl
601   * JW: make message hook for query(yes) detect CHR global variables.
603   * JW: Exported pairlist_delete_eq/3 from pairlist and use this in
604     chr_hashtable_store.pl
606 Aug 4, 2005
608   * TS: Renamed pairlist:delete/3 to pairlist:pairlist_delete/3.
609         Mike Elston.
610 Aug 1, 2005
612   * TS: Extended more efficient ground matching code to
613         removed simpagation occurrence code.
615 Jul 28, 2005
617   * TS: New input verification: duplicate constraint declaration
618         now reported as an error. Requested by Mike Elston.
619   * TS: More efficient matching code for ground constraints
620         when matching an argument of a partner constraint with
621         a ground term
622   * JS: Bug fix in guard simplification.
624 Jul 3, 2005
626   * TS: Factored out option functionality into separate module.
627   * TS: Factored out utility code into separate module.
629 Jun 29, 2005
631   * TS: Changed chr_show_store/1 to use print/1 instead of write/1.
633 Jun 28, 2005
635   * TS: Removed spurious and conflicting operator definitions
636         for +, - and ? as mode declarations.
638 Jun 27, 2005
640   * TS: Added find_chr_constraint/1 functionality.
642 Jun 8, 2005
644   * TS: Improved compiler scalability: use nb_setval/2 to
645         remember compiled code through backtracking over
646         compilation process instead of assert/1.
647   * TS: Removed spurious comma from file.
649 Jun 1, 2005
651   * TS: Added option to disable toplevel constraint store printing.
652   * TS: Slightly improved hash table constraint store implementation.
654 Apr 16, 2005
656   * JW: Added patch from Jon Sneyers.
658 Mar 11, 2005
660   * TS: Improved head reordering heuristic.
661   * TS: Added support primitive for alternate built-in solver dependency.
663 Mar 4, 2005
665   * TS: Fixed bug that causes wrong output in chr_show_store.
667 Feb 25, 2005
669   * TS: Fixed several bugs in generation of debugable code.
671 Feb 19, 2005
673   * JW: Cleanup integration in SWI-Prolog environment:
674         - Extended SWI-Prolog library ordsets.  Renamed ord_delete/3 to
675           ord_del_element/3 and ord_difference/3 to ord_subtract/3 for
676           better compatibility.
677         - Renamed module find to chr_find to avoid name conflict and declared
678           preds as meta-predicate.
679         - Re-inserted and exported strip_attributes/2 and
680           restore_attributes/2 in hprolog.pl. Deleted hprolog: from
681           chr_translate.chr.
682         - Added dummy option declarations to bootstrap compiler.
683         - Fixed path problems in makefile (-p chr=.) and install new
684           components.
685         - Fixed typo 'chr show_store' --> chr_show_store.
687 Feb 17, 2005
689   * JS: Added guard entailment optimizations and
690         new syntax for type and mode declarations.
692 Dec 15, 2004
694   * TS: Use prolog:message/3 hook to automatically print
695         contents of CHR constraint stores with query bindings
696         on toplevel.
698 Dec  3, 2004
700   * TS: Bugfix in code generation. Reported by Lyosha Ilyukhin.
702 Jul 28, 2004
704   * TS: Updated hashtable stores. They now start small and expand.
706 Jul 19, 2004
708   * JW: Removed chr_pp: module prefixes
709   * JW: Updated Windows makefile.mak (more similar organisation, added check)
711 Jul 17, 2004
713   * TS: Added chr_hashtable_store library.
714   * TS: Added find library.
715   * TS: Added builtins library.
716   * TS: Added clean_code library.
717   * TS: Added binomial_heap library.
718   * TS: Added a_star library.
719   * TS: Added new intermediate bootstrapping step
720   * TS: Synchronized CHR compiler with most recent development version
722   Summary of changes:
724    "The new version of the compiler contains several new optimizations, both
725     fully automatic, such as the antimonotny-based delay avoidance (see
726     http://www.cs.kuleuven.be/publicaties/rapporten/cw/CW385.abs.html for
727     the technical report), and enabled by mode declarations (see CHR
728     documentation), such as hashtable-based constraint indexes."
730 Apr 9, 2004
732   * JW: Added chr_messages.pl.  Make all debug messages use the print_message/2
733     interface to enable future embedding.
735 Apr 7, 2004
737   * JW: Added chr:debug_interact/3 hook.  Defined in chr_swi.pl to void
738     showing constraints first as goal and then as CHR call.
739   * JW: Added chr:debug_event/2 hook.  Defined in chr_swi.pl to make the
740     CHR debugger honour a skip command from the Prolog tracer.
742 Apr 6, 2004
744   * JW: Added b (break) to the CHR debugger.
745   * TS: added chr_expandable/2 clause for pragma/2
747 Apr 5, 2004
749   * JW: fixed reference to format_rule/2.
750   * JW: Use select/3 rather than delete/3 in diff/2 in Tests/zebra.pl
751   * TS: CHR translation now leaves CHR store empty
753 Apr 4, 2004
755   * JW: added :- use_module(library(chr)) to all examples.
756   * JW: mapped -O --> option(optimize, full).
757   * JW: introduced file-search-path `chr' for clarity and to enable running
758     make check from the local environment instead of the public installation.
759   * JW: mapped prolog flag generate_debug_info --> option(debug, on)
760   * JW: Replaced the chr -> pl step with term_expansion/2.
761   * JW: Moved insert_declarations/2 to chr_swi.pl
763 Apr 2, 2004
765   * JW: fixed Undefined procedure: chr_runtime:run_suspensions_loop_d/1
766   * TS: Added <space> for creep and shortened debug line prefix to CHR:
768 Mar 29, 2004
770   * JW: Use \+ \+ in chr_compile/3 to undo changes to the constraint
771     pool.  Regression test suite using "make check" works again.
773 Mar 25, 2004
775   * TS: Added skip and ancestor debug commands
777 Mar 24, 2004
779   * TS: Added bootstrapping process for CHR compiler using CHR.
780   * TS: CHR compiler now uses CHR.
781   * TS: Fixed bug in compilation of multi-headed simpagation rules.
782   * TS: Cleaned up compiler.
783   * TS: Added analysis + optimization for never attached constraints.
784   * TS: Exploit uniqueness (functional dependency) results to detect
785     set semantics type simpagation rules where one rule can be passive
786   * TS: Compiler generates 'chr debug_event'/1 calls
787   * TS: Rudimentary support for debugging.
788     option(debug,on) causes a trace of CHR events to be printed
790 Mar 15, 2004
792   * JW: Fix operator handling.
794 Mar 3, 2004
796   * JW: Integrated new version from Tom Schrijvers.