line numbers
[chr.git] / Changelog
blob1dcf2698e8d14b58853cf2d0e9a5e2becf036b3d
1 Mar 8, 2007
3   * TS: Added maintenance of line numbers through CHR compilation
4         as an option: chr_option(line_numbers,on).
6 Mar 5, 2007
8   * TS: Bug fix: setarg/3 instantiation error reported by Mike Elston.
9         Caused by missing suspension argument in debug off, optimize off
10         mode.
12 Feb 22, 2007
14  * LDK: O(1) removal from hashtables, with experimental
15         chr_option(ht_removal,on).
17 Jan 25, 2007
19  * PVW: Bugfixes for optional use of CHR constraints in rule guards.
21 Jan 18, 2007
23   * PVW: Optional use of CHR constraints in rule guards.
25 Nov 20, 2006
27   * TS: Bug fix in compiler_errors.pl.
29 Oct 25, 2006
31   * TS: Bug fix in occurrence subsumption by Jon Sneyers.
33 Oct 18, 2006
35   * TS: New preprocessor feature.
37   * TS: Parametrization of experimental chr_identifier type.
39 Oct 16, 2006
41   * TS: More inlining.
43   * TS: Stronger static type checking.
45   * TS: Omitted buggy FD analysis from bootstrapping process.
47 Oct 12, 2006
49   * TS: More inlining.
51   * TS: Experimental chr_identifier type.
53 Oct 10, 2006
55   * TS: Allow for empty type definitions aka phantom types. These are 
56         useful for some type-level tricks. A warning is issued so the 
57         user can check whether a phantom type is intended. No other
58         phantom type-specific checks are in place yet.
60   * TS: Fixed static type checking of built-in types.
62 Oct 9, 2006
64   * TS: The dense_int type can now appear on the rhs of type alias
65         definitions.
67 Oct 3, 2006
69   * TS: Fixed bug concerning matchings between ground and possibly
70         non-ground arguments.   
72 Oct 2, 2006
74   * TS: Fixed a bug in code generation, overeager removal of a clause.
76 Sep 28, 2006
78   * TS: Refactored some code.
80 Sep 22, 2006
82   * TS: Add exception handler to initialize chr_leash in new threads.
83   
84 Sep 18. 2006
86   * TS: Bug fix for programs in debugging mode.
88 Aug 30, 2006
90   * JW: Fixed make clean
91   * JW: Enlarged stacks to make build succeed
93 Aug 24, 2006
95   * JW: Add target ln-install
97 Aug 21, 2006
99   * TS: Fixed wrong arities in not inlined predicates. Mike Elston.
101 Aug 18, 2006
103   * TS: Code clean-up, more inlining, only generate used imports.
105 Aug 17, 2006
107   * TS: Inlining and more specialization of auxiliary predicates.
109 Aug 10, 2006
111   * TS: Fixed bug for constraints without rules in debug mode.
113   * TS: Compiler clean-up
115   * TS: Experimental var_assoc_store.
118 Aug 9, 2006
120   * TS: Various minor code generation improvements, including smaller
121         suspension terms.
123 Aug 8, 2006
125   * TS: Absolutely no lock checking when check_guard_bindings is disabled.
127 Aug 4, 2006
129   * TS: Minor optimizations for (-) arguments.
131   * TS: Important optimization for awakening fewer suspended constraints
133 Aug 3, 2006
135   * TS: Fixed typo in static type checker.
137   * TS: Documented static and dynamic type checking.
139 Aug 2, 2006
141   * TS: Fixed bug (type alias related) in static type checker. Mike Elston.
143   * TS: Added static type checking on variable matching in rule heads.
145   * TS: Added static type checking on CHR constraints in rule bodies.
147 Aug 1, 2006
149   * TS: New (limited) compile time type checking of rule heads.
151 Jul 28, 2006
153   * TS: New experimental robustness feature in debug mode:
154         runtime type checking of CHR constraints.
156 Jul 5, 2006
158   * TS: Minor bug fixes.
160 Jun 22, 2006
162   * TS: Improved performance of ai_observation_analysis,
163         mainly via additional tabling and passive declarations.
165 Jun 8, 2006
167   * TS: Disabled some code only intended for SICStus.
169   * TS: Fixed bug in removal of constraints. Spotted by Leslie De Koninck.
171 Jun 7, 2006
173   * TS: Next fix to tracer. Cconstraints in propagation
174         rules are shown in textual order.
176 Jun 2, 2006
178   * TS: Next few fixes to tracer. Constraints in simpagation rules
179         are now shown on the right side of the backslash.
181 Jun 1, 2006
183   * TS: Synchronization with SICStus version of K.U.Leuven CHR.
185   * TS: First few fixes to tracer. Cconstraints in simplification
186         rules are shown in textual order. Constraint insertions
187         are always shown.
189 May 17, 2006
191   * TS: Termination bug fixed in guard_entailment.
193   * TS:  Runtime library predicate run_suspensions is now specialized
194         per constraint, avoiding requirement of fixed suspension layout.
196   * TS: Further update to suspension term layout. Only constraints for
197         which the propagation history is used get a history field.
199 May 9, 2006
201   * TS: Ignore propagation rules with trivial body 'true'.
203 Apr 24, 2006
205   * TS: Guard entailment now first simplifies the formula it processes,
206         in order to reduce the number of disjunctions, to obtain a smaller
207         search tree.
209 Apr 22, 2006
211   * TS: Bug fix by Jon Sneyers:  type aliases now support built-in types.
212         Spotted by Mike Elston.
214   * TS: Small refactorings based on Ciao port experience.
216   * TS: Removed -singleton stylecheck option now that portray_clause
217         prints singleton variables as _.
219 Apr 19, 2006
221  * JW: Make library(chr) load its private stuff silent.
223 Apr 14, 2006
225  * TS: Bug fix: too many guards were locked.
227 Apr 11, 2006
229   * TS: Most runtime library predicates are now specialized
230         per constraint, avoiding generic =.. and lists code.
232         Mayor update to suspension term layout. Layout may now
233         differ from one constraint to the other. Some unused suspension
234         fields (continuation goal and generation number) are omitted.
235         Further analysis can remove more fields.
237         Default store constraints now each have
238         their own global variable: a list of all the suspensions.
239         Removal from this list is now O(1) thanks to setarg/1 and
240         back pointers in the suspension terms. This can cause time
241         time complexity improvements in solvers that always have 
242         variable indexing on their constraints.
244         Ground, non-indexed constraints are now removed from
245         their global list store in O(1), as for the default store.
247         Minor bug fixes in a number of places.
249 Mar 16, 2006
251   * TS: Fixed subtle bug in ai_observation analysis,
252         that caused goal sequences to only generate
253         the optimistic default answer pattern, leading
254         to invalid 'not observed' conclusions.
255   * TS: Variable indexing/suspension analysis now ignores functor/3
256         in guards. Could be extended to other built-ins
257         that cause an error when arguments are not
258         properly instantiated.
260 Mar 11, 2006
261   
262   * TS: Renamed global variable id to chr_id in chr_runtime.pl.
264 Mar 9, 2006
265   * JS: Synchronization with experimental version:
266         - minor optimizations, e.g. efficient lookups with statically known
267           instantiated data 
268         - new alternative syntax for passive declarations
269         - new dense_int built-in type + underlying store
270         - new type alias definitions, like in Mercury
272 Mar 4, 2006
273   * BD: small changes in chr_compiler_options.pl and chr_translate.chr
274         affecting only the SICStus port
276 Mar 3, 2006
277   * BD: lots of changes related to porting to SICStus
278   * TS: Now exception/3 hook is only used in SWI-Prolog
280 Mar 2, 2006
282   * TS: Use exception/3 hook to catch undefined 
283         global variables of chr_runtime.pl and CHR modules,
284         for multi-threaded programs and saved states.
286 Feb 9, 2006
288   * JW: Fix "make check" path issues.
289   * TS: Removed all is_chr_file tests when loading file.
291 Feb 8, 2006
293   * BD: chr_swi.pl: option(optimize --> :- chr_option(optimize
294   * TS: Removed obsolete experimental optimization option.
295   * TS: Correctly report variable pragmas!
296   * TS: No constraints declared is no longer a special case.
298 Jan 19, 2006
300   * BD: chr_swi.pl - use_module(hprolog added for SICStus port
301   * TS: Removed operator declaration for '::'. No longer used.
303 Dec 23, 2005
305   * TS: Removed chr_constraints declaration again, in favor
306         of only the chr_constraint declaration and modified
307         documentation accordingly.
308   * TS: Modified documentation based on recommendations of Bart Demoen.
309   * TS: Added chr_info/3 predicate to chr_compiler_errors, as suggested by
310         Jon Sneyers. Now print banner on calling compiler.
312 Dec 13, 2005
314   * TS: warnings are now written to user_error stream.
316 Dec 12, 2005
318   * TS: option and constraints declarations are now deprecated. They
319         are replaced by chr_option and chr_constraint(s).
320   * TR: Made an interface for warnings and errors. Errors now implemented
321         with exceptions.
322   * TR: Revised documentation.
324 Dec 2, 2005
325   * BD: chr_translate.chr, chr_translate_bootstrap2.chr
326            mutables "abstracted"
327   * BD: chr_translate_bootstrap1.chr
328            atomic_concat - some duplicate code of it is in more than one file :-(
329            create_get_mutable definitions if-deffed
330            verbosity_on/0 for porting
331         hprolog.pl
332            definitions of init_store/2, get_store/2, update_store/2
333            and of make_init_store_goal/make_get_store_goal/make_update_store_goal
334            removed prolog_flag/3 (seemed  nowhere used)
335         chr_translate_bootstrap2.chr
336            make_init_store_goal/make_get_store_goal/make_update_store_goal introduced
337            verbosity_on/0 for porting
338         chr_translate_bootstrap.pl
339            atom_concat -> atomic_concat
340            verbosity_on/0 for porting
341            conditional import van library(terms)
342         chr_translate.chr
343            make_init_store_goal etc. introduced
344         create_get_mutable_ref wherever needed (chr_translate*)
347 Nov 30, 2005
348   * BD: chr_runtime.pl:
349            chr_init for SICStus
350            included contents of chr_debug.pl
351            removed show_store/1
352            create_mutable changed into 'chr create_mutable'
353            got rid of explicit inlining and did it by goal expansion
354            inlining also of 'chr default_store'
355   * BD: chr_swi.pl:
356            removed :- use_module(chr(chr_debug))
357            module header: version for SICStus
358   * BD: chr_debug.pl: emptied
359   * BD: chr_translate.chr:
360            system specific declarations factored out in insert_declarations
361            changed two atom_concat/3 into atomic_concat/3 (because arg 2 was sometimes an int)
362   * BD: chr_compiler_utility.pl:
363            put atomic_concat/3 there 
364            adapted atom_concat_list/2 to use it
365   * BD: chr_swi_bootstrap.pl:
366            introduced chr_swi_bootstrap/2 for ease of porting
367            exported also chr_compile/3
368            porting code for get_time stuff/read_term/absolute_file_name
369   * BD: builtins.pl, a_star.pl, clean_code.pl:
370            some ifdefs
373 Nov 29, 2005
374   * BD: hprolog.pl: removed strip_attributes/2 and restore_attributes/2
376 Nov 29, 2005
377   * BD: chr_swi.pl: Removed code that took Handler for Module (in chr_expand(end_of_file)
378                     Added :- chr_option(_,_) with same meaning as option(_,_)
379                     is_chr_file: .chr is no longer a recognised suffix
380                     added use_module(library(lists))
381                     changed calls to source_location/2 into prolog_load_context/2
382   * BD: chr_translate.chr: chr_translate/2: added end_of_file to translated program
383                            adapted SICStus compatibility message
384                            made :- chr_option(_,_) available
385                            changed precedence of + - ? to 980 (these ops are
386                                      probably not local enough to the module)
388 Nov 21, 2005
390   * TS: Further synchronization with hProlog.
392 Nov 18, 2005
394   * TS: Removed dead code in guard_entailment.chr
395   * TS: Fixed performance bug: now lookup is indexed
396         on maximal number of arguments.
397   * TS: Removed some redundant intermediate predicates
398         in chr_runtime.pl.
399   * TS: It is now possible to disable the printing
400         of the CHR constraint store per module,
401         through the option toplevel_show_store on/off
402   * TS: Synchronized with hProlog
403   * TS: bug fix in functional dependency analysis
405 Nov 17, 2005
407   * TS: Removed two dead predicates in chr_translate.chr
408         and hooked up the late_storage_analysis
409         that was being bypassed.
410   * TS: Renamed global_term_ref_1 to default_store.
411   * TS: Removed redundant predicate values_ht.
412   * TS: Compiler no longer generates dead code for never stored constraints,
413         i.e. attach/detach predicates.
414         This reduces the generated .pl by about 700 lines.
416 Nov 10, 2005
418   * TS: Two more bug fixes for constraints without
419         active occurrences that trigger.
421 Nov 4, 2005
423   * TS: Small optimization of code for constraints
424         without any active occurrence.
425   * TS: Fixed bug caused by previous bug fix:
426         added only_ground_indexed_arguments/1 test
427         to separate out that meaning from may_trigger/1.
429 Nov 3, 2005
431   * TS: Removed strip_attributes code.
432   * TS: Fixed bug that causes new constraints to be added on triggering.
434 Oct 25, 2005
436   * TS: Two minor bug fixes.
438 Oct 19, 2005
440   * TS: Fixed bug due to overly aggressive inlining of get_mutable_value.
442 Oct 18, 2005
444   * JS: Compiled code is broken, if debug is off and optimize too.
445         Debug off now entails optimize on.
447   * TS: Some fixes of the documentation. Thanks to Bart Demoen
448         and Thom Fruehwirth. 
450 Sep 2, 2005
452   * TS: Synchronized with hProlog.
454 Aug 31, 2005
456   * TS: Added missing operator declarations for prefix (?).
458 Aug 9, 2005
460   * JW: import lists into chr_compiler_utility.pl
462   * JW: make message hook for query(yes) detect CHR global variables.
464   * JW: Exported pairlist_delete_eq/3 from pairlist and use this in
465     chr_hashtable_store.pl
467 Aug 4, 2005
469   * TS: Renamed pairlist:delete/3 to pairlist:pairlist_delete/3.
470         Mike Elston.
471 Aug 1, 2005
473   * TS: Extended more efficient ground matching code to
474         removed simpagation occurrence code.
476 Jul 28, 2005
478   * TS: New input verification: duplicate constraint declaration
479         now reported as an error. Requested by Mike Elston.
480   * TS: More efficient matching code for ground constraints
481         when matching an argument of a partner constraint with
482         a ground term
483   * JS: Bug fix in guard simplification.
485 Jul 3, 2005
487   * TS: Factored out option functionality into separate module.
488   * TS: Factored out utility code into separate module.
490 Jun 29, 2005
492   * TS: Changed chr_show_store/1 to use print/1 instead of write/1.
494 Jun 28, 2005
496   * TS: Removed spurious and conflicting operator definitions
497         for +, - and ? as mode declarations.
499 Jun 27, 2005
501   * TS: Added find_chr_constraint/1 functionality.
503 Jun 8, 2005
505   * TS: Improved compiler scalability: use nb_setval/2 to
506         remember compiled code through backtracking over
507         compilation process instead of assert/1.
508   * TS: Removed spurious comma from file.
510 Jun 1, 2005
512   * TS: Added option to disable toplevel constraint store printing.
513   * TS: Slightly improved hash table constraint store implementation.
515 Apr 16, 2005
517   * JW: Added patch from Jon Sneyers.
519 Mar 11, 2005
521   * TS: Improved head reordering heuristic.
522   * TS: Added support primitive for alternate built-in solver dependency.
524 Mar 4, 2005
526   * TS: Fixed bug that causes wrong output in chr_show_store.
528 Feb 25, 2005
530   * TS: Fixed several bugs in generation of debugable code.
532 Feb 19, 2005
534   * JW: Cleanup integration in SWI-Prolog environment:
535         - Extended SWI-Prolog library ordsets.  Renamed ord_delete/3 to
536           ord_del_element/3 and ord_difference/3 to ord_subtract/3 for
537           better compatibility.
538         - Renamed module find to chr_find to avoid name conflict and declared
539           preds as meta-predicate.
540         - Re-inserted and exported strip_attributes/2 and
541           restore_attributes/2 in hprolog.pl. Deleted hprolog: from
542           chr_translate.chr.
543         - Added dummy option declarations to bootstrap compiler.
544         - Fixed path problems in makefile (-p chr=.) and install new
545           components.
546         - Fixed typo 'chr show_store' --> chr_show_store.
548 Feb 17, 2005
550   * JS: Added guard entailment optimizations and
551         new syntax for type and mode declarations.
553 Dec 15, 2004
555   * TS: Use prolog:message/3 hook to automatically print
556         contents of CHR constraint stores with query bindings
557         on toplevel.
559 Dec  3, 2004
561   * TS: Bugfix in code generation. Reported by Lyosha Ilyukhin.
563 Jul 28, 2004
565   * TS: Updated hashtable stores. They now start small and expand.
567 Jul 19, 2004
569   * JW: Removed chr_pp: module prefixes
570   * JW: Updated Windows makefile.mak (more similar organisation, added check)
572 Jul 17, 2004
574   * TS: Added chr_hashtable_store library.
575   * TS: Added find library.
576   * TS: Added builtins library.
577   * TS: Added clean_code library.
578   * TS: Added binomial_heap library.
579   * TS: Added a_star library.
580   * TS: Added new intermediate bootstrapping step
581   * TS: Synchronized CHR compiler with most recent development version
583   Summary of changes:
585    "The new version of the compiler contains several new optimizations, both
586     fully automatic, such as the antimonotny-based delay avoidance (see
587     http://www.cs.kuleuven.be/publicaties/rapporten/cw/CW385.abs.html for
588     the technical report), and enabled by mode declarations (see CHR
589     documentation), such as hashtable-based constraint indexes."
591 Apr 9, 2004
593   * JW: Added chr_messages.pl.  Make all debug messages use the print_message/2
594     interface to enable future embedding.
596 Apr 7, 2004
598   * JW: Added chr:debug_interact/3 hook.  Defined in chr_swi.pl to void
599     showing constraints first as goal and then as CHR call.
600   * JW: Added chr:debug_event/2 hook.  Defined in chr_swi.pl to make the
601     CHR debugger honour a skip command from the Prolog tracer.
603 Apr 6, 2004
605   * JW: Added b (break) to the CHR debugger.
606   * TS: added chr_expandable/2 clause for pragma/2
608 Apr 5, 2004
610   * JW: fixed reference to format_rule/2.
611   * JW: Use select/3 rather than delete/3 in diff/2 in Tests/zebra.pl
612   * TS: CHR translation now leaves CHR store empty
614 Apr 4, 2004
616   * JW: added :- use_module(library(chr)) to all examples.
617   * JW: mapped -O --> option(optimize, full).
618   * JW: introduced file-search-path `chr' for clarity and to enable running
619     make check from the local environment instead of the public installation.
620   * JW: mapped prolog flag generate_debug_info --> option(debug, on)
621   * JW: Replaced the chr -> pl step with term_expansion/2.
622   * JW: Moved insert_declarations/2 to chr_swi.pl
624 Apr 2, 2004
626   * JW: fixed Undefined procedure: chr_runtime:run_suspensions_loop_d/1
627   * TS: Added <space> for creep and shortened debug line prefix to CHR:
629 Mar 29, 2004
631   * JW: Use \+ \+ in chr_compile/3 to undo changes to the constraint
632     pool.  Regression test suite using "make check" works again.
634 Mar 25, 2004
636   * TS: Added skip and ancestor debug commands
638 Mar 24, 2004
640   * TS: Added bootstrapping process for CHR compiler using CHR.
641   * TS: CHR compiler now uses CHR.
642   * TS: Fixed bug in compilation of multi-headed simpagation rules.
643   * TS: Cleaned up compiler.
644   * TS: Added analysis + optimization for never attached constraints.
645   * TS: Exploit uniqueness (functional dependency) results to detect
646     set semantics type simpagation rules where one rule can be passive
647   * TS: Compiler generates 'chr debug_event'/1 calls
648   * TS: Rudimentary support for debugging.
649     option(debug,on) causes a trace of CHR events to be printed
651 Mar 15, 2004
653   * JW: Fix operator handling.
655 Mar 3, 2004
657   * JW: Integrated new version from Tom Schrijvers.