NRules Versions Save

Rules engine for .NET, based on the Rete matching algorithm, with internal DSL in C#.

v0.9.4

4 months ago

NuGet: https://www.nuget.org/packages/NRules/0.9.4

  • #293, #309, #311 - Adds support for Visual Studio 2022, modernizes the codebase using latest C# language features, targets .net 6 in tests, switches to the new .net SDK
  • #296 - Fixes debugger visualizer to stop using deprecated serialization code
  • #307, #322 - Adds support for null keys in the SortedAggregator
  • #298, #321 - Adds support for JSON serialization of Block and Assign expressions
  • #327 - Fixes the usage of custom expression compiler, where some expressions were always compiled with the default compiler
  • #338 - Fixes batched propagation of linked forward-chained facts, so that all queued groups of facts are batched, not just the first one
  • #340 - Fixes a bug in the node sharing logic when building Rete network
  • #103, #314, #341 - Adds NRules.Testing project to facilitate rules unit testing
  • #332 - Adds debug symbols and SourceLink to assemblies and nuget packages to provide improved debugging experience
  • #240, #343 - Migrates wiki and API documentation inside the repo, so that the documentation is developed and managed through the same process as code. Drops Sandcastle as a documentation generator and switches to DocFX. Publishes documentation to nrules.net
  • #315, #318 - Cleans up and refactors the codebase
  • #342 - Adds support for running build on MacOS, in addition to Windows (debugger visualizer not supported). As part of this, drops .net framework from unit test targets, and adds .net 8 target

v0.9.3

2 years ago

NuGet: https://www.nuget.org/packages/NRules/0.9.3

  • #175, #288 - Adds support for keyed lookup (dictionary) aggregator as part of the Collect query
  • #260 - Fixes expression comparison for node sharing, in a situation when comparing collections of different sizes
  • #269 - Fixes Autofac DI container integration to support lifetime scope dependencies
  • #279 - Fixes Having clause when it only depends on a single fact, and that fact is not from the last pattern
  • #282 - Adds fallback compilation option for expressions not supported by ExpressionComparer for node sharing
  • #289 - Fixes a memory leak in FlatteningAggregator (SelectMany)
  • #284 - Adds a rule definition serialization capability to/from JSON
  • #283 - Adds support for ternary expression comparison

v0.9.2

3 years ago

NuGet: https://www.nuget.org/packages/NRules/0.9.2

NOTE: NRules no longer targets .NET Standard 1.0 and .NET Framework 4.5. It now targets .NET Standard 2.0 and .NET Standard 2.1 (see .NET Standard compatibility chart)

  • #192, #194 - Fixes debugger visualizer, so that it works with Visual Studio 2019. Also extends debugger visualizer support to all .NET Standard compatible client apps.
  • #246 - Fixes expression comparison for node sharing to take into account parameter positions. This prevents erroneous node sharing when a rule has more than one match for facts of the same type.
  • #247 - Fixes fact retraction with GroupBy and Collect queries, which could lead to an intermittent empty grouping.
  • #248 - Fixes a bug with NRules.Integration.Autofac where additional settings applied to RegisterRuleRepository via fluent configuration were not applied to the underlying RuleRepository.
  • #249 - Reduces memory footprint of an NRules session.
  • #250 - Upgrades the target framework from .NET Standard 1.0, .NET Standard 2.0 and .NET Framework 4.5 to .NET Standard 2.0 and .NET Standard 2.1.
  • #251, #169 - Exposes rete schema and performance metrics from the rules session (via session.GetSchema() and session.Metrics). Also integrates performance metrics with the debugger visualizer and enables rete graph visualization in DGML format via DgmlWriter.
  • #254 - Exposes an extensibility point to customize lambda expression compilation (via IExpressionCompiler), which enables custom expression compilers, such as FastExpressionCompiler.

v0.9.1

3 years ago

NuGet: https://www.nuget.org/packages/NRules/0.9.1

NOTE: This is the last release to target .NET Standard 1.0 and .NET Framework 4.5.

  • #198 - Fixes a bug where if Yield throws during the first invocation, subsequent rule invocations also fail.
  • #212 - Adds support for class initializers and list initializers in rules expressions.
  • #214 - Allows callers to specify batch behavior for bulk insert, update and retract operations. It is now possible to instruct the engine to skip facts that failed during the working memory lookup, and still apply the operation to those that succeeded.
  • #220 - Fixes a bug where match statements that used an OR clause and did not bind to a variable, caused an exception during rule compilation.
  • #221, #223 - Adds support for CancellationToken in rule compilation and rule execution.
  • #224 - Improves performance and efficiency of aggregations where multiple prior matches join to the same aggregation. In these scenarios the aggregation used to be recalculated for each prior match, but now is only calculated once. This also improves the performance and efficiency of queries where the queries don't depend on prior matches.
  • #227 - Improves performance of condition/action evaluation by eliminating transient allocations.
  • #231 - Fixes a bug where GroupBy aggregator causes a KeyNotFoundException when a group is removed and immediately re-added.
  • #238 - Adds support for Autofac 4.0.0+ to the NRules.Integration.Autofac.
  • #239 - Fixes a bug in expression comparison when using member access on the results of a binary operation.
  • #241 - Adds support for batched propagation of linked facts, which helps with improving performance of forward chaining.
  • #243 - Fixes a bug where a rule without an update action leads to not invoking the undo action.

v0.9.0

5 years ago

NuGet: https://www.nuget.org/packages/NRules/0.9.0

  • #81, #158 - Adds support for matching objects outside of the engine's working memory (via the From clause)
  • #146 - Adds support for tracking of fact lineage from aggregate/linked facts to the original facts in the engine's working memory
  • #149 - Adds validation to fail update/retract directly called on linked facts
  • #152 - Exposes events for when expressions are evaluated or fail to evaluate on rules's LHS, RHS or agenda
  • #154 - Fixes OnChange filter where it fails to filter out updates with no effective change
  • #157 - Fixes a bug with retraction of linked facts where the fact was yielded by the same rule
  • #161 - Adds support for separate action expressions for different action triggers (rule activated, re-activated or deactivated)
  • #170 - Enhances rule model (AST) to express dependencies between rule elements
  • #171, #176, #177 - Adds sorted collection aggregator
  • #180 - Fixes a bug with handling of transitive linked facts
  • #185 - Adds support for bulk operations on linked facts in rule actions
  • #187 - Adds support for custom tag attributes as a DSL extensibility point

v0.8.4

6 years ago

NuGet: https://www.nuget.org/packages/NRules/0.8.4

  • #147 Fixes sporadic KeyNotFoundException during fact retraction

v0.8.2

6 years ago

NuGet: https://www.nuget.org/packages/NRules/0.8.2

  • #139 Expose construction of NRules.Diagnostics events, so that they can be stubbed in unit tests
  • #142 Add support for method invocation after type conversion in rule expressions
  • #143 Target NET Standard 2.0 (in addition to .NET Framework 4.5 and NET Standard 1.0)

v0.8.1

6 years ago

NuGet: https://www.nuget.org/packages/NRules/0.8.1

  • #138 Fix re-evaluation of aggregate expressions when those expressions reference let bindings.
  • #137 Add support for Autofac 3.3.1+ for NRules Autofac integration package.

v0.8.0

6 years ago

NuGet: https://www.nuget.org/packages/NRules/0.8.0

  • #99 - Added support for agenda filters that test rule activations to determine whether they should be added to the agenda or not.
  • #105 - Added error handling for aggregate expressions, binding expressions and agenda filters via events.
  • #126 - Added ability to maintain lineage between forward chained facts and their generating rule (linked facts). This automatically retracts linked forward-chained facts if the rule that produced them no longer matches corresponding facts.
  • #129 - Added ability to filter rule updates to only trigger if a given set of keys changed. This feature is built on top of agenda filters - #99

v0.7.2

6 years ago

NuGet: https://www.nuget.org/packages/NRules/0.7.2

  • #130 - Fixed defect when updates were not propagated in some scenarios
  • #131, #132 - Fixed defect when a rule would fail to compile if action used an expression with a non-void result