This is a history of changes to concrete-rules.
- Project Renamed: Rebranded from
clara-rules to concrete-rules. - Namespace Migration: Renamed all namespaces from
clara.* to metasimple.concrete.*. - ClojureScript Removal: Dropped support for ClojureScript. The project is now JVM-only.
- Identity Update: Updated artifact group ID to
org.metasimple. - Clean Fork: Established as a sovereign fork based on the original Clara Rules project.
Historical changes below refer to the original clara-rules project.
- uplift to cljs 1.11.132
- uplift to clj 1.11.2
- remove atom usage in LHS functions
- remove redundant TestNode evaluations
- extract clara.rules.compiler/compile-test-handler from clara.rules.compiler/compile-test
- add support for
env inside of test expressions - use
.clj_kondo extension for clj-kondo hook code for better tool compatibility (clj-kondo support now requires clj-kondo 2022.04.25 or higher) - Include the invalid constraint in the exception thrown at session compilation time when negations have multiple children. See Issue 284.
- fix incorrent lint warning triggered when this binding is not used in clj-kondo hooks
- add built-in clj-kondo support for clara-rules as hooks. Importing should be automatic if using clojure-lsp; for detailed instructions see clj-kondo's documentation on how to import clj-kondo configuration
- use correct arity calling
->RuleOrderedActivation constructor during serialization if clara session; this change should have the same effective behavior as before.
- Try and catch TestNode expression evaluation so that exceptions thrown are re-thrown wrapped in a condition exception which includes production name and bindings information. See PR 471.
- Add support to specify query binding arguments as symbols instead of only keywords so that defquery syntax looks closer to function definition syntax. See PR 463.
- Add names to anonymous functions generated by rule compilation; these names will be in the class names of the generated objects. Issue 261 and issue 291
- Add types information to alpha nodes. Issue 237
- Fix a bug related to Java object facts with IndexedPropertyDescriptor fields. Issue 446
- Validate that parameters provided to queries exist on the query at compilation and throw an exception if queries on a session don't specify the required parameters. Issue 454
- Add an optional listener that reports suspected infinite loops of rules. Issue 275
- Add a flag to omit compilation context (used by the durability layer) after Session compilation to save space when not needed. Defaults to true. issue 422
- Correct duplicate bindings within the same condition. See issue 417
- Correct sharing of nodes with different parents. See issue 433
- Added a new field to the clara.rules.engine/Accumulator record. This could be a breaking change for any user durability implementations with low-level performance optimizations. See PR 410 for details.
- Performance improvements for :exists conditions. See issue 298.
- Decrease memory usage post deserialization (Durability). See Issue 419
- Added a new function that returns the number of times a rule was interacted with as a proxy for rules that may be the cause of performance problems. This function requires information from the tracing listener to work. See issue 344 for details.
- Remove a warning about
qualified-keyword? being replaced when using Clojure 1.9.
Can you improve this documentation? These fine people already did:
Ryan Brush, William Parker, Ethan Christian, Jose Gomez, Dave Dixon, Baptiste Fontaine, mrrodriguez, Alex Dixon, David Goeke & Imre KószóEdit on GitHub