comments
[chr.git] / ChangeLog
blob51dd9b4886a2d7ee36a5792c9709fe573203bf5a
1 Jan 9, 2008
3   * TS: Bug fix: atomic_constants store was causing compiler
4         to loop.
5   * TS: Clean-up and avoid adding additional global_ground store
6         if atomic_constants store covers all cases.
7   * TS: Clean-up and bug fix.
9 Jan 8, 2008
11   * TS: Performance improvement: use new store
12         implementation for multi-argument lookups
13         on manifest ground terms. Should be faster than 
14         hashtable.
16 Jan 4, 2008
18   * TS: Performance improvement: use new store
19         implementation for single-argument lookups
20         on manifest atomics. Should be faster than
21         hashtable. Will be generalized to arbitrary
22         manifest ground lookups and non-manifest
23         atomically typed lookups .
24         
25 Jan 3, 2008
27   * TS: Modified error messages of declare_stored_constraints
28         option, to distinguish between stored, temporarily stored
29         and never stored.
30   * TS: write/1, writeln/1 and format/2 are now treated as non-binding
31         builtins.
32   * TS: Properly inline inthash constraint lookup.
34 Dec 31, 2007
36   * TS: Additional assertion # default(Goal) for the
37         declare_stored_constraints, which specifies that
38         an unconditional simplification rule for the constraint
39         must be added to the end of the program. The Goal
40         parameter specifies the goal of that rule, e.g.
41         true or fail or throw(...). Experimental.
43 Dec 29, 2007
45   * TS: Experimental option declare_stored_constraints for
46         telling the compiler to warn for stored constraints
47         that are not asserted to be stored. Use the
48                 :- chr_constraint f(...) # stored.
49         notation for asserting that a constraint is expected to
50         be stored.
52 Dec 27, 2007
54   * TS: Inline constraint lookup.
56   * TS: Precompile term hashing.
58 Sep 26, 2007
60   * TS: Code cleaning was hampered by line numbers.
61         Reported by Mike Elston.
63 May 2, 2007
65   * PVW: Bug fix in observation analysis.
66   * PVW: Consistency checks of experimental history pragma.
68 Apr 5, 2007
70   * TS: Lessened worst bottlenecks in CHR compiler,
71         in the guard simplification phase.
73 Mar 26, 2007
75   * TS: Experimental dynattr option, for dynamic size attribute terms.
77 Mar 16, 2007
79   * TS: Extended observation analysis (abstract interpretation)
80         to deal with disjunctions. With Paolo Tacchella.
82 Mar 14, 2007
84   * TS: Renamed hprolog:substitute/4 to substitute_eq/4, because of
85         name conflict with library(edit).
87 Mar 12, 2007
89   * TS: Use line numbers in error and warning messages.
91 Mar 8, 2007
93   * TS: Added maintenance of line numbers through CHR compilation
94         as an option: chr_option(line_numbers,on).
96 Mar 5, 2007
98   * TS: Bug fix: setarg/3 instantiation error reported by Mike Elston.
99         Caused by missing suspension argument in debug off, optimize off
100         mode.
102 Feb 22, 2007
104  * LDK: O(1) removal from hashtables, with experimental
105         chr_option(ht_removal,on).
107 Jan 25, 2007
109  * PVW: Bugfixes for optional use of CHR constraints in rule guards.
111 Jan 18, 2007
113   * PVW: Optional use of CHR constraints in rule guards.
115 Nov 20, 2006
117   * TS: Bug fix in compiler_errors.pl.
119 Oct 25, 2006
121   * TS: Bug fix in occurrence subsumption by Jon Sneyers.
123 Oct 18, 2006
125   * TS: New preprocessor feature.
127   * TS: Parametrization of experimental chr_identifier type.
129 Oct 16, 2006
131   * TS: More inlining.
133   * TS: Stronger static type checking.
135   * TS: Omitted buggy FD analysis from bootstrapping process.
137 Oct 12, 2006
139   * TS: More inlining.
141   * TS: Experimental chr_identifier type.
143 Oct 10, 2006
145   * TS: Allow for empty type definitions aka phantom types. These are 
146         useful for some type-level tricks. A warning is issued so the 
147         user can check whether a phantom type is intended. No other
148         phantom type-specific checks are in place yet.
150   * TS: Fixed static type checking of built-in types.
152 Oct 9, 2006
154   * TS: The dense_int type can now appear on the rhs of type alias
155         definitions.
157 Oct 3, 2006
159   * TS: Fixed bug concerning matchings between ground and possibly
160         non-ground arguments.   
162 Oct 2, 2006
164   * TS: Fixed a bug in code generation, overeager removal of a clause.
166 Sep 28, 2006
168   * TS: Refactored some code.
170 Sep 22, 2006
172   * TS: Add exception handler to initialize chr_leash in new threads.
173   
174 Sep 18. 2006
176   * TS: Bug fix for programs in debugging mode.
178 Aug 30, 2006
180   * JW: Fixed make clean
181   * JW: Enlarged stacks to make build succeed
183 Aug 24, 2006
185   * JW: Add target ln-install
187 Aug 21, 2006
189   * TS: Fixed wrong arities in not inlined predicates. Mike Elston.
191 Aug 18, 2006
193   * TS: Code clean-up, more inlining, only generate used imports.
195 Aug 17, 2006
197   * TS: Inlining and more specialization of auxiliary predicates.
199 Aug 10, 2006
201   * TS: Fixed bug for constraints without rules in debug mode.
203   * TS: Compiler clean-up
205   * TS: Experimental var_assoc_store.
208 Aug 9, 2006
210   * TS: Various minor code generation improvements, including smaller
211         suspension terms.
213 Aug 8, 2006
215   * TS: Absolutely no lock checking when check_guard_bindings is disabled.
217 Aug 4, 2006
219   * TS: Minor optimizations for (-) arguments.
221   * TS: Important optimization for awakening fewer suspended constraints
223 Aug 3, 2006
225   * TS: Fixed typo in static type checker.
227   * TS: Documented static and dynamic type checking.
229 Aug 2, 2006
231   * TS: Fixed bug (type alias related) in static type checker. Mike Elston.
233   * TS: Added static type checking on variable matching in rule heads.
235   * TS: Added static type checking on CHR constraints in rule bodies.
237 Aug 1, 2006
239   * TS: New (limited) compile time type checking of rule heads.
241 Jul 28, 2006
243   * TS: New experimental robustness feature in debug mode:
244         runtime type checking of CHR constraints.
246 Jul 5, 2006
248   * TS: Minor bug fixes.
250 Jun 22, 2006
252   * TS: Improved performance of ai_observation_analysis,
253         mainly via additional tabling and passive declarations.
255 Jun 8, 2006
257   * TS: Disabled some code only intended for SICStus.
259   * TS: Fixed bug in removal of constraints. Spotted by Leslie De Koninck.
261 Jun 7, 2006
263   * TS: Next fix to tracer. Cconstraints in propagation
264         rules are shown in textual order.
266 Jun 2, 2006
268   * TS: Next few fixes to tracer. Constraints in simpagation rules
269         are now shown on the right side of the backslash.
271 Jun 1, 2006
273   * TS: Synchronization with SICStus version of K.U.Leuven CHR.
275   * TS: First few fixes to tracer. Cconstraints in simplification
276         rules are shown in textual order. Constraint insertions
277         are always shown.
279 May 17, 2006
281   * TS: Termination bug fixed in guard_entailment.
283   * TS:  Runtime library predicate run_suspensions is now specialized
284         per constraint, avoiding requirement of fixed suspension layout.
286   * TS: Further update to suspension term layout. Only constraints for
287         which the propagation history is used get a history field.
289 May 9, 2006
291   * TS: Ignore propagation rules with trivial body 'true'.
293 Apr 24, 2006
295   * TS: Guard entailment now first simplifies the formula it processes,
296         in order to reduce the number of disjunctions, to obtain a smaller
297         search tree.
299 Apr 22, 2006
301   * TS: Bug fix by Jon Sneyers:  type aliases now support built-in types.
302         Spotted by Mike Elston.
304   * TS: Small refactorings based on Ciao port experience.
306   * TS: Removed -singleton stylecheck option now that portray_clause
307         prints singleton variables as _.
309 Apr 19, 2006
311  * JW: Make library(chr) load its private stuff silent.
313 Apr 14, 2006
315  * TS: Bug fix: too many guards were locked.
317 Apr 11, 2006
319   * TS: Most runtime library predicates are now specialized
320         per constraint, avoiding generic =.. and lists code.
322         Mayor update to suspension term layout. Layout may now
323         differ from one constraint to the other. Some unused suspension
324         fields (continuation goal and generation number) are omitted.
325         Further analysis can remove more fields.
327         Default store constraints now each have
328         their own global variable: a list of all the suspensions.
329         Removal from this list is now O(1) thanks to setarg/1 and
330         back pointers in the suspension terms. This can cause time
331         time complexity improvements in solvers that always have 
332         variable indexing on their constraints.
334         Ground, non-indexed constraints are now removed from
335         their global list store in O(1), as for the default store.
337         Minor bug fixes in a number of places.
339 Mar 16, 2006
341   * TS: Fixed subtle bug in ai_observation analysis,
342         that caused goal sequences to only generate
343         the optimistic default answer pattern, leading
344         to invalid 'not observed' conclusions.
345   * TS: Variable indexing/suspension analysis now ignores functor/3
346         in guards. Could be extended to other built-ins
347         that cause an error when arguments are not
348         properly instantiated.
350 Mar 11, 2006
351   
352   * TS: Renamed global variable id to chr_id in chr_runtime.pl.
354 Mar 9, 2006
355   * JS: Synchronization with experimental version:
356         - minor optimizations, e.g. efficient lookups with statically known
357           instantiated data 
358         - new alternative syntax for passive declarations
359         - new dense_int built-in type + underlying store
360         - new type alias definitions, like in Mercury
362 Mar 4, 2006
363   * BD: small changes in chr_compiler_options.pl and chr_translate.chr
364         affecting only the SICStus port
366 Mar 3, 2006
367   * BD: lots of changes related to porting to SICStus
368   * TS: Now exception/3 hook is only used in SWI-Prolog
370 Mar 2, 2006
372   * TS: Use exception/3 hook to catch undefined 
373         global variables of chr_runtime.pl and CHR modules,
374         for multi-threaded programs and saved states.
376 Feb 9, 2006
378   * JW: Fix "make check" path issues.
379   * TS: Removed all is_chr_file tests when loading file.
381 Feb 8, 2006
383   * BD: chr_swi.pl: option(optimize --> :- chr_option(optimize
384   * TS: Removed obsolete experimental optimization option.
385   * TS: Correctly report variable pragmas!
386   * TS: No constraints declared is no longer a special case.
388 Jan 19, 2006
390   * BD: chr_swi.pl - use_module(hprolog added for SICStus port
391   * TS: Removed operator declaration for '::'. No longer used.
393 Dec 23, 2005
395   * TS: Removed chr_constraints declaration again, in favor
396         of only the chr_constraint declaration and modified
397         documentation accordingly.
398   * TS: Modified documentation based on recommendations of Bart Demoen.
399   * TS: Added chr_info/3 predicate to chr_compiler_errors, as suggested by
400         Jon Sneyers. Now print banner on calling compiler.
402 Dec 13, 2005
404   * TS: warnings are now written to user_error stream.
406 Dec 12, 2005
408   * TS: option and constraints declarations are now deprecated. They
409         are replaced by chr_option and chr_constraint(s).
410   * TR: Made an interface for warnings and errors. Errors now implemented
411         with exceptions.
412   * TR: Revised documentation.
414 Dec 2, 2005
415   * BD: chr_translate.chr, chr_translate_bootstrap2.chr
416            mutables "abstracted"
417   * BD: chr_translate_bootstrap1.chr
418            atomic_concat - some duplicate code of it is in more than one file :-(
419            create_get_mutable definitions if-deffed
420            verbosity_on/0 for porting
421         hprolog.pl
422            definitions of init_store/2, get_store/2, update_store/2
423            and of make_init_store_goal/make_get_store_goal/make_update_store_goal
424            removed prolog_flag/3 (seemed  nowhere used)
425         chr_translate_bootstrap2.chr
426            make_init_store_goal/make_get_store_goal/make_update_store_goal introduced
427            verbosity_on/0 for porting
428         chr_translate_bootstrap.pl
429            atom_concat -> atomic_concat
430            verbosity_on/0 for porting
431            conditional import van library(terms)
432         chr_translate.chr
433            make_init_store_goal etc. introduced
434         create_get_mutable_ref wherever needed (chr_translate*)
437 Nov 30, 2005
438   * BD: chr_runtime.pl:
439            chr_init for SICStus
440            included contents of chr_debug.pl
441            removed show_store/1
442            create_mutable changed into 'chr create_mutable'
443            got rid of explicit inlining and did it by goal expansion
444            inlining also of 'chr default_store'
445   * BD: chr_swi.pl:
446            removed :- use_module(chr(chr_debug))
447            module header: version for SICStus
448   * BD: chr_debug.pl: emptied
449   * BD: chr_translate.chr:
450            system specific declarations factored out in insert_declarations
451            changed two atom_concat/3 into atomic_concat/3 (because arg 2 was sometimes an int)
452   * BD: chr_compiler_utility.pl:
453            put atomic_concat/3 there 
454            adapted atom_concat_list/2 to use it
455   * BD: chr_swi_bootstrap.pl:
456            introduced chr_swi_bootstrap/2 for ease of porting
457            exported also chr_compile/3
458            porting code for get_time stuff/read_term/absolute_file_name
459   * BD: builtins.pl, a_star.pl, clean_code.pl:
460            some ifdefs
463 Nov 29, 2005
464   * BD: hprolog.pl: removed strip_attributes/2 and restore_attributes/2
466 Nov 29, 2005
467   * BD: chr_swi.pl: Removed code that took Handler for Module (in chr_expand(end_of_file)
468                     Added :- chr_option(_,_) with same meaning as option(_,_)
469                     is_chr_file: .chr is no longer a recognised suffix
470                     added use_module(library(lists))
471                     changed calls to source_location/2 into prolog_load_context/2
472   * BD: chr_translate.chr: chr_translate/2: added end_of_file to translated program
473                            adapted SICStus compatibility message
474                            made :- chr_option(_,_) available
475                            changed precedence of + - ? to 980 (these ops are
476                                      probably not local enough to the module)
478 Nov 21, 2005
480   * TS: Further synchronization with hProlog.
482 Nov 18, 2005
484   * TS: Removed dead code in guard_entailment.chr
485   * TS: Fixed performance bug: now lookup is indexed
486         on maximal number of arguments.
487   * TS: Removed some redundant intermediate predicates
488         in chr_runtime.pl.
489   * TS: It is now possible to disable the printing
490         of the CHR constraint store per module,
491         through the option toplevel_show_store on/off
492   * TS: Synchronized with hProlog
493   * TS: bug fix in functional dependency analysis
495 Nov 17, 2005
497   * TS: Removed two dead predicates in chr_translate.chr
498         and hooked up the late_storage_analysis
499         that was being bypassed.
500   * TS: Renamed global_term_ref_1 to default_store.
501   * TS: Removed redundant predicate values_ht.
502   * TS: Compiler no longer generates dead code for never stored constraints,
503         i.e. attach/detach predicates.
504         This reduces the generated .pl by about 700 lines.
506 Nov 10, 2005
508   * TS: Two more bug fixes for constraints without
509         active occurrences that trigger.
511 Nov 4, 2005
513   * TS: Small optimization of code for constraints
514         without any active occurrence.
515   * TS: Fixed bug caused by previous bug fix:
516         added only_ground_indexed_arguments/1 test
517         to separate out that meaning from may_trigger/1.
519 Nov 3, 2005
521   * TS: Removed strip_attributes code.
522   * TS: Fixed bug that causes new constraints to be added on triggering.
524 Oct 25, 2005
526   * TS: Two minor bug fixes.
528 Oct 19, 2005
530   * TS: Fixed bug due to overly aggressive inlining of get_mutable_value.
532 Oct 18, 2005
534   * JS: Compiled code is broken, if debug is off and optimize too.
535         Debug off now entails optimize on.
537   * TS: Some fixes of the documentation. Thanks to Bart Demoen
538         and Thom Fruehwirth. 
540 Sep 2, 2005
542   * TS: Synchronized with hProlog.
544 Aug 31, 2005
546   * TS: Added missing operator declarations for prefix (?).
548 Aug 9, 2005
550   * JW: import lists into chr_compiler_utility.pl
552   * JW: make message hook for query(yes) detect CHR global variables.
554   * JW: Exported pairlist_delete_eq/3 from pairlist and use this in
555     chr_hashtable_store.pl
557 Aug 4, 2005
559   * TS: Renamed pairlist:delete/3 to pairlist:pairlist_delete/3.
560         Mike Elston.
561 Aug 1, 2005
563   * TS: Extended more efficient ground matching code to
564         removed simpagation occurrence code.
566 Jul 28, 2005
568   * TS: New input verification: duplicate constraint declaration
569         now reported as an error. Requested by Mike Elston.
570   * TS: More efficient matching code for ground constraints
571         when matching an argument of a partner constraint with
572         a ground term
573   * JS: Bug fix in guard simplification.
575 Jul 3, 2005
577   * TS: Factored out option functionality into separate module.
578   * TS: Factored out utility code into separate module.
580 Jun 29, 2005
582   * TS: Changed chr_show_store/1 to use print/1 instead of write/1.
584 Jun 28, 2005
586   * TS: Removed spurious and conflicting operator definitions
587         for +, - and ? as mode declarations.
589 Jun 27, 2005
591   * TS: Added find_chr_constraint/1 functionality.
593 Jun 8, 2005
595   * TS: Improved compiler scalability: use nb_setval/2 to
596         remember compiled code through backtracking over
597         compilation process instead of assert/1.
598   * TS: Removed spurious comma from file.
600 Jun 1, 2005
602   * TS: Added option to disable toplevel constraint store printing.
603   * TS: Slightly improved hash table constraint store implementation.
605 Apr 16, 2005
607   * JW: Added patch from Jon Sneyers.
609 Mar 11, 2005
611   * TS: Improved head reordering heuristic.
612   * TS: Added support primitive for alternate built-in solver dependency.
614 Mar 4, 2005
616   * TS: Fixed bug that causes wrong output in chr_show_store.
618 Feb 25, 2005
620   * TS: Fixed several bugs in generation of debugable code.
622 Feb 19, 2005
624   * JW: Cleanup integration in SWI-Prolog environment:
625         - Extended SWI-Prolog library ordsets.  Renamed ord_delete/3 to
626           ord_del_element/3 and ord_difference/3 to ord_subtract/3 for
627           better compatibility.
628         - Renamed module find to chr_find to avoid name conflict and declared
629           preds as meta-predicate.
630         - Re-inserted and exported strip_attributes/2 and
631           restore_attributes/2 in hprolog.pl. Deleted hprolog: from
632           chr_translate.chr.
633         - Added dummy option declarations to bootstrap compiler.
634         - Fixed path problems in makefile (-p chr=.) and install new
635           components.
636         - Fixed typo 'chr show_store' --> chr_show_store.
638 Feb 17, 2005
640   * JS: Added guard entailment optimizations and
641         new syntax for type and mode declarations.
643 Dec 15, 2004
645   * TS: Use prolog:message/3 hook to automatically print
646         contents of CHR constraint stores with query bindings
647         on toplevel.
649 Dec  3, 2004
651   * TS: Bugfix in code generation. Reported by Lyosha Ilyukhin.
653 Jul 28, 2004
655   * TS: Updated hashtable stores. They now start small and expand.
657 Jul 19, 2004
659   * JW: Removed chr_pp: module prefixes
660   * JW: Updated Windows makefile.mak (more similar organisation, added check)
662 Jul 17, 2004
664   * TS: Added chr_hashtable_store library.
665   * TS: Added find library.
666   * TS: Added builtins library.
667   * TS: Added clean_code library.
668   * TS: Added binomial_heap library.
669   * TS: Added a_star library.
670   * TS: Added new intermediate bootstrapping step
671   * TS: Synchronized CHR compiler with most recent development version
673   Summary of changes:
675    "The new version of the compiler contains several new optimizations, both
676     fully automatic, such as the antimonotny-based delay avoidance (see
677     http://www.cs.kuleuven.be/publicaties/rapporten/cw/CW385.abs.html for
678     the technical report), and enabled by mode declarations (see CHR
679     documentation), such as hashtable-based constraint indexes."
681 Apr 9, 2004
683   * JW: Added chr_messages.pl.  Make all debug messages use the print_message/2
684     interface to enable future embedding.
686 Apr 7, 2004
688   * JW: Added chr:debug_interact/3 hook.  Defined in chr_swi.pl to void
689     showing constraints first as goal and then as CHR call.
690   * JW: Added chr:debug_event/2 hook.  Defined in chr_swi.pl to make the
691     CHR debugger honour a skip command from the Prolog tracer.
693 Apr 6, 2004
695   * JW: Added b (break) to the CHR debugger.
696   * TS: added chr_expandable/2 clause for pragma/2
698 Apr 5, 2004
700   * JW: fixed reference to format_rule/2.
701   * JW: Use select/3 rather than delete/3 in diff/2 in Tests/zebra.pl
702   * TS: CHR translation now leaves CHR store empty
704 Apr 4, 2004
706   * JW: added :- use_module(library(chr)) to all examples.
707   * JW: mapped -O --> option(optimize, full).
708   * JW: introduced file-search-path `chr' for clarity and to enable running
709     make check from the local environment instead of the public installation.
710   * JW: mapped prolog flag generate_debug_info --> option(debug, on)
711   * JW: Replaced the chr -> pl step with term_expansion/2.
712   * JW: Moved insert_declarations/2 to chr_swi.pl
714 Apr 2, 2004
716   * JW: fixed Undefined procedure: chr_runtime:run_suspensions_loop_d/1
717   * TS: Added <space> for creep and shortened debug line prefix to CHR:
719 Mar 29, 2004
721   * JW: Use \+ \+ in chr_compile/3 to undo changes to the constraint
722     pool.  Regression test suite using "make check" works again.
724 Mar 25, 2004
726   * TS: Added skip and ancestor debug commands
728 Mar 24, 2004
730   * TS: Added bootstrapping process for CHR compiler using CHR.
731   * TS: CHR compiler now uses CHR.
732   * TS: Fixed bug in compilation of multi-headed simpagation rules.
733   * TS: Cleaned up compiler.
734   * TS: Added analysis + optimization for never attached constraints.
735   * TS: Exploit uniqueness (functional dependency) results to detect
736     set semantics type simpagation rules where one rule can be passive
737   * TS: Compiler generates 'chr debug_event'/1 calls
738   * TS: Rudimentary support for debugging.
739     option(debug,on) causes a trace of CHR events to be printed
741 Mar 15, 2004
743   * JW: Fix operator handling.
745 Mar 3, 2004
747   * JW: Integrated new version from Tom Schrijvers.