3 * TS: Minor optimizations for (-) arguments.
5 * TS: Important optimization for awakening fewer suspended constraints
9 * TS: Fixed typo in static type checker.
11 * TS: Documented static and dynamic type checking.
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.
23 * TS: New (limited) compile time type checking of rule heads.
27 * TS: New experimental robustness feature in debug mode:
28 runtime type checking of CHR constraints.
32 * TS: Minor bug fixes.
36 * TS: Improved performance of ai_observation_analysis,
37 mainly via additional tabling and passive declarations.
41 * TS: Disabled some code only intended for SICStus.
43 * TS: Fixed bug in removal of constraints. Spotted by Leslie De Koninck.
47 * TS: Next fix to tracer. Cconstraints in propagation
48 rules are shown in textual order.
52 * TS: Next few fixes to tracer. Constraints in simpagation rules
53 are now shown on the right side of the backslash.
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
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.
75 * TS: Ignore propagation rules with trivial body 'true'.
79 * TS: Guard entailment now first simplifies the formula it processes,
80 in order to reduce the number of disjunctions, to obtain a smaller
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 _.
95 * JW: Make library(chr) load its private stuff silent.
99 * TS: Bug fix: too many guards were locked.
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.
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.
136 * TS: Renamed global variable id to chr_id in chr_runtime.pl.
139 * JS: Synchronization with experimental version:
140 - minor optimizations, e.g. efficient lookups with statically known
142 - new alternative syntax for passive declarations
143 - new dense_int built-in type + underlying store
144 - new type alias definitions, like in Mercury
147 * BD: small changes in chr_compiler_options.pl and chr_translate.chr
148 affecting only the SICStus port
151 * BD: lots of changes related to porting to SICStus
152 * TS: Now exception/3 hook is only used in SWI-Prolog
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.
162 * JW: Fix "make check" path issues.
163 * TS: Removed all is_chr_file tests when loading file.
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.
174 * BD: chr_swi.pl - use_module(hprolog added for SICStus port
175 * TS: Removed operator declaration for '::'. No longer used.
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.
188 * TS: warnings are now written to user_error stream.
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
196 * TR: Revised documentation.
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
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)
217 make_init_store_goal etc. introduced
218 create_get_mutable_ref wherever needed (chr_translate*)
222 * BD: chr_runtime.pl:
224 included contents of chr_debug.pl
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'
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:
248 * BD: hprolog.pl: removed strip_attributes/2 and restore_attributes/2
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)
264 * TS: Further synchronization with hProlog.
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
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
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.
292 * TS: Two more bug fixes for constraints without
293 active occurrences that trigger.
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.
305 * TS: Removed strip_attributes code.
306 * TS: Fixed bug that causes new constraints to be added on triggering.
310 * TS: Two minor bug fixes.
314 * TS: Fixed bug due to overly aggressive inlining of get_mutable_value.
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
326 * TS: Synchronized with hProlog.
330 * TS: Added missing operator declarations for prefix (?).
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
343 * TS: Renamed pairlist:delete/3 to pairlist:pairlist_delete/3.
347 * TS: Extended more efficient ground matching code to
348 removed simpagation occurrence code.
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
357 * JS: Bug fix in guard simplification.
361 * TS: Factored out option functionality into separate module.
362 * TS: Factored out utility code into separate module.
366 * TS: Changed chr_show_store/1 to use print/1 instead of write/1.
370 * TS: Removed spurious and conflicting operator definitions
371 for +, - and ? as mode declarations.
375 * TS: Added find_chr_constraint/1 functionality.
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.
386 * TS: Added option to disable toplevel constraint store printing.
387 * TS: Slightly improved hash table constraint store implementation.
391 * JW: Added patch from Jon Sneyers.
395 * TS: Improved head reordering heuristic.
396 * TS: Added support primitive for alternate built-in solver dependency.
400 * TS: Fixed bug that causes wrong output in chr_show_store.
404 * TS: Fixed several bugs in generation of debugable code.
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
417 - Added dummy option declarations to bootstrap compiler.
418 - Fixed path problems in makefile (-p chr=.) and install new
420 - Fixed typo 'chr show_store' --> chr_show_store.
424 * JS: Added guard entailment optimizations and
425 new syntax for type and mode declarations.
429 * TS: Use prolog:message/3 hook to automatically print
430 contents of CHR constraint stores with query bindings
435 * TS: Bugfix in code generation. Reported by Lyosha Ilyukhin.
439 * TS: Updated hashtable stores. They now start small and expand.
443 * JW: Removed chr_pp: module prefixes
444 * JW: Updated Windows makefile.mak (more similar organisation, added check)
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
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."
467 * JW: Added chr_messages.pl. Make all debug messages use the print_message/2
468 interface to enable future embedding.
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.
479 * JW: Added b (break) to the CHR debugger.
480 * TS: added chr_expandable/2 clause for pragma/2
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
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
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:
505 * JW: Use \+ \+ in chr_compile/3 to undo changes to the constraint
506 pool. Regression test suite using "make check" works again.
510 * TS: Added skip and ancestor debug commands
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
527 * JW: Fix operator handling.
531 * JW: Integrated new version from Tom Schrijvers.