* Performance Upgrades * Added BetaNode indexing * Abstracted out JoinNode to extend BetaNode (Prevents the checking of constraints if there are not any constraints to check) * Refactored BetaNetwork * Created a new Memory Class to encapusulate left and right memory for BetaNodes * Added new `exists` logic operator to check for existence of fact (opposite of `not`)
* Added support for js expression in the `from` node addressing issue [#86](#86) * Enhanced `JoinReferenceNode` performance in the default assert case where there are no `references` to left or right context. * Added ability to use `or` and `not` in tandem to check for the non-existence of multiple facts. [#85](#85) * Fixed issue with `from` node where an undefined property would be tested. [#89](#89) * You can now define a custom resolution strategy. * Compiling nools files now supports the from modifier. * Documentation updates * Updates about from node support with js values. * New documentation about using `or` and `not` constratints together. * Updated `or` documentation to include a three constraint example.
* Nools now supports true modify!!! * This is a major leap forward for `nools` opening the door for more complex actions and expressions in the rules. * Added support from for `from` conditions in the `rhs`. * Fixed issue [#81](#81). * Fixed issue [#82](#82). * Added new `sudoku` web example. * Added [Send More Money](http://en.wikipedia.org/wiki/Verbal_arithmetic) benchmark see [#78](#78).
* Fixed issue #68 where `matchUntilHalt` uses a lot of CPU * Fixed issue #45, now compiled rules support `or` constraint with more than 2 inner constraints. * Added new feature to address #76, now you can use `deleteFlows` to dispose all flows, or use `hasFlow` to check if a flow is already registred with `nools`.
* Fixed issue #73 where requires in dsl would treat a file with a `.` character as a path instead of a module.
* Fixed scoping issue where scoped variables defined in compile were not available to defined classes or functions.
* Fixed constraint parser to not evaluate functions that have the same name as operators as operators. * Fixed the `getMatcher` to properly return an equality expression for constraints that do not have an explicit equality * Added new diganosis example * Changed Fibonacci example to support larger number
* Added new agenda-group (#29) * More documentation * Salience * Agenda Groups * Auto-focus * Scope * Cleaned up agenda and made more modular
* Fixed memory leak with FactHashes for the agendas