see Changelog
[chr.git] / Changelog
blob9ea58c719d7a9230042215791d6f3a16775ca857
1 Aug 4, 2006
3   * TS: Minor optimizations for (-) arguments.
5   * TS: Important optimization for awakening fewer suspended constraints
7 Aug 3, 2006
9   * TS: Fixed typo in static type checker.
11   * TS: Documented static and dynamic type checking.
13 Aug 2, 2006
15   * TS: Fixed bug (type alias related) in static type checker. Mike Elston.
17   * TS: Added static type checking on variable matching in rule heads.
19   * TS: Added static type checking on CHR constraints in rule bodies.
21 Aug 1, 2006
23   * TS: New (limited) compile time type checking of rule heads.
25 Jul 28, 2006
27   * TS: New experimental robustness feature in debug mode:
28         runtime type checking of CHR constraints.
30 Jul 5, 2006
32   * TS: Minor bug fixes.
34 Jun 22, 2006
36   * TS: Improved performance of ai_observation_analysis,
37         mainly via additional tabling and passive declarations.
39 Jun 8, 2006
41   * TS: Disabled some code only intended for SICStus.
43   * TS: Fixed bug in removal of constraints. Spotted by Leslie De Koninck.
45 Jun 7, 2006
47   * TS: Next fix to tracer. Cconstraints in propagation
48         rules are shown in textual order.
50 Jun 2, 2006
52   * TS: Next few fixes to tracer. Constraints in simpagation rules
53         are now shown on the right side of the backslash.
55 Jun 1, 2006
57   * TS: Synchronization with SICStus version of K.U.Leuven CHR.
59   * TS: First few fixes to tracer. Cconstraints in simplification
60         rules are shown in textual order. Constraint insertions
61         are always shown.
63 May 17, 2006
65   * TS: Termination bug fixed in guard_entailment.
67   * TS:  Runtime library predicate run_suspensions is now specialized
68         per constraint, avoiding requirement of fixed suspension layout.
70   * TS: Further update to suspension term layout. Only constraints for
71         which the propagation history is used get a history field.
73 May 9, 2006
75   * TS: Ignore propagation rules with trivial body 'true'.
77 Apr 24, 2006
79   * TS: Guard entailment now first simplifies the formula it processes,
80         in order to reduce the number of disjunctions, to obtain a smaller
81         search tree.
83 Apr 22, 2006
85   * TS: Bug fix by Jon Sneyers:  type aliases now support built-in types.
86         Spotted by Mike Elston.
88   * TS: Small refactorings based on Ciao port experience.
90   * TS: Removed -singleton stylecheck option now that portray_clause
91         prints singleton variables as _.
93 Apr 19, 2006
95  * JW: Make library(chr) load its private stuff silent.
97 Apr 14, 2006
99  * TS: Bug fix: too many guards were locked.
101 Apr 11, 2006
103   * TS: Most runtime library predicates are now specialized
104         per constraint, avoiding generic =.. and lists code.
106         Mayor update to suspension term layout. Layout may now
107         differ from one constraint to the other. Some unused suspension
108         fields (continuation goal and generation number) are omitted.
109         Further analysis can remove more fields.
111         Default store constraints now each have
112         their own global variable: a list of all the suspensions.
113         Removal from this list is now O(1) thanks to setarg/1 and
114         back pointers in the suspension terms. This can cause time
115         time complexity improvements in solvers that always have 
116         variable indexing on their constraints.
118         Ground, non-indexed constraints are now removed from
119         their global list store in O(1), as for the default store.
121         Minor bug fixes in a number of places.
123 Mar 16, 2006
125   * TS: Fixed subtle bug in ai_observation analysis,
126         that caused goal sequences to only generate
127         the optimistic default answer pattern, leading
128         to invalid 'not observed' conclusions.
129   * TS: Variable indexing/suspension analysis now ignores functor/3
130         in guards. Could be extended to other built-ins
131         that cause an error when arguments are not
132         properly instantiated.
134 Mar 11, 2006
135   
136   * TS: Renamed global variable id to chr_id in chr_runtime.pl.
138 Mar 9, 2006
139   * JS: Synchronization with experimental version:
140         - minor optimizations, e.g. efficient lookups with statically known
141           instantiated data 
142         - new alternative syntax for passive declarations
143         - new dense_int built-in type + underlying store
144         - new type alias definitions, like in Mercury
146 Mar 4, 2006
147   * BD: small changes in chr_compiler_options.pl and chr_translate.chr
148         affecting only the SICStus port
150 Mar 3, 2006
151   * BD: lots of changes related to porting to SICStus
152   * TS: Now exception/3 hook is only used in SWI-Prolog
154 Mar 2, 2006
156   * TS: Use exception/3 hook to catch undefined 
157         global variables of chr_runtime.pl and CHR modules,
158         for multi-threaded programs and saved states.
160 Feb 9, 2006
162   * JW: Fix "make check" path issues.
163   * TS: Removed all is_chr_file tests when loading file.
165 Feb 8, 2006
167   * BD: chr_swi.pl: option(optimize --> :- chr_option(optimize
168   * TS: Removed obsolete experimental optimization option.
169   * TS: Correctly report variable pragmas!
170   * TS: No constraints declared is no longer a special case.
172 Jan 19, 2006
174   * BD: chr_swi.pl - use_module(hprolog added for SICStus port
175   * TS: Removed operator declaration for '::'. No longer used.
177 Dec 23, 2005
179   * TS: Removed chr_constraints declaration again, in favor
180         of only the chr_constraint declaration and modified
181         documentation accordingly.
182   * TS: Modified documentation based on recommendations of Bart Demoen.
183   * TS: Added chr_info/3 predicate to chr_compiler_errors, as suggested by
184         Jon Sneyers. Now print banner on calling compiler.
186 Dec 13, 2005
188   * TS: warnings are now written to user_error stream.
190 Dec 12, 2005
192   * TS: option and constraints declarations are now deprecated. They
193         are replaced by chr_option and chr_constraint(s).
194   * TR: Made an interface for warnings and errors. Errors now implemented
195         with exceptions.
196   * TR: Revised documentation.
198 Dec 2, 2005
199   * BD: chr_translate.chr, chr_translate_bootstrap2.chr
200            mutables "abstracted"
201   * BD: chr_translate_bootstrap1.chr
202            atomic_concat - some duplicate code of it is in more than one file :-(
203            create_get_mutable definitions if-deffed
204            verbosity_on/0 for porting
205         hprolog.pl
206            definitions of init_store/2, get_store/2, update_store/2
207            and of make_init_store_goal/make_get_store_goal/make_update_store_goal
208            removed prolog_flag/3 (seemed  nowhere used)
209         chr_translate_bootstrap2.chr
210            make_init_store_goal/make_get_store_goal/make_update_store_goal introduced
211            verbosity_on/0 for porting
212         chr_translate_bootstrap.pl
213            atom_concat -> atomic_concat
214            verbosity_on/0 for porting
215            conditional import van library(terms)
216         chr_translate.chr
217            make_init_store_goal etc. introduced
218         create_get_mutable_ref wherever needed (chr_translate*)
221 Nov 30, 2005
222   * BD: chr_runtime.pl:
223            chr_init for SICStus
224            included contents of chr_debug.pl
225            removed show_store/1
226            create_mutable changed into 'chr create_mutable'
227            got rid of explicit inlining and did it by goal expansion
228            inlining also of 'chr default_store'
229   * BD: chr_swi.pl:
230            removed :- use_module(chr(chr_debug))
231            module header: version for SICStus
232   * BD: chr_debug.pl: emptied
233   * BD: chr_translate.chr:
234            system specific declarations factored out in insert_declarations
235            changed two atom_concat/3 into atomic_concat/3 (because arg 2 was sometimes an int)
236   * BD: chr_compiler_utility.pl:
237            put atomic_concat/3 there 
238            adapted atom_concat_list/2 to use it
239   * BD: chr_swi_bootstrap.pl:
240            introduced chr_swi_bootstrap/2 for ease of porting
241            exported also chr_compile/3
242            porting code for get_time stuff/read_term/absolute_file_name
243   * BD: builtins.pl, a_star.pl, clean_code.pl:
244            some ifdefs
247 Nov 29, 2005
248   * BD: hprolog.pl: removed strip_attributes/2 and restore_attributes/2
250 Nov 29, 2005
251   * BD: chr_swi.pl: Removed code that took Handler for Module (in chr_expand(end_of_file)
252                     Added :- chr_option(_,_) with same meaning as option(_,_)
253                     is_chr_file: .chr is no longer a recognised suffix
254                     added use_module(library(lists))
255                     changed calls to source_location/2 into prolog_load_context/2
256   * BD: chr_translate.chr: chr_translate/2: added end_of_file to translated program
257                            adapted SICStus compatibility message
258                            made :- chr_option(_,_) available
259                            changed precedence of + - ? to 980 (these ops are
260                                      probably not local enough to the module)
262 Nov 21, 2005
264   * TS: Further synchronization with hProlog.
266 Nov 18, 2005
268   * TS: Removed dead code in guard_entailment.chr
269   * TS: Fixed performance bug: now lookup is indexed
270         on maximal number of arguments.
271   * TS: Removed some redundant intermediate predicates
272         in chr_runtime.pl.
273   * TS: It is now possible to disable the printing
274         of the CHR constraint store per module,
275         through the option toplevel_show_store on/off
276   * TS: Synchronized with hProlog
277   * TS: bug fix in functional dependency analysis
279 Nov 17, 2005
281   * TS: Removed two dead predicates in chr_translate.chr
282         and hooked up the late_storage_analysis
283         that was being bypassed.
284   * TS: Renamed global_term_ref_1 to default_store.
285   * TS: Removed redundant predicate values_ht.
286   * TS: Compiler no longer generates dead code for never stored constraints,
287         i.e. attach/detach predicates.
288         This reduces the generated .pl by about 700 lines.
290 Nov 10, 2005
292   * TS: Two more bug fixes for constraints without
293         active occurrences that trigger.
295 Nov 4, 2005
297   * TS: Small optimization of code for constraints
298         without any active occurrence.
299   * TS: Fixed bug caused by previous bug fix:
300         added only_ground_indexed_arguments/1 test
301         to separate out that meaning from may_trigger/1.
303 Nov 3, 2005
305   * TS: Removed strip_attributes code.
306   * TS: Fixed bug that causes new constraints to be added on triggering.
308 Oct 25, 2005
310   * TS: Two minor bug fixes.
312 Oct 19, 2005
314   * TS: Fixed bug due to overly aggressive inlining of get_mutable_value.
316 Oct 18, 2005
318   * JS: Compiled code is broken, if debug is off and optimize too.
319         Debug off now entails optimize on.
321   * TS: Some fixes of the documentation. Thanks to Bart Demoen
322         and Thom Fruehwirth. 
324 Sep 2, 2005
326   * TS: Synchronized with hProlog.
328 Aug 31, 2005
330   * TS: Added missing operator declarations for prefix (?).
332 Aug 9, 2005
334   * JW: import lists into chr_compiler_utility.pl
336   * JW: make message hook for query(yes) detect CHR global variables.
338   * JW: Exported pairlist_delete_eq/3 from pairlist and use this in
339     chr_hashtable_store.pl
341 Aug 4, 2005
343   * TS: Renamed pairlist:delete/3 to pairlist:pairlist_delete/3.
344         Mike Elston.
345 Aug 1, 2005
347   * TS: Extended more efficient ground matching code to
348         removed simpagation occurrence code.
350 Jul 28, 2005
352   * TS: New input verification: duplicate constraint declaration
353         now reported as an error. Requested by Mike Elston.
354   * TS: More efficient matching code for ground constraints
355         when matching an argument of a partner constraint with
356         a ground term
357   * JS: Bug fix in guard simplification.
359 Jul 3, 2005
361   * TS: Factored out option functionality into separate module.
362   * TS: Factored out utility code into separate module.
364 Jun 29, 2005
366   * TS: Changed chr_show_store/1 to use print/1 instead of write/1.
368 Jun 28, 2005
370   * TS: Removed spurious and conflicting operator definitions
371         for +, - and ? as mode declarations.
373 Jun 27, 2005
375   * TS: Added find_chr_constraint/1 functionality.
377 Jun 8, 2005
379   * TS: Improved compiler scalability: use nb_setval/2 to
380         remember compiled code through backtracking over
381         compilation process instead of assert/1.
382   * TS: Removed spurious comma from file.
384 Jun 1, 2005
386   * TS: Added option to disable toplevel constraint store printing.
387   * TS: Slightly improved hash table constraint store implementation.
389 Apr 16, 2005
391   * JW: Added patch from Jon Sneyers.
393 Mar 11, 2005
395   * TS: Improved head reordering heuristic.
396   * TS: Added support primitive for alternate built-in solver dependency.
398 Mar 4, 2005
400   * TS: Fixed bug that causes wrong output in chr_show_store.
402 Feb 25, 2005
404   * TS: Fixed several bugs in generation of debugable code.
406 Feb 19, 2005
408   * JW: Cleanup integration in SWI-Prolog environment:
409         - Extended SWI-Prolog library ordsets.  Renamed ord_delete/3 to
410           ord_del_element/3 and ord_difference/3 to ord_subtract/3 for
411           better compatibility.
412         - Renamed module find to chr_find to avoid name conflict and declared
413           preds as meta-predicate.
414         - Re-inserted and exported strip_attributes/2 and
415           restore_attributes/2 in hprolog.pl. Deleted hprolog: from
416           chr_translate.chr.
417         - Added dummy option declarations to bootstrap compiler.
418         - Fixed path problems in makefile (-p chr=.) and install new
419           components.
420         - Fixed typo 'chr show_store' --> chr_show_store.
422 Feb 17, 2005
424   * JS: Added guard entailment optimizations and
425         new syntax for type and mode declarations.
427 Dec 15, 2004
429   * TS: Use prolog:message/3 hook to automatically print
430         contents of CHR constraint stores with query bindings
431         on toplevel.
433 Dec  3, 2004
435   * TS: Bugfix in code generation. Reported by Lyosha Ilyukhin.
437 Jul 28, 2004
439   * TS: Updated hashtable stores. They now start small and expand.
441 Jul 19, 2004
443   * JW: Removed chr_pp: module prefixes
444   * JW: Updated Windows makefile.mak (more similar organisation, added check)
446 Jul 17, 2004
448   * TS: Added chr_hashtable_store library.
449   * TS: Added find library.
450   * TS: Added builtins library.
451   * TS: Added clean_code library.
452   * TS: Added binomial_heap library.
453   * TS: Added a_star library.
454   * TS: Added new intermediate bootstrapping step
455   * TS: Synchronized CHR compiler with most recent development version
457   Summary of changes:
459    "The new version of the compiler contains several new optimizations, both
460     fully automatic, such as the antimonotny-based delay avoidance (see
461     http://www.cs.kuleuven.be/publicaties/rapporten/cw/CW385.abs.html for
462     the technical report), and enabled by mode declarations (see CHR
463     documentation), such as hashtable-based constraint indexes."
465 Apr 9, 2004
467   * JW: Added chr_messages.pl.  Make all debug messages use the print_message/2
468     interface to enable future embedding.
470 Apr 7, 2004
472   * JW: Added chr:debug_interact/3 hook.  Defined in chr_swi.pl to void
473     showing constraints first as goal and then as CHR call.
474   * JW: Added chr:debug_event/2 hook.  Defined in chr_swi.pl to make the
475     CHR debugger honour a skip command from the Prolog tracer.
477 Apr 6, 2004
479   * JW: Added b (break) to the CHR debugger.
480   * TS: added chr_expandable/2 clause for pragma/2
482 Apr 5, 2004
484   * JW: fixed reference to format_rule/2.
485   * JW: Use select/3 rather than delete/3 in diff/2 in Tests/zebra.pl
486   * TS: CHR translation now leaves CHR store empty
488 Apr 4, 2004
490   * JW: added :- use_module(library(chr)) to all examples.
491   * JW: mapped -O --> option(optimize, full).
492   * JW: introduced file-search-path `chr' for clarity and to enable running
493     make check from the local environment instead of the public installation.
494   * JW: mapped prolog flag generate_debug_info --> option(debug, on)
495   * JW: Replaced the chr -> pl step with term_expansion/2.
496   * JW: Moved insert_declarations/2 to chr_swi.pl
498 Apr 2, 2004
500   * JW: fixed Undefined procedure: chr_runtime:run_suspensions_loop_d/1
501   * TS: Added <space> for creep and shortened debug line prefix to CHR:
503 Mar 29, 2004
505   * JW: Use \+ \+ in chr_compile/3 to undo changes to the constraint
506     pool.  Regression test suite using "make check" works again.
508 Mar 25, 2004
510   * TS: Added skip and ancestor debug commands
512 Mar 24, 2004
514   * TS: Added bootstrapping process for CHR compiler using CHR.
515   * TS: CHR compiler now uses CHR.
516   * TS: Fixed bug in compilation of multi-headed simpagation rules.
517   * TS: Cleaned up compiler.
518   * TS: Added analysis + optimization for never attached constraints.
519   * TS: Exploit uniqueness (functional dependency) results to detect
520     set semantics type simpagation rules where one rule can be passive
521   * TS: Compiler generates 'chr debug_event'/1 calls
522   * TS: Rudimentary support for debugging.
523     option(debug,on) causes a trace of CHR events to be printed
525 Mar 15, 2004
527   * JW: Fix operator handling.
529 Mar 3, 2004
531   * JW: Integrated new version from Tom Schrijvers.