Skip to content

v0.3.0

Pre-release
Pre-release

Choose a tag to compare

@mkeeter mkeeter released this 29 May 12:26
· 301 commits to main since this release
61d2d5d
  • Major refactoring of core evaluation traits
    • The lowest-level "thing that can be evaluated" trait has changed from Shape (taking (x, y, z) inputs) to Function (taking an arbitrary number of variables).
    • Shape is now a wrapper around a F: Function instead of a trait.
    • Shape evaluators are now wrappers around E: BulkEvaluator or E: TracingEvaluator, which convert (x, y, z) arguments into list-of-variables arguments.
    • Using the VmShape or JitShape types should be mostly the same as before; changes are most noticeable if you're writing things that are generic across S: Shape.
  • Major refactoring of how variables are handled
    • Removed VarNode; the canonical variable type is Var, which is its own unique index.
    • Removed named variables, to make Var trivially Copy + Clone.
    • Added vars() method to Function trait, allowing users to look up the mapping from variable to evaluation index. A Var now represents a persistent identity from Tree to Context to Function evaluation.
    • Move Var and VarMap into fidget::vars module, because they're no longer specific to a Context.
    • Op::Input now takes a u32 argument, instead of a u8
  • Fixed a bug in the AArch64 JIT would which could corrupt certain registers during interval evaluation.