Skip to content

Releases: metaindu/MetaphysicsIndustries.Solus

Evaluators

13 Dec 04:58
c21b0e2
Compare
Choose a tag to compare

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 an Eval method. Instead, evaluation is performed by classes implementing IEvaluator which are responsible for the details of evaluation. There are currently two evaluator classes:
    1. BasicEvaluator, which includes all of the straight-forward evaluation code previously emplyed by the expression classes
    2. CompilingEvaluator, 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

Interrogation and performance improvements

13 Nov 00:03
90becea
Compare
Choose a tag to compare

This release adds a new feature to interrogation. Interrogees can now return null to any question, which indicates that the answer is unknown, not applicable, or in some other way not available. For example, calling GetDimension on a scalar wouldn't make sense, so that will now return null. This release also includes a few minor improvements to memory usage, in an effort to reduce the number of memory allocations during evaluation.

What's Changed

Full Changelog: v0.7...v0.8

Expression and function interrogation

05 Nov 21:12
c2dcb4d
Compare
Choose a tag to compare

The release adds initial support for interrogation, the ability to discover information about a particular object without having to evaluate anything. The goal is to be able to make assertions about an object, such as what kind of object it is (number, vector, string, etc), what properties it has (tensor rank, dimensions, "is divisable by"). This would be very useful in making "type assertions" or "property" assertions about the arguments to a function, for example.

Vector and Matrix evaluation

05 Nov 21:05
ba252e1
Compare
Choose a tag to compare

This release adds proper implementations for the VectorExpression.Eval and MatrixExpression.Eval methods, so that they return non-scalar values.

Re-work commands and environment

18 Oct 22:08
15cabbd
Compare
Choose a tag to compare

This release makes changers to the internal API. The changes will be visible to assemblies that consume MetaphysicsIndustries.Solus as a dependency, but do not affect users of soluscli. In particular, commands are separated from the SolusEnvironment, as they don't typically change over time. Also, command objects are no longer instantiated by the parser; the parser instead instantiates data objects that are then passed to the command objects. The SolusEnvironment class has been redesigned so as to be more usable to inheriting classes.

Math object, redo

01 Sep 17:02
bc34c47
Compare
Choose a tag to compare

The previous release had a problem when uploading to nuget.org. This is a re-release of that one.

This release adds support for evaluating expression that result in things other than scalar numbers. In particular, support has been added for strings, vectors, and matrices, including syntax for specifying literal (x := [1,2,3]) and accessing components (x[2]). This release includes a new load_image function that reads an image from disk and treats it as a matrix. This release also includes a lot of testing and some improved error handling.

Math object, etc

01 Sep 16:47
0020b13
Compare
Choose a tag to compare

This release adds support for evaluating expression that result in things other than scalar numbers. In particular, support has been added for strings, vectors, and matrices, including syntax for specifying literal (x := [1,2,3]) and accessing components (x[2]). This release includes a new load_image function that reads an image from disk and treats it as a matrix. This release also includes a lot of testing and some improved error handling.

Commands

19 Jul 19:57
295e9d3
Compare
Choose a tag to compare

This release introduces the ability in the repl to execute commands. In the previous version, the repl would only evaluate expressions. The new changes allow the repl to run help, vars, and delete commands, as well as assign variables and functions using a := operator. There were some macros for managing variables, called assign and delete. Those still work, but the new mechanisms are a bit more flexible.

Initial release

16 Jul 18:36
75884d1
Compare
Choose a tag to compare

This is the first official release. Of note, recent improvements include a change of license, use of nuget packages for dependencies, and early support for handling strings.