[Aug 12 2009]

 * CHR: no debugging instrumentation for optimized code

[Jun 27 2008]

 * CHR: ADDED error value for check_guard_bindings option:
   throw error on guard binding

 * CHR: ADDED error value for check_guard_bindings option:
   throw error on guard binding

[May 22 2008]

 * CHR: experimental detach code size reduction (bug fix)

[May 21 2008]

 * CHR: reduce code size of attach and detach predicates (experimental)

[May 20 2008]

 * CHR: chr_enum/1 (bug fix) and chr_enum/2 (with handler)

[May 18 2008]

 * CHR: reinstate chr_enum/1

[May 14 2008]

 * CHR: suppress printing of put_attr/3 at toplevel

[Apr 18 2008]

 * MODIFIED: Renamed hash_term/2 to term_hash/2.  Added hash_term/2 to
   library(backcomp), so most code should not notice this.

[Feb 27 2008]

 * ENHANCED: CHR performance of find_chr_constraint when called with nonvar argument

[Feb 14 2008]

 * ENHANCED: CHR performance (minor issues)

[Feb 13 2008]

 * FIX: CHR new C file for Windows

 * FIX: CHR: single chr_support.c C file

[Feb 12 2008]

 * ENHANCED: CHR: moved performance critical predicates to C

[Feb 11 2008]

 * ENHANCED: CHR user-provided background knowledge (Jon Sneyers)

[Feb 10 2008]

 * ENHANCED: CHR compiler performance

 * ENHANCED: CHR compiler performance

[Jan 29 2008]

 * EHANCED: CHR performance: compacted indexing code

[Jan 28 2008]

 * ADDED: CHR: chr_constants/1 built-in type for enumerated constants

[Jan 27 2008]

 * ENHANCED: CHR: performance improvements (success continuation, Prolog code optimization)

 * COMPAT: Removed min_list/2 from library(hprolog) as this is now in library lists.

Jan 24, 2008

  * TS: Exploit success continuation information.

Jan 23, 2008

  * TS: Bug fix in continuation optimization.
  * TS: Fixed singleton variable.
  * TS: Suppress debug message.

Jan 22, 2008

  * TS: Rewrite Prolog code: common prefix elimination in
	successive clauses of the same predicate.
  * TS: Tries stores enabled by default again.
  * TS: Success and failure continuation optimization for
	propagation occurrences.

Jan 14, 2008

  * TS: Fix performance bug in locking of guard variables.
  * TS: Fix performance bug in spurious hash_term call.

Jan 10, 2008

  * TS: Type check constraint declarations.
  * TS: Trie stores hidden behind `experimental' option.
  * TS: New option `verbose' prints constraint indices.
  * TS: Don't compute term_hash for int and natural types.

Jan 9, 2008

  * TS: Avoid trivial warning for declare_stored_constraints.
  * TS: Bug fix: missing full store was causing compiler to loop.

Jan 9, 2008

  * TS: Bug fix: atomic_constants store was causing compiler
	to loop.
  * TS: Clean-up and avoid adding additional global_ground store
	if atomic_constants store covers all cases.
  * TS: Clean-up and bug fix.

Jan 7, 2008

  * TS: Performance improvement: use new store
	implementation for multi-argument lookups
	on manifest ground terms. Should be faster than
	hashtable.

Jan 4, 2008

  * TS: Performance improvement: use new store
	implementation for single-argument lookups
	on manifest atomics. Should be faster than
	hashtable. Will be generalized to arbitrary
	manifest ground lookups and non-manifest
	atomically typed lookups .

Jan 3, 2008

  * TS: Modified error messages of declare_stored_constraints
	option, to distinguish between stored, temporarily stored
	and never stored.
  * TS: write/1, writeln/1 and format/2 are now treated as non-binding
	builtins.
  * TS: Properly inline inthash constraint lookup.

Dec 31, 2007

  * TS: Additional assertion # default(Goal) for the
	declare_stored_constraints, which specifies that
	an unconditional simplification rule for the constraint
	must be added to the end of the program. The Goal
	parameter specifies the goal of that rule, e.g.
	true or fail or throw(...). Experimental.

Dec 29, 2007

  * TS: Experimental option declare_stored_constraints for
	telling the compiler to warn for stored constraints
	that are not asserted to be stored. Use the
		:- chr_constraint f(...) # stored.
	notation for asserting that a constraint is expected to
	be stored.

Dec 27, 2007

  * TS: Inline constraint lookup.

  * TS: Precompile term hashing.

Sep 26, 2007

  * TS: Code cleaning was hampered by line numbers.
	Reported by Mike Elston.

May 2, 2007

  * PVW: Bug fix in observation analysis.
  * PVW: Consistency checks of experimental history pragma.

Apr 5, 2007

  * TS: Lessened worst bottlenecks in CHR compiler,
	in the guard simplification phase.

Mar 26, 2007

  * TS: Experimental dynattr option, for dynamic size attribute terms.

Mar 16, 2007

  * TS: Extended observation analysis (abstract interpretation)
	to deal with disjunctions. With Paolo Tacchella.

Mar 14, 2007

  * TS: Renamed hprolog:substitute/4 to substitute_eq/4, because of
	name conflict with library(edit).

Mar 12, 2007

  * TS: Use line numbers in error and warning messages.

Mar 8, 2007

  * TS: Added maintenance of line numbers through CHR compilation
	as an option: chr_option(line_numbers,on).

Mar 5, 2007

  * TS: Bug fix: setarg/3 instantiation error reported by Mike Elston.
	Caused by missing suspension argument in debug off, optimize off
	mode.

Feb 22, 2007

 * LDK: O(1) removal from hashtables, with experimental
        chr_option(ht_removal,on).

Jan 25, 2007

 * PVW: Bugfixes for optional use of CHR constraints in rule guards.

Jan 18, 2007

  * PVW: Optional use of CHR constraints in rule guards.

Nov 20, 2006

  * TS: Bug fix in compiler_errors.pl.

Oct 25, 2006

  * TS: Bug fix in occurrence subsumption by Jon Sneyers.

Oct 18, 2006

  * TS: New preprocessor feature.

  * TS: Parametrization of experimental chr_identifier type.

Oct 16, 2006

  * TS: More inlining.

  * TS: Stronger static type checking.

  * TS: Omitted buggy FD analysis from bootstrapping process.

Oct 12, 2006

  * TS: More inlining.

  * TS: Experimental chr_identifier type.

Oct 10, 2006

  * TS: Allow for empty type definitions aka phantom types. These are
	useful for some type-level tricks. A warning is issued so the
	user can check whether a phantom type is intended. No other
	phantom type-specific checks are in place yet.

  * TS: Fixed static type checking of built-in types.

Oct 9, 2006

  * TS: The dense_int type can now appear on the rhs of type alias
	definitions.

Oct 3, 2006

  * TS: Fixed bug concerning matchings between ground and possibly
 	non-ground arguments.

Oct 2, 2006

  * TS: Fixed a bug in code generation, overeager removal of a clause.

Sep 28, 2006

  * TS: Refactored some code.

Sep 22, 2006

  * TS: Add exception handler to initialize chr_leash in new threads.

Sep 18. 2006

  * TS: Bug fix for programs in debugging mode.

Aug 30, 2006

  * JW: Fixed make clean
  * JW: Enlarged stacks to make build succeed

Aug 24, 2006

  * JW: Add target ln-install

Aug 21, 2006

  * TS: Fixed wrong arities in not inlined predicates. Mike Elston.

Aug 18, 2006

  * TS: Code clean-up, more inlining, only generate used imports.

Aug 17, 2006

  * TS: Inlining and more specialization of auxiliary predicates.

Aug 10, 2006

  * TS: Fixed bug for constraints without rules in debug mode.

  * TS: Compiler clean-up

  * TS: Experimental var_assoc_store.


Aug 9, 2006

  * TS: Various minor code generation improvements, including smaller
	suspension terms.

Aug 8, 2006

  * TS: Absolutely no lock checking when check_guard_bindings is disabled.

Aug 4, 2006

  * TS: Minor optimizations for (-) arguments.

  * TS: Important optimization for awakening fewer suspended constraints

Aug 3, 2006

  * TS: Fixed typo in static type checker.

  * TS: Documented static and dynamic type checking.

Aug 2, 2006

  * TS: Fixed bug (type alias related) in static type checker. Mike Elston.

  * TS: Added static type checking on variable matching in rule heads.

  * TS: Added static type checking on CHR constraints in rule bodies.

Aug 1, 2006

  * TS: New (limited) compile time type checking of rule heads.

Jul 28, 2006

  * TS: New experimental robustness feature in debug mode:
	runtime type checking of CHR constraints.

Jul 5, 2006

  * TS: Minor bug fixes.

Jun 22, 2006

  * TS: Improved performance of ai_observation_analysis,
	mainly via additional tabling and passive declarations.

Jun 8, 2006

  * TS: Disabled some code only intended for SICStus.

  * TS: Fixed bug in removal of constraints. Spotted by Leslie De Koninck.

Jun 7, 2006

  * TS: Next fix to tracer. Cconstraints in propagation
	rules are shown in textual order.

Jun 2, 2006

  * TS: Next few fixes to tracer. Constraints in simpagation rules
	are now shown on the right side of the backslash.

Jun 1, 2006

  * TS: Synchronization with SICStus version of K.U.Leuven CHR.

  * TS: First few fixes to tracer. Cconstraints in simplification
	rules are shown in textual order. Constraint insertions
	are always shown.

May 17, 2006

  * TS: Termination bug fixed in guard_entailment.

  * TS:  Runtime library predicate run_suspensions is now specialized
	per constraint, avoiding requirement of fixed suspension layout.

  * TS:	Further update to suspension term layout. Only constraints for
	which the propagation history is used get a history field.

May 9, 2006

  * TS: Ignore propagation rules with trivial body 'true'.

Apr 24, 2006

  * TS: Guard entailment now first simplifies the formula it processes,
	in order to reduce the number of disjunctions, to obtain a smaller
	search tree.

Apr 22, 2006

  * TS: Bug fix by Jon Sneyers:  type aliases now support built-in types.
	Spotted by Mike Elston.

  * TS: Small refactorings based on Ciao port experience.

  * TS: Removed -singleton stylecheck option now that portray_clause
	prints singleton variables as _.

Apr 19, 2006

 * JW: Make library(chr) load its private stuff silent.

Apr 14, 2006

 * TS: Bug fix: too many guards were locked.

Apr 11, 2006

  * TS: Most runtime library predicates are now specialized
	per constraint, avoiding generic =.. and lists code.

	Mayor update to suspension term layout. Layout may now
        differ from one constraint to the other. Some unused suspension
        fields (continuation goal and generation number) are omitted.
	Further analysis can remove more fields.

        Default store constraints now each have
        their own global variable: a list of all the suspensions.
	Removal from this list is now O(1) thanks to setarg/1 and
        back pointers in the suspension terms. This can cause time
	time complexity improvements in solvers that always have
	variable indexing on their constraints.

        Ground, non-indexed constraints are now removed from
	their global list store in O(1), as for the default store.

	Minor bug fixes in a number of places.

Mar 16, 2006

  * TS: Fixed subtle bug in ai_observation analysis,
        that caused goal sequences to only generate
        the optimistic default answer pattern, leading
        to invalid 'not observed' conclusions.
  * TS: Variable indexing/suspension analysis now ignores functor/3
        in guards. Could be extended to other built-ins
        that cause an error when arguments are not
        properly instantiated.

Mar 11, 2006

  * TS: Renamed global variable id to chr_id in chr_runtime.pl.

Mar 9, 2006
  * JS: Synchronization with experimental version:
        - minor optimizations, e.g. efficient lookups with statically known
          instantiated data
        - new alternative syntax for passive declarations
	- new dense_int built-in type + underlying store
	- new type alias definitions, like in Mercury

Mar 4, 2006
  * BD: small changes in chr_compiler_options.pl and chr_translate.chr
 	affecting only the SICStus port

Mar 3, 2006
  * BD: lots of changes related to porting to SICStus
  * TS: Now exception/3 hook is only used in SWI-Prolog

Mar 2, 2006

  * TS: Use exception/3 hook to catch undefined
        global variables of chr_runtime.pl and CHR modules,
	for multi-threaded programs and saved states.

Feb 9, 2006

  * JW: Fix "make check" path issues.
  * TS: Removed all is_chr_file tests when loading file.

Feb 8, 2006

  * BD: chr_swi.pl: option(optimize --> :- chr_option(optimize
  * TS: Removed obsolete experimental optimization option.
  * TS: Correctly report variable pragmas!
  * TS: No constraints declared is no longer a special case.

Jan 19, 2006

  * BD: chr_swi.pl - use_module(hprolog added for SICStus port
  * TS: Removed operator declaration for '::'. No longer used.

Dec 23, 2005

  * TS: Removed chr_constraints declaration again, in favor
	of only the chr_constraint declaration and modified
	documentation accordingly.
  * TS: Modified documentation based on recommendations of Bart Demoen.
  * TS: Added chr_info/3 predicate to chr_compiler_errors, as suggested by
	Jon Sneyers. Now print banner on calling compiler.

Dec 13, 2005

  * TS: warnings are now written to user_error stream.

Dec 12, 2005

  * TS: option and constraints declarations are now deprecated. They
        are replaced by chr_option and chr_constraint(s).
  * TR: Made an interface for warnings and errors. Errors now implemented
        with exceptions.
  * TR: Revised documentation.

Dec 2, 2005
  * BD: chr_translate.chr, chr_translate_bootstrap2.chr
	   mutables "abstracted"
  * BD: chr_translate_bootstrap1.chr
	   atomic_concat - some duplicate code of it is in more than one file :-(
	   create_get_mutable definitions if-deffed
	   verbosity_on/0 for porting
	hprolog.pl
	   definitions of init_store/2, get_store/2, update_store/2
	   and of make_init_store_goal/make_get_store_goal/make_update_store_goal
	   removed prolog_flag/3 (seemed  nowhere used)
	chr_translate_bootstrap2.chr
	   make_init_store_goal/make_get_store_goal/make_update_store_goal introduced
	   verbosity_on/0 for porting
	chr_translate_bootstrap.pl
	   atom_concat -> atomic_concat
	   verbosity_on/0 for porting
	   conditional import van library(terms)
	chr_translate.chr
	   make_init_store_goal etc. introduced
	create_get_mutable_ref wherever needed (chr_translate*)


Nov 30, 2005
  * BD: chr_runtime.pl:
           chr_init for SICStus
           included contents of chr_debug.pl
           removed show_store/1
           create_mutable changed into 'chr create_mutable'
           got rid of explicit inlining and did it by goal expansion
           inlining also of 'chr default_store'
  * BD: chr_swi.pl:
           removed :- use_module(chr(chr_debug))
           module header: version for SICStus
  * BD: chr_debug.pl: emptied
  * BD: chr_translate.chr:
	   system specific declarations factored out in insert_declarations
	   changed two atom_concat/3 into atomic_concat/3 (because arg 2 was sometimes an int)
  * BD: chr_compiler_utility.pl:
	   put atomic_concat/3 there
	   adapted atom_concat_list/2 to use it
  * BD: chr_swi_bootstrap.pl:
	   introduced chr_swi_bootstrap/2 for ease of porting
	   exported also chr_compile/3
           porting code for get_time stuff/read_term/absolute_file_name
  * BD: builtins.pl, a_star.pl, clean_code.pl:
	   some ifdefs


Nov 29, 2005
  * BD: hprolog.pl: removed strip_attributes/2 and restore_attributes/2

Nov 29, 2005
  * BD: chr_swi.pl: Removed code that took Handler for Module (in chr_expand(end_of_file)
                    Added :- chr_option(_,_) with same meaning as option(_,_)
                    is_chr_file: .chr is no longer a recognised suffix
                    added use_module(library(lists))
                    changed calls to source_location/2 into prolog_load_context/2
  * BD: chr_translate.chr: chr_translate/2: added end_of_file to translated program
                           adapted SICStus compatibility message
                           made :- chr_option(_,_) available
                           changed precedence of + - ? to 980 (these ops are
                                     probably not local enough to the module)

Nov 21, 2005

  * TS: Further synchronization with hProlog.

Nov 18, 2005

  * TS: Removed dead code in guard_entailment.chr
  * TS: Fixed performance bug: now lookup is indexed
	on maximal number of arguments.
  * TS: Removed some redundant intermediate predicates
	in chr_runtime.pl.
  * TS: It is now possible to disable the printing
	of the CHR constraint store per module,
	through the option toplevel_show_store on/off
  * TS: Synchronized with hProlog
  * TS: bug fix in functional dependency analysis

Nov 17, 2005

  * TS: Removed two dead predicates in chr_translate.chr
	and hooked up the late_storage_analysis
	that was being bypassed.
  * TS: Renamed global_term_ref_1 to default_store.
  * TS: Removed redundant predicate values_ht.
  * TS: Compiler no longer generates dead code for never stored constraints,
        i.e. attach/detach predicates.
        This reduces the generated .pl by about 700 lines.

Nov 10, 2005

  * TS: Two more bug fixes for constraints without
	active occurrences that trigger.

Nov 4, 2005

  * TS: Small optimization of code for constraints
	without any active occurrence.
  * TS: Fixed bug caused by previous bug fix:
        added only_ground_indexed_arguments/1 test
	to separate out that meaning from may_trigger/1.

Nov 3, 2005

  * TS: Removed strip_attributes code.
  * TS: Fixed bug that causes new constraints to be added on triggering.

Oct 25, 2005

  * TS: Two minor bug fixes.

Oct 19, 2005

  * TS: Fixed bug due to overly aggressive inlining of get_mutable_value.

Oct 18, 2005

  * JS: Compiled code is broken, if debug is off and optimize too.
	Debug off now entails optimize on.

  * TS: Some fixes of the documentation. Thanks to Bart Demoen
	and Thom Fruehwirth.

Sep 2, 2005

  * TS: Synchronized with hProlog.

Aug 31, 2005

  * TS: Added missing operator declarations for prefix (?).

Aug 9, 2005

  * JW: import lists into chr_compiler_utility.pl

  * JW: make message hook for query(yes) detect CHR global variables.

  * JW: Exported pairlist_delete_eq/3 from pairlist and use this in
    chr_hashtable_store.pl

Aug 4, 2005

  * TS: Renamed pairlist:delete/3 to pairlist:pairlist_delete/3.
	Mike Elston.
Aug 1, 2005

  * TS: Extended more efficient ground matching code to
	removed simpagation occurrence code.

Jul 28, 2005

  * TS: New input verification: duplicate constraint declaration
	now reported as an error. Requested by Mike Elston.
  * TS: More efficient matching code for ground constraints
	when matching an argument of a partner constraint with
	a ground term
  * JS: Bug fix in guard simplification.

Jul 3, 2005

  * TS: Factored out option functionality into separate module.
  * TS: Factored out utility code into separate module.

Jun 29, 2005

  * TS: Changed chr_show_store/1 to use print/1 instead of write/1.

Jun 28, 2005

  * TS: Removed spurious and conflicting operator definitions
	for +, - and ? as mode declarations.

Jun 27, 2005

  * TS: Added find_chr_constraint/1 functionality.

Jun 8, 2005

  * TS: Improved compiler scalability: use nb_setval/2 to
        remember compiled code through backtracking over
	compilation process instead of assert/1.
  * TS: Removed spurious comma from file.

Jun 1, 2005

  * TS: Added option to disable toplevel constraint store printing.
  * TS: Slightly improved hash table constraint store implementation.

Apr 16, 2005

  * JW: Added patch from Jon Sneyers.

Mar 11, 2005

  * TS: Improved head reordering heuristic.
  * TS: Added support primitive for alternate built-in solver dependency.

Mar 4, 2005

  * TS: Fixed bug that causes wrong output in chr_show_store.

Feb 25, 2005

  * TS: Fixed several bugs in generation of debugable code.

Feb 19, 2005

  * JW: Cleanup integration in SWI-Prolog environment:
	- Extended SWI-Prolog library ordsets.  Renamed ord_delete/3 to
	  ord_del_element/3 and ord_difference/3 to ord_subtract/3 for
	  better compatibility.
	- Renamed module find to chr_find to avoid name conflict and declared
	  preds as meta-predicate.
	- Re-inserted and exported strip_attributes/2 and
	  restore_attributes/2 in hprolog.pl. Deleted hprolog: from
	  chr_translate.chr.
	- Added dummy option declarations to bootstrap compiler.
	- Fixed path problems in makefile (-p chr=.) and install new
	  components.
	- Fixed typo 'chr show_store' --> chr_show_store.

Feb 17, 2005

  * JS: Added guard entailment optimizations and
	new syntax for type and mode declarations.

Dec 15, 2004

  * TS: Use prolog:message/3 hook to automatically print
	contents of CHR constraint stores with query bindings
	on toplevel.

Dec  3, 2004

  * TS: Bugfix in code generation. Reported by Lyosha Ilyukhin.

Jul 28, 2004

  * TS: Updated hashtable stores. They now start small and expand.

Jul 19, 2004

  * JW: Removed chr_pp: module prefixes
  * JW: Updated Windows makefile.mak (more similar organisation, added check)

Jul 17, 2004

  * TS: Added chr_hashtable_store library.
  * TS: Added find library.
  * TS: Added builtins library.
  * TS: Added clean_code library.
  * TS: Added binomial_heap library.
  * TS: Added a_star library.
  * TS: Added new intermediate bootstrapping step
  * TS: Synchronized CHR compiler with most recent development version

  Summary of changes:

   "The new version of the compiler contains several new optimizations, both
    fully automatic, such as the antimonotny-based delay avoidance (see
    http://www.cs.kuleuven.be/publicaties/rapporten/cw/CW385.abs.html for
    the technical report), and enabled by mode declarations (see CHR
    documentation), such as hashtable-based constraint indexes."

Apr 9, 2004

  * JW: Added chr_messages.pl.  Make all debug messages use the print_message/2
    interface to enable future embedding.

Apr 7, 2004

  * JW: Added chr:debug_interact/3 hook.  Defined in chr_swi.pl to void
    showing constraints first as goal and then as CHR call.
  * JW: Added chr:debug_event/2 hook.  Defined in chr_swi.pl to make the
    CHR debugger honour a skip command from the Prolog tracer.

Apr 6, 2004

  * JW: Added b (break) to the CHR debugger.
  * TS: added chr_expandable/2 clause for pragma/2

Apr 5, 2004

  * JW: fixed reference to format_rule/2.
  * JW: Use select/3 rather than delete/3 in diff/2 in Tests/zebra.pl
  * TS: CHR translation now leaves CHR store empty

Apr 4, 2004

  * JW: added :- use_module(library(chr)) to all examples.
  * JW: mapped -O --> option(optimize, full).
  * JW: introduced file-search-path `chr' for clarity and to enable running
    make check from the local environment instead of the public installation.
  * JW: mapped prolog flag generate_debug_info --> option(debug, on)
  * JW: Replaced the chr -> pl step with term_expansion/2.
  * JW: Moved insert_declarations/2 to chr_swi.pl

Apr 2, 2004

  * JW: fixed Undefined procedure: chr_runtime:run_suspensions_loop_d/1
  * TS: Added <space> for creep and shortened debug line prefix to CHR:

Mar 29, 2004

  * JW: Use \+ \+ in chr_compile/3 to undo changes to the constraint
    pool.  Regression test suite using "make check" works again.

Mar 25, 2004

  * TS: Added skip and ancestor debug commands

Mar 24, 2004
G
  * TS: Added bootstrapping process for CHR compiler using CHR.
  * TS: CHR compiler now uses CHR.
  * TS: Fixed bug in compilation of multi-headed simpagation rules.
  * TS: Cleaned up compiler.
  * TS: Added analysis + optimization for never attached constraints.
  * TS: Exploit uniqueness (functional dependency) results to detect
    set semantics type simpagation rules where one rule can be passive
  * TS: Compiler generates 'chr debug_event'/1 calls
  * TS: Rudimentary support for debugging.
    option(debug,on) causes a trace of CHR events to be printed

Mar 15, 2004

  * JW: Fix operator handling.

Mar 3, 2004

  * JW: Integrated new version from Tom Schrijvers.