What's Changed
- New Evaluator framework: By far the most significant change is the new way expressions are evaluated. The
Expression
class hierarchy no longer has anEval
method. Instead, evaluation is performed by classes implementingIEvaluator
which are responsible for the details of evaluation. There are currently two evaluator classes:BasicEvaluator
, which includes all of the straight-forward evaluation code previously emplyed by the expression classesCompilingEvaluator
, which converts an expression into a .NET dynamic method composed of CIL intsructions, and executes that
SolusEnvironment
has been re-worked to have a unified namespace. Variable names can now refer to a value, a function, or a macro; the different kinds of objects don't have separate namespaces. Commands have been separated from the environment completely. Environment objects also have a parent/child mechanism.- In line with the above, the parser has been cleaned up considerably. It no longer resolves variable or function names before returning an expression tree to the caller. Also, function calls and component accesses can now be intermixed.
- There is a new value and expression types to represent intervals
- The library now targets multiple .NET/dotnet framework versions, instead of just 4.0.
Merged PR's
- Intervals by @izrik in #27
- Evaluator by @izrik in #28
- Unified namespace by @izrik in #29
- Clean up parsing by @izrik in #30
- Evaluator 2 storage and aggregate ops by @izrik in #31
- Evaluator 3: Split the tests into separate files. by @izrik in #32
- Evaluator 4: Duplicate the tests for the new functions. by @izrik in #33
- Evaluator 5: more storage and aggregate op improvements by @izrik in #34
- Evaluator 6: clean up component access by @izrik in #35
- Evaluator 7: fold eval into evaluator by @izrik in #36
- Evaluator 8: fold functions into evaluator by @izrik in #37
- Evaluator 9: fold macros into evaluator by @izrik in #38
- Eval to fixed length vector by @izrik in #39
- Evaluator 10: re-org by @izrik in #40
- Evaluator 11: Compiling evaluator by @izrik in #41
- Evaluator 12: IlExpression by @izrik in #42
- Evaluator 13: Nascent Method by @izrik in #43
- Evaluator 14: Clean up instructions by @izrik in #45
- Evaluator 15: Branching by @izrik in #46
- Evaluator 16: Locals and Params by @izrik in #47
- Evaluator 17: Tests by @izrik in #48
- Evaluator 18: Expression checker by @izrik in #49
- Evaluator 19: More expression checking by @izrik in #50
- Evaluator 20: Component access for tensors by @izrik in #51
- Evaluator 21: tensor expressions by @izrik in #52
- Evaluator 22: Function arg checks by @izrik in #53
- Evaluator 23: Component access for strings by @izrik in #54
- Evaluator 24: Re-org by @izrik in #55
- Evaluator 25: moar functions by @izrik in #56
- Evaluator 26: Re-work how variables are used by @izrik in #57
- Evaluator 27: clean up by @izrik in #58
- Evaluator 28: User-defined functions by @izrik in #59
- Evaluator 29: Intervals and misc fixes by @izrik in #60
- Disable CI by @izrik in #61
- Dotnet by @izrik in #62
- Update dotnet.yml by @izrik in #44
- Prep release by @izrik in #63
Full Changelog: v0.8...v0.9