changes
[chr.git] / Changelog
blob20d5808755a38fb9106fd9f26e8795db9a2dc64e
1 Nov 20, 2006
3   * TS: Bug fix in compiler_errors.pl.
5 Oct 25, 2006
7   * TS: Bug fix in occurrence subsumption by Jon Sneyers.
9 Oct 18, 2006
11   * TS: New preprocessor feature.
13   * TS: Parametrization of experimental chr_identifier type.
15 Oct 16, 2006
17   * TS: More inlining.
19   * TS: Stronger static type checking.
21   * TS: Omitted buggy FD analysis from bootstrapping process.
23 Oct 12, 2006
25   * TS: More inlining.
27   * TS: Experimental chr_identifier type.
29 Oct 10, 2006
31   * TS: Allow for empty type definitions aka phantom types. These are 
32         useful for some type-level tricks. A warning is issued so the 
33         user can check whether a phantom type is intended. No other
34         phantom type-specific checks are in place yet.
36   * TS: Fixed static type checking of built-in types.
38 Oct 9, 2006
40   * TS: The dense_int type can now appear on the rhs of type alias
41         definitions.
43 Oct 3, 2006
45   * TS: Fixed bug concerning matchings between ground and possibly
46         non-ground arguments.   
48 Oct 2, 2006
50   * TS: Fixed a bug in code generation, overeager removal of a clause.
52 Sep 28, 2006
54   * TS: Refactored some code.
56 Sep 22, 2006
58   * TS: Add exception handler to initialize chr_leash in new threads.
59   
60 Sep 18. 2006
62   * TS: Bug fix for programs in debugging mode.
64 Aug 30, 2006
66   * JW: Fixed make clean
67   * JW: Enlarged stacks to make build succeed
69 Aug 24, 2006
71   * JW: Add target ln-install
73 Aug 21, 2006
75   * TS: Fixed wrong arities in not inlined predicates. Mike Elston.
77 Aug 18, 2006
79   * TS: Code clean-up, more inlining, only generate used imports.
81 Aug 17, 2006
83   * TS: Inlining and more specialization of auxiliary predicates.
85 Aug 10, 2006
87   * TS: Fixed bug for constraints without rules in debug mode.
89   * TS: Compiler clean-up
91   * TS: Experimental var_assoc_store.
94 Aug 9, 2006
96   * TS: Various minor code generation improvements, including smaller
97         suspension terms.
99 Aug 8, 2006
101   * TS: Absolutely no lock checking when check_guard_bindings is disabled.
103 Aug 4, 2006
105   * TS: Minor optimizations for (-) arguments.
107   * TS: Important optimization for awakening fewer suspended constraints
109 Aug 3, 2006
111   * TS: Fixed typo in static type checker.
113   * TS: Documented static and dynamic type checking.
115 Aug 2, 2006
117   * TS: Fixed bug (type alias related) in static type checker. Mike Elston.
119   * TS: Added static type checking on variable matching in rule heads.
121   * TS: Added static type checking on CHR constraints in rule bodies.
123 Aug 1, 2006
125   * TS: New (limited) compile time type checking of rule heads.
127 Jul 28, 2006
129   * TS: New experimental robustness feature in debug mode:
130         runtime type checking of CHR constraints.
132 Jul 5, 2006
134   * TS: Minor bug fixes.
136 Jun 22, 2006
138   * TS: Improved performance of ai_observation_analysis,
139         mainly via additional tabling and passive declarations.
141 Jun 8, 2006
143   * TS: Disabled some code only intended for SICStus.
145   * TS: Fixed bug in removal of constraints. Spotted by Leslie De Koninck.
147 Jun 7, 2006
149   * TS: Next fix to tracer. Cconstraints in propagation
150         rules are shown in textual order.
152 Jun 2, 2006
154   * TS: Next few fixes to tracer. Constraints in simpagation rules
155         are now shown on the right side of the backslash.
157 Jun 1, 2006
159   * TS: Synchronization with SICStus version of K.U.Leuven CHR.
161   * TS: First few fixes to tracer. Cconstraints in simplification
162         rules are shown in textual order. Constraint insertions
163         are always shown.
165 May 17, 2006
167   * TS: Termination bug fixed in guard_entailment.
169   * TS:  Runtime library predicate run_suspensions is now specialized
170         per constraint, avoiding requirement of fixed suspension layout.
172   * TS: Further update to suspension term layout. Only constraints for
173         which the propagation history is used get a history field.
175 May 9, 2006
177   * TS: Ignore propagation rules with trivial body 'true'.
179 Apr 24, 2006
181   * TS: Guard entailment now first simplifies the formula it processes,
182         in order to reduce the number of disjunctions, to obtain a smaller
183         search tree.
185 Apr 22, 2006
187   * TS: Bug fix by Jon Sneyers:  type aliases now support built-in types.
188         Spotted by Mike Elston.
190   * TS: Small refactorings based on Ciao port experience.
192   * TS: Removed -singleton stylecheck option now that portray_clause
193         prints singleton variables as _.
195 Apr 19, 2006
197  * JW: Make library(chr) load its private stuff silent.
199 Apr 14, 2006
201  * TS: Bug fix: too many guards were locked.
203 Apr 11, 2006
205   * TS: Most runtime library predicates are now specialized
206         per constraint, avoiding generic =.. and lists code.
208         Mayor update to suspension term layout. Layout may now
209         differ from one constraint to the other. Some unused suspension
210         fields (continuation goal and generation number) are omitted.
211         Further analysis can remove more fields.
213         Default store constraints now each have
214         their own global variable: a list of all the suspensions.
215         Removal from this list is now O(1) thanks to setarg/1 and
216         back pointers in the suspension terms. This can cause time
217         time complexity improvements in solvers that always have 
218         variable indexing on their constraints.
220         Ground, non-indexed constraints are now removed from
221         their global list store in O(1), as for the default store.
223         Minor bug fixes in a number of places.
225 Mar 16, 2006
227   * TS: Fixed subtle bug in ai_observation analysis,
228         that caused goal sequences to only generate
229         the optimistic default answer pattern, leading
230         to invalid 'not observed' conclusions.
231   * TS: Variable indexing/suspension analysis now ignores functor/3
232         in guards. Could be extended to other built-ins
233         that cause an error when arguments are not
234         properly instantiated.
236 Mar 11, 2006
237   
238   * TS: Renamed global variable id to chr_id in chr_runtime.pl.
240 Mar 9, 2006
241   * JS: Synchronization with experimental version:
242         - minor optimizations, e.g. efficient lookups with statically known
243           instantiated data 
244         - new alternative syntax for passive declarations
245         - new dense_int built-in type + underlying store
246         - new type alias definitions, like in Mercury
248 Mar 4, 2006
249   * BD: small changes in chr_compiler_options.pl and chr_translate.chr
250         affecting only the SICStus port
252 Mar 3, 2006
253   * BD: lots of changes related to porting to SICStus
254   * TS: Now exception/3 hook is only used in SWI-Prolog
256 Mar 2, 2006
258   * TS: Use exception/3 hook to catch undefined 
259         global variables of chr_runtime.pl and CHR modules,
260         for multi-threaded programs and saved states.
262 Feb 9, 2006
264   * JW: Fix "make check" path issues.
265   * TS: Removed all is_chr_file tests when loading file.
267 Feb 8, 2006
269   * BD: chr_swi.pl: option(optimize --> :- chr_option(optimize
270   * TS: Removed obsolete experimental optimization option.
271   * TS: Correctly report variable pragmas!
272   * TS: No constraints declared is no longer a special case.
274 Jan 19, 2006
276   * BD: chr_swi.pl - use_module(hprolog added for SICStus port
277   * TS: Removed operator declaration for '::'. No longer used.
279 Dec 23, 2005
281   * TS: Removed chr_constraints declaration again, in favor
282         of only the chr_constraint declaration and modified
283         documentation accordingly.
284   * TS: Modified documentation based on recommendations of Bart Demoen.
285   * TS: Added chr_info/3 predicate to chr_compiler_errors, as suggested by
286         Jon Sneyers. Now print banner on calling compiler.
288 Dec 13, 2005
290   * TS: warnings are now written to user_error stream.
292 Dec 12, 2005
294   * TS: option and constraints declarations are now deprecated. They
295         are replaced by chr_option and chr_constraint(s).
296   * TR: Made an interface for warnings and errors. Errors now implemented
297         with exceptions.
298   * TR: Revised documentation.
300 Dec 2, 2005
301   * BD: chr_translate.chr, chr_translate_bootstrap2.chr
302            mutables "abstracted"
303   * BD: chr_translate_bootstrap1.chr
304            atomic_concat - some duplicate code of it is in more than one file :-(
305            create_get_mutable definitions if-deffed
306            verbosity_on/0 for porting
307         hprolog.pl
308            definitions of init_store/2, get_store/2, update_store/2
309            and of make_init_store_goal/make_get_store_goal/make_update_store_goal
310            removed prolog_flag/3 (seemed  nowhere used)
311         chr_translate_bootstrap2.chr
312            make_init_store_goal/make_get_store_goal/make_update_store_goal introduced
313            verbosity_on/0 for porting
314         chr_translate_bootstrap.pl
315            atom_concat -> atomic_concat
316            verbosity_on/0 for porting
317            conditional import van library(terms)
318         chr_translate.chr
319            make_init_store_goal etc. introduced
320         create_get_mutable_ref wherever needed (chr_translate*)
323 Nov 30, 2005
324   * BD: chr_runtime.pl:
325            chr_init for SICStus
326            included contents of chr_debug.pl
327            removed show_store/1
328            create_mutable changed into 'chr create_mutable'
329            got rid of explicit inlining and did it by goal expansion
330            inlining also of 'chr default_store'
331   * BD: chr_swi.pl:
332            removed :- use_module(chr(chr_debug))
333            module header: version for SICStus
334   * BD: chr_debug.pl: emptied
335   * BD: chr_translate.chr:
336            system specific declarations factored out in insert_declarations
337            changed two atom_concat/3 into atomic_concat/3 (because arg 2 was sometimes an int)
338   * BD: chr_compiler_utility.pl:
339            put atomic_concat/3 there 
340            adapted atom_concat_list/2 to use it
341   * BD: chr_swi_bootstrap.pl:
342            introduced chr_swi_bootstrap/2 for ease of porting
343            exported also chr_compile/3
344            porting code for get_time stuff/read_term/absolute_file_name
345   * BD: builtins.pl, a_star.pl, clean_code.pl:
346            some ifdefs
349 Nov 29, 2005
350   * BD: hprolog.pl: removed strip_attributes/2 and restore_attributes/2
352 Nov 29, 2005
353   * BD: chr_swi.pl: Removed code that took Handler for Module (in chr_expand(end_of_file)
354                     Added :- chr_option(_,_) with same meaning as option(_,_)
355                     is_chr_file: .chr is no longer a recognised suffix
356                     added use_module(library(lists))
357                     changed calls to source_location/2 into prolog_load_context/2
358   * BD: chr_translate.chr: chr_translate/2: added end_of_file to translated program
359                            adapted SICStus compatibility message
360                            made :- chr_option(_,_) available
361                            changed precedence of + - ? to 980 (these ops are
362                                      probably not local enough to the module)
364 Nov 21, 2005
366   * TS: Further synchronization with hProlog.
368 Nov 18, 2005
370   * TS: Removed dead code in guard_entailment.chr
371   * TS: Fixed performance bug: now lookup is indexed
372         on maximal number of arguments.
373   * TS: Removed some redundant intermediate predicates
374         in chr_runtime.pl.
375   * TS: It is now possible to disable the printing
376         of the CHR constraint store per module,
377         through the option toplevel_show_store on/off
378   * TS: Synchronized with hProlog
379   * TS: bug fix in functional dependency analysis
381 Nov 17, 2005
383   * TS: Removed two dead predicates in chr_translate.chr
384         and hooked up the late_storage_analysis
385         that was being bypassed.
386   * TS: Renamed global_term_ref_1 to default_store.
387   * TS: Removed redundant predicate values_ht.
388   * TS: Compiler no longer generates dead code for never stored constraints,
389         i.e. attach/detach predicates.
390         This reduces the generated .pl by about 700 lines.
392 Nov 10, 2005
394   * TS: Two more bug fixes for constraints without
395         active occurrences that trigger.
397 Nov 4, 2005
399   * TS: Small optimization of code for constraints
400         without any active occurrence.
401   * TS: Fixed bug caused by previous bug fix:
402         added only_ground_indexed_arguments/1 test
403         to separate out that meaning from may_trigger/1.
405 Nov 3, 2005
407   * TS: Removed strip_attributes code.
408   * TS: Fixed bug that causes new constraints to be added on triggering.
410 Oct 25, 2005
412   * TS: Two minor bug fixes.
414 Oct 19, 2005
416   * TS: Fixed bug due to overly aggressive inlining of get_mutable_value.
418 Oct 18, 2005
420   * JS: Compiled code is broken, if debug is off and optimize too.
421         Debug off now entails optimize on.
423   * TS: Some fixes of the documentation. Thanks to Bart Demoen
424         and Thom Fruehwirth. 
426 Sep 2, 2005
428   * TS: Synchronized with hProlog.
430 Aug 31, 2005
432   * TS: Added missing operator declarations for prefix (?).
434 Aug 9, 2005
436   * JW: import lists into chr_compiler_utility.pl
438   * JW: make message hook for query(yes) detect CHR global variables.
440   * JW: Exported pairlist_delete_eq/3 from pairlist and use this in
441     chr_hashtable_store.pl
443 Aug 4, 2005
445   * TS: Renamed pairlist:delete/3 to pairlist:pairlist_delete/3.
446         Mike Elston.
447 Aug 1, 2005
449   * TS: Extended more efficient ground matching code to
450         removed simpagation occurrence code.
452 Jul 28, 2005
454   * TS: New input verification: duplicate constraint declaration
455         now reported as an error. Requested by Mike Elston.
456   * TS: More efficient matching code for ground constraints
457         when matching an argument of a partner constraint with
458         a ground term
459   * JS: Bug fix in guard simplification.
461 Jul 3, 2005
463   * TS: Factored out option functionality into separate module.
464   * TS: Factored out utility code into separate module.
466 Jun 29, 2005
468   * TS: Changed chr_show_store/1 to use print/1 instead of write/1.
470 Jun 28, 2005
472   * TS: Removed spurious and conflicting operator definitions
473         for +, - and ? as mode declarations.
475 Jun 27, 2005
477   * TS: Added find_chr_constraint/1 functionality.
479 Jun 8, 2005
481   * TS: Improved compiler scalability: use nb_setval/2 to
482         remember compiled code through backtracking over
483         compilation process instead of assert/1.
484   * TS: Removed spurious comma from file.
486 Jun 1, 2005
488   * TS: Added option to disable toplevel constraint store printing.
489   * TS: Slightly improved hash table constraint store implementation.
491 Apr 16, 2005
493   * JW: Added patch from Jon Sneyers.
495 Mar 11, 2005
497   * TS: Improved head reordering heuristic.
498   * TS: Added support primitive for alternate built-in solver dependency.
500 Mar 4, 2005
502   * TS: Fixed bug that causes wrong output in chr_show_store.
504 Feb 25, 2005
506   * TS: Fixed several bugs in generation of debugable code.
508 Feb 19, 2005
510   * JW: Cleanup integration in SWI-Prolog environment:
511         - Extended SWI-Prolog library ordsets.  Renamed ord_delete/3 to
512           ord_del_element/3 and ord_difference/3 to ord_subtract/3 for
513           better compatibility.
514         - Renamed module find to chr_find to avoid name conflict and declared
515           preds as meta-predicate.
516         - Re-inserted and exported strip_attributes/2 and
517           restore_attributes/2 in hprolog.pl. Deleted hprolog: from
518           chr_translate.chr.
519         - Added dummy option declarations to bootstrap compiler.
520         - Fixed path problems in makefile (-p chr=.) and install new
521           components.
522         - Fixed typo 'chr show_store' --> chr_show_store.
524 Feb 17, 2005
526   * JS: Added guard entailment optimizations and
527         new syntax for type and mode declarations.
529 Dec 15, 2004
531   * TS: Use prolog:message/3 hook to automatically print
532         contents of CHR constraint stores with query bindings
533         on toplevel.
535 Dec  3, 2004
537   * TS: Bugfix in code generation. Reported by Lyosha Ilyukhin.
539 Jul 28, 2004
541   * TS: Updated hashtable stores. They now start small and expand.
543 Jul 19, 2004
545   * JW: Removed chr_pp: module prefixes
546   * JW: Updated Windows makefile.mak (more similar organisation, added check)
548 Jul 17, 2004
550   * TS: Added chr_hashtable_store library.
551   * TS: Added find library.
552   * TS: Added builtins library.
553   * TS: Added clean_code library.
554   * TS: Added binomial_heap library.
555   * TS: Added a_star library.
556   * TS: Added new intermediate bootstrapping step
557   * TS: Synchronized CHR compiler with most recent development version
559   Summary of changes:
561    "The new version of the compiler contains several new optimizations, both
562     fully automatic, such as the antimonotny-based delay avoidance (see
563     http://www.cs.kuleuven.be/publicaties/rapporten/cw/CW385.abs.html for
564     the technical report), and enabled by mode declarations (see CHR
565     documentation), such as hashtable-based constraint indexes."
567 Apr 9, 2004
569   * JW: Added chr_messages.pl.  Make all debug messages use the print_message/2
570     interface to enable future embedding.
572 Apr 7, 2004
574   * JW: Added chr:debug_interact/3 hook.  Defined in chr_swi.pl to void
575     showing constraints first as goal and then as CHR call.
576   * JW: Added chr:debug_event/2 hook.  Defined in chr_swi.pl to make the
577     CHR debugger honour a skip command from the Prolog tracer.
579 Apr 6, 2004
581   * JW: Added b (break) to the CHR debugger.
582   * TS: added chr_expandable/2 clause for pragma/2
584 Apr 5, 2004
586   * JW: fixed reference to format_rule/2.
587   * JW: Use select/3 rather than delete/3 in diff/2 in Tests/zebra.pl
588   * TS: CHR translation now leaves CHR store empty
590 Apr 4, 2004
592   * JW: added :- use_module(library(chr)) to all examples.
593   * JW: mapped -O --> option(optimize, full).
594   * JW: introduced file-search-path `chr' for clarity and to enable running
595     make check from the local environment instead of the public installation.
596   * JW: mapped prolog flag generate_debug_info --> option(debug, on)
597   * JW: Replaced the chr -> pl step with term_expansion/2.
598   * JW: Moved insert_declarations/2 to chr_swi.pl
600 Apr 2, 2004
602   * JW: fixed Undefined procedure: chr_runtime:run_suspensions_loop_d/1
603   * TS: Added <space> for creep and shortened debug line prefix to CHR:
605 Mar 29, 2004
607   * JW: Use \+ \+ in chr_compile/3 to undo changes to the constraint
608     pool.  Regression test suite using "make check" works again.
610 Mar 25, 2004
612   * TS: Added skip and ancestor debug commands
614 Mar 24, 2004
616   * TS: Added bootstrapping process for CHR compiler using CHR.
617   * TS: CHR compiler now uses CHR.
618   * TS: Fixed bug in compilation of multi-headed simpagation rules.
619   * TS: Cleaned up compiler.
620   * TS: Added analysis + optimization for never attached constraints.
621   * TS: Exploit uniqueness (functional dependency) results to detect
622     set semantics type simpagation rules where one rule can be passive
623   * TS: Compiler generates 'chr debug_event'/1 calls
624   * TS: Rudimentary support for debugging.
625     option(debug,on) causes a trace of CHR events to be printed
627 Mar 15, 2004
629   * JW: Fix operator handling.
631 Mar 3, 2004
633   * JW: Integrated new version from Tom Schrijvers.