Klein v2.0 Release Notes

Release Date: 2020-03-04 // about 1 year ago
  • ๐Ÿ†• New semantic release due to breaking compatibility.

    • ๐Ÿšš Entity type has been removed due to compiler inability to properly
      constant-fold interior expressions.
    • Operators have been promoted to first-order types.
    • A number of operators have been specialized for various types for
      ๐Ÿ‘Œ improved throughput/latency.
    • โšก๏ธ Perf analysis has been updated.
    • Motors can now be constructed from a screw axis, angle, and
      displacement.
    • A preliminary dual number type as been added.
    • ๐ŸŒฒ The exp/log methods have been promoted to free functions and now have
      strongly typed return values.
    • The project function has been added to simplify various projections.

    ๐Ÿ‘ Some operations that were previously permitted are no longer supported due to a fully general underlying "multivector" class (formerly known as entity<PMask>). Operation overloads are now added individually. This enables another class of optimizations because type safety ensures that certain components of SSE registers are exactly 0.

    Summarizing:

    • Compile times reduced due to very minimal usage of templates and constexpr branches
    • Speed improvements in most situations
    • Increased type safety in a number of situations