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