* Renamed --> ChangeLog for consistency
[chr.git] / ChangeLog
blob523c9bf1d273531f6eb7dfd1a25e836d9c5cef91
1 Apr 5, 2007
3   * TS: Lessened worst bottlenecks in CHR compiler,
4         in the guard simplification phase.
6 Mar 26, 2007
8   * TS: Experimental dynattr option, for dynamic size attribute terms.
10 Mar 16, 2007
12   * TS: Extended observation analysis (abstract interpretation)
13         to deal with disjunctions. With Paolo Tacchella.
15 Mar 14, 2007
17   * TS: Renamed hprolog:substitute/4 to substitute_eq/4, because of
18         name conflict with library(edit).
20 Mar 12, 2007
22   * TS: Use line numbers in error and warning messages.
24 Mar 8, 2007
26   * TS: Added maintenance of line numbers through CHR compilation
27         as an option: chr_option(line_numbers,on).
29 Mar 5, 2007
31   * TS: Bug fix: setarg/3 instantiation error reported by Mike Elston.
32         Caused by missing suspension argument in debug off, optimize off
33         mode.
35 Feb 22, 2007
37  * LDK: O(1) removal from hashtables, with experimental
38         chr_option(ht_removal,on).
40 Jan 25, 2007
42  * PVW: Bugfixes for optional use of CHR constraints in rule guards.
44 Jan 18, 2007
46   * PVW: Optional use of CHR constraints in rule guards.
48 Nov 20, 2006
50   * TS: Bug fix in compiler_errors.pl.
52 Oct 25, 2006
54   * TS: Bug fix in occurrence subsumption by Jon Sneyers.
56 Oct 18, 2006
58   * TS: New preprocessor feature.
60   * TS: Parametrization of experimental chr_identifier type.
62 Oct 16, 2006
64   * TS: More inlining.
66   * TS: Stronger static type checking.
68   * TS: Omitted buggy FD analysis from bootstrapping process.
70 Oct 12, 2006
72   * TS: More inlining.
74   * TS: Experimental chr_identifier type.
76 Oct 10, 2006
78   * TS: Allow for empty type definitions aka phantom types. These are 
79         useful for some type-level tricks. A warning is issued so the 
80         user can check whether a phantom type is intended. No other
81         phantom type-specific checks are in place yet.
83   * TS: Fixed static type checking of built-in types.
85 Oct 9, 2006
87   * TS: The dense_int type can now appear on the rhs of type alias
88         definitions.
90 Oct 3, 2006
92   * TS: Fixed bug concerning matchings between ground and possibly
93         non-ground arguments.   
95 Oct 2, 2006
97   * TS: Fixed a bug in code generation, overeager removal of a clause.
99 Sep 28, 2006
101   * TS: Refactored some code.
103 Sep 22, 2006
105   * TS: Add exception handler to initialize chr_leash in new threads.
106   
107 Sep 18. 2006
109   * TS: Bug fix for programs in debugging mode.
111 Aug 30, 2006
113   * JW: Fixed make clean
114   * JW: Enlarged stacks to make build succeed
116 Aug 24, 2006
118   * JW: Add target ln-install
120 Aug 21, 2006
122   * TS: Fixed wrong arities in not inlined predicates. Mike Elston.
124 Aug 18, 2006
126   * TS: Code clean-up, more inlining, only generate used imports.
128 Aug 17, 2006
130   * TS: Inlining and more specialization of auxiliary predicates.
132 Aug 10, 2006
134   * TS: Fixed bug for constraints without rules in debug mode.
136   * TS: Compiler clean-up
138   * TS: Experimental var_assoc_store.
141 Aug 9, 2006
143   * TS: Various minor code generation improvements, including smaller
144         suspension terms.
146 Aug 8, 2006
148   * TS: Absolutely no lock checking when check_guard_bindings is disabled.
150 Aug 4, 2006
152   * TS: Minor optimizations for (-) arguments.
154   * TS: Important optimization for awakening fewer suspended constraints
156 Aug 3, 2006
158   * TS: Fixed typo in static type checker.
160   * TS: Documented static and dynamic type checking.
162 Aug 2, 2006
164   * TS: Fixed bug (type alias related) in static type checker. Mike Elston.
166   * TS: Added static type checking on variable matching in rule heads.
168   * TS: Added static type checking on CHR constraints in rule bodies.
170 Aug 1, 2006
172   * TS: New (limited) compile time type checking of rule heads.
174 Jul 28, 2006
176   * TS: New experimental robustness feature in debug mode:
177         runtime type checking of CHR constraints.
179 Jul 5, 2006
181   * TS: Minor bug fixes.
183 Jun 22, 2006
185   * TS: Improved performance of ai_observation_analysis,
186         mainly via additional tabling and passive declarations.
188 Jun 8, 2006
190   * TS: Disabled some code only intended for SICStus.
192   * TS: Fixed bug in removal of constraints. Spotted by Leslie De Koninck.
194 Jun 7, 2006
196   * TS: Next fix to tracer. Cconstraints in propagation
197         rules are shown in textual order.
199 Jun 2, 2006
201   * TS: Next few fixes to tracer. Constraints in simpagation rules
202         are now shown on the right side of the backslash.
204 Jun 1, 2006
206   * TS: Synchronization with SICStus version of K.U.Leuven CHR.
208   * TS: First few fixes to tracer. Cconstraints in simplification
209         rules are shown in textual order. Constraint insertions
210         are always shown.
212 May 17, 2006
214   * TS: Termination bug fixed in guard_entailment.
216   * TS:  Runtime library predicate run_suspensions is now specialized
217         per constraint, avoiding requirement of fixed suspension layout.
219   * TS: Further update to suspension term layout. Only constraints for
220         which the propagation history is used get a history field.
222 May 9, 2006
224   * TS: Ignore propagation rules with trivial body 'true'.
226 Apr 24, 2006
228   * TS: Guard entailment now first simplifies the formula it processes,
229         in order to reduce the number of disjunctions, to obtain a smaller
230         search tree.
232 Apr 22, 2006
234   * TS: Bug fix by Jon Sneyers:  type aliases now support built-in types.
235         Spotted by Mike Elston.
237   * TS: Small refactorings based on Ciao port experience.
239   * TS: Removed -singleton stylecheck option now that portray_clause
240         prints singleton variables as _.
242 Apr 19, 2006
244  * JW: Make library(chr) load its private stuff silent.
246 Apr 14, 2006
248  * TS: Bug fix: too many guards were locked.
250 Apr 11, 2006
252   * TS: Most runtime library predicates are now specialized
253         per constraint, avoiding generic =.. and lists code.
255         Mayor update to suspension term layout. Layout may now
256         differ from one constraint to the other. Some unused suspension
257         fields (continuation goal and generation number) are omitted.
258         Further analysis can remove more fields.
260         Default store constraints now each have
261         their own global variable: a list of all the suspensions.
262         Removal from this list is now O(1) thanks to setarg/1 and
263         back pointers in the suspension terms. This can cause time
264         time complexity improvements in solvers that always have 
265         variable indexing on their constraints.
267         Ground, non-indexed constraints are now removed from
268         their global list store in O(1), as for the default store.
270         Minor bug fixes in a number of places.
272 Mar 16, 2006
274   * TS: Fixed subtle bug in ai_observation analysis,
275         that caused goal sequences to only generate
276         the optimistic default answer pattern, leading
277         to invalid 'not observed' conclusions.
278   * TS: Variable indexing/suspension analysis now ignores functor/3
279         in guards. Could be extended to other built-ins
280         that cause an error when arguments are not
281         properly instantiated.
283 Mar 11, 2006
284   
285   * TS: Renamed global variable id to chr_id in chr_runtime.pl.
287 Mar 9, 2006
288   * JS: Synchronization with experimental version:
289         - minor optimizations, e.g. efficient lookups with statically known
290           instantiated data 
291         - new alternative syntax for passive declarations
292         - new dense_int built-in type + underlying store
293         - new type alias definitions, like in Mercury
295 Mar 4, 2006
296   * BD: small changes in chr_compiler_options.pl and chr_translate.chr
297         affecting only the SICStus port
299 Mar 3, 2006
300   * BD: lots of changes related to porting to SICStus
301   * TS: Now exception/3 hook is only used in SWI-Prolog
303 Mar 2, 2006
305   * TS: Use exception/3 hook to catch undefined 
306         global variables of chr_runtime.pl and CHR modules,
307         for multi-threaded programs and saved states.
309 Feb 9, 2006
311   * JW: Fix "make check" path issues.
312   * TS: Removed all is_chr_file tests when loading file.
314 Feb 8, 2006
316   * BD: chr_swi.pl: option(optimize --> :- chr_option(optimize
317   * TS: Removed obsolete experimental optimization option.
318   * TS: Correctly report variable pragmas!
319   * TS: No constraints declared is no longer a special case.
321 Jan 19, 2006
323   * BD: chr_swi.pl - use_module(hprolog added for SICStus port
324   * TS: Removed operator declaration for '::'. No longer used.
326 Dec 23, 2005
328   * TS: Removed chr_constraints declaration again, in favor
329         of only the chr_constraint declaration and modified
330         documentation accordingly.
331   * TS: Modified documentation based on recommendations of Bart Demoen.
332   * TS: Added chr_info/3 predicate to chr_compiler_errors, as suggested by
333         Jon Sneyers. Now print banner on calling compiler.
335 Dec 13, 2005
337   * TS: warnings are now written to user_error stream.
339 Dec 12, 2005
341   * TS: option and constraints declarations are now deprecated. They
342         are replaced by chr_option and chr_constraint(s).
343   * TR: Made an interface for warnings and errors. Errors now implemented
344         with exceptions.
345   * TR: Revised documentation.
347 Dec 2, 2005
348   * BD: chr_translate.chr, chr_translate_bootstrap2.chr
349            mutables "abstracted"
350   * BD: chr_translate_bootstrap1.chr
351            atomic_concat - some duplicate code of it is in more than one file :-(
352            create_get_mutable definitions if-deffed
353            verbosity_on/0 for porting
354         hprolog.pl
355            definitions of init_store/2, get_store/2, update_store/2
356            and of make_init_store_goal/make_get_store_goal/make_update_store_goal
357            removed prolog_flag/3 (seemed  nowhere used)
358         chr_translate_bootstrap2.chr
359            make_init_store_goal/make_get_store_goal/make_update_store_goal introduced
360            verbosity_on/0 for porting
361         chr_translate_bootstrap.pl
362            atom_concat -> atomic_concat
363            verbosity_on/0 for porting
364            conditional import van library(terms)
365         chr_translate.chr
366            make_init_store_goal etc. introduced
367         create_get_mutable_ref wherever needed (chr_translate*)
370 Nov 30, 2005
371   * BD: chr_runtime.pl:
372            chr_init for SICStus
373            included contents of chr_debug.pl
374            removed show_store/1
375            create_mutable changed into 'chr create_mutable'
376            got rid of explicit inlining and did it by goal expansion
377            inlining also of 'chr default_store'
378   * BD: chr_swi.pl:
379            removed :- use_module(chr(chr_debug))
380            module header: version for SICStus
381   * BD: chr_debug.pl: emptied
382   * BD: chr_translate.chr:
383            system specific declarations factored out in insert_declarations
384            changed two atom_concat/3 into atomic_concat/3 (because arg 2 was sometimes an int)
385   * BD: chr_compiler_utility.pl:
386            put atomic_concat/3 there 
387            adapted atom_concat_list/2 to use it
388   * BD: chr_swi_bootstrap.pl:
389            introduced chr_swi_bootstrap/2 for ease of porting
390            exported also chr_compile/3
391            porting code for get_time stuff/read_term/absolute_file_name
392   * BD: builtins.pl, a_star.pl, clean_code.pl:
393            some ifdefs
396 Nov 29, 2005
397   * BD: hprolog.pl: removed strip_attributes/2 and restore_attributes/2
399 Nov 29, 2005
400   * BD: chr_swi.pl: Removed code that took Handler for Module (in chr_expand(end_of_file)
401                     Added :- chr_option(_,_) with same meaning as option(_,_)
402                     is_chr_file: .chr is no longer a recognised suffix
403                     added use_module(library(lists))
404                     changed calls to source_location/2 into prolog_load_context/2
405   * BD: chr_translate.chr: chr_translate/2: added end_of_file to translated program
406                            adapted SICStus compatibility message
407                            made :- chr_option(_,_) available
408                            changed precedence of + - ? to 980 (these ops are
409                                      probably not local enough to the module)
411 Nov 21, 2005
413   * TS: Further synchronization with hProlog.
415 Nov 18, 2005
417   * TS: Removed dead code in guard_entailment.chr
418   * TS: Fixed performance bug: now lookup is indexed
419         on maximal number of arguments.
420   * TS: Removed some redundant intermediate predicates
421         in chr_runtime.pl.
422   * TS: It is now possible to disable the printing
423         of the CHR constraint store per module,
424         through the option toplevel_show_store on/off
425   * TS: Synchronized with hProlog
426   * TS: bug fix in functional dependency analysis
428 Nov 17, 2005
430   * TS: Removed two dead predicates in chr_translate.chr
431         and hooked up the late_storage_analysis
432         that was being bypassed.
433   * TS: Renamed global_term_ref_1 to default_store.
434   * TS: Removed redundant predicate values_ht.
435   * TS: Compiler no longer generates dead code for never stored constraints,
436         i.e. attach/detach predicates.
437         This reduces the generated .pl by about 700 lines.
439 Nov 10, 2005
441   * TS: Two more bug fixes for constraints without
442         active occurrences that trigger.
444 Nov 4, 2005
446   * TS: Small optimization of code for constraints
447         without any active occurrence.
448   * TS: Fixed bug caused by previous bug fix:
449         added only_ground_indexed_arguments/1 test
450         to separate out that meaning from may_trigger/1.
452 Nov 3, 2005
454   * TS: Removed strip_attributes code.
455   * TS: Fixed bug that causes new constraints to be added on triggering.
457 Oct 25, 2005
459   * TS: Two minor bug fixes.
461 Oct 19, 2005
463   * TS: Fixed bug due to overly aggressive inlining of get_mutable_value.
465 Oct 18, 2005
467   * JS: Compiled code is broken, if debug is off and optimize too.
468         Debug off now entails optimize on.
470   * TS: Some fixes of the documentation. Thanks to Bart Demoen
471         and Thom Fruehwirth. 
473 Sep 2, 2005
475   * TS: Synchronized with hProlog.
477 Aug 31, 2005
479   * TS: Added missing operator declarations for prefix (?).
481 Aug 9, 2005
483   * JW: import lists into chr_compiler_utility.pl
485   * JW: make message hook for query(yes) detect CHR global variables.
487   * JW: Exported pairlist_delete_eq/3 from pairlist and use this in
488     chr_hashtable_store.pl
490 Aug 4, 2005
492   * TS: Renamed pairlist:delete/3 to pairlist:pairlist_delete/3.
493         Mike Elston.
494 Aug 1, 2005
496   * TS: Extended more efficient ground matching code to
497         removed simpagation occurrence code.
499 Jul 28, 2005
501   * TS: New input verification: duplicate constraint declaration
502         now reported as an error. Requested by Mike Elston.
503   * TS: More efficient matching code for ground constraints
504         when matching an argument of a partner constraint with
505         a ground term
506   * JS: Bug fix in guard simplification.
508 Jul 3, 2005
510   * TS: Factored out option functionality into separate module.
511   * TS: Factored out utility code into separate module.
513 Jun 29, 2005
515   * TS: Changed chr_show_store/1 to use print/1 instead of write/1.
517 Jun 28, 2005
519   * TS: Removed spurious and conflicting operator definitions
520         for +, - and ? as mode declarations.
522 Jun 27, 2005
524   * TS: Added find_chr_constraint/1 functionality.
526 Jun 8, 2005
528   * TS: Improved compiler scalability: use nb_setval/2 to
529         remember compiled code through backtracking over
530         compilation process instead of assert/1.
531   * TS: Removed spurious comma from file.
533 Jun 1, 2005
535   * TS: Added option to disable toplevel constraint store printing.
536   * TS: Slightly improved hash table constraint store implementation.
538 Apr 16, 2005
540   * JW: Added patch from Jon Sneyers.
542 Mar 11, 2005
544   * TS: Improved head reordering heuristic.
545   * TS: Added support primitive for alternate built-in solver dependency.
547 Mar 4, 2005
549   * TS: Fixed bug that causes wrong output in chr_show_store.
551 Feb 25, 2005
553   * TS: Fixed several bugs in generation of debugable code.
555 Feb 19, 2005
557   * JW: Cleanup integration in SWI-Prolog environment:
558         - Extended SWI-Prolog library ordsets.  Renamed ord_delete/3 to
559           ord_del_element/3 and ord_difference/3 to ord_subtract/3 for
560           better compatibility.
561         - Renamed module find to chr_find to avoid name conflict and declared
562           preds as meta-predicate.
563         - Re-inserted and exported strip_attributes/2 and
564           restore_attributes/2 in hprolog.pl. Deleted hprolog: from
565           chr_translate.chr.
566         - Added dummy option declarations to bootstrap compiler.
567         - Fixed path problems in makefile (-p chr=.) and install new
568           components.
569         - Fixed typo 'chr show_store' --> chr_show_store.
571 Feb 17, 2005
573   * JS: Added guard entailment optimizations and
574         new syntax for type and mode declarations.
576 Dec 15, 2004
578   * TS: Use prolog:message/3 hook to automatically print
579         contents of CHR constraint stores with query bindings
580         on toplevel.
582 Dec  3, 2004
584   * TS: Bugfix in code generation. Reported by Lyosha Ilyukhin.
586 Jul 28, 2004
588   * TS: Updated hashtable stores. They now start small and expand.
590 Jul 19, 2004
592   * JW: Removed chr_pp: module prefixes
593   * JW: Updated Windows makefile.mak (more similar organisation, added check)
595 Jul 17, 2004
597   * TS: Added chr_hashtable_store library.
598   * TS: Added find library.
599   * TS: Added builtins library.
600   * TS: Added clean_code library.
601   * TS: Added binomial_heap library.
602   * TS: Added a_star library.
603   * TS: Added new intermediate bootstrapping step
604   * TS: Synchronized CHR compiler with most recent development version
606   Summary of changes:
608    "The new version of the compiler contains several new optimizations, both
609     fully automatic, such as the antimonotny-based delay avoidance (see
610     http://www.cs.kuleuven.be/publicaties/rapporten/cw/CW385.abs.html for
611     the technical report), and enabled by mode declarations (see CHR
612     documentation), such as hashtable-based constraint indexes."
614 Apr 9, 2004
616   * JW: Added chr_messages.pl.  Make all debug messages use the print_message/2
617     interface to enable future embedding.
619 Apr 7, 2004
621   * JW: Added chr:debug_interact/3 hook.  Defined in chr_swi.pl to void
622     showing constraints first as goal and then as CHR call.
623   * JW: Added chr:debug_event/2 hook.  Defined in chr_swi.pl to make the
624     CHR debugger honour a skip command from the Prolog tracer.
626 Apr 6, 2004
628   * JW: Added b (break) to the CHR debugger.
629   * TS: added chr_expandable/2 clause for pragma/2
631 Apr 5, 2004
633   * JW: fixed reference to format_rule/2.
634   * JW: Use select/3 rather than delete/3 in diff/2 in Tests/zebra.pl
635   * TS: CHR translation now leaves CHR store empty
637 Apr 4, 2004
639   * JW: added :- use_module(library(chr)) to all examples.
640   * JW: mapped -O --> option(optimize, full).
641   * JW: introduced file-search-path `chr' for clarity and to enable running
642     make check from the local environment instead of the public installation.
643   * JW: mapped prolog flag generate_debug_info --> option(debug, on)
644   * JW: Replaced the chr -> pl step with term_expansion/2.
645   * JW: Moved insert_declarations/2 to chr_swi.pl
647 Apr 2, 2004
649   * JW: fixed Undefined procedure: chr_runtime:run_suspensions_loop_d/1
650   * TS: Added <space> for creep and shortened debug line prefix to CHR:
652 Mar 29, 2004
654   * JW: Use \+ \+ in chr_compile/3 to undo changes to the constraint
655     pool.  Regression test suite using "make check" works again.
657 Mar 25, 2004
659   * TS: Added skip and ancestor debug commands
661 Mar 24, 2004
663   * TS: Added bootstrapping process for CHR compiler using CHR.
664   * TS: CHR compiler now uses CHR.
665   * TS: Fixed bug in compilation of multi-headed simpagation rules.
666   * TS: Cleaned up compiler.
667   * TS: Added analysis + optimization for never attached constraints.
668   * TS: Exploit uniqueness (functional dependency) results to detect
669     set semantics type simpagation rules where one rule can be passive
670   * TS: Compiler generates 'chr debug_event'/1 calls
671   * TS: Rudimentary support for debugging.
672     option(debug,on) causes a trace of CHR events to be printed
674 Mar 15, 2004
676   * JW: Fix operator handling.
678 Mar 3, 2004
680   * JW: Integrated new version from Tom Schrijvers.