Skip to content

Multiversion 0.7.0

Choose a tag to compare

@calebzulawski calebzulawski released this 10 Dec 01:15
· 30 commits to master since this release

Changed

  • The multiversion macro has been overhauled. Now uses a single attribute macro, rather than helper attributes.
  • Increased minimum required Rust version to 1.61.0.

Added

  • The function dispatch method is now selectable, between direct or indirect dispatch, as well as compile-time static dispatch.
  • Added a variety of macros in the multiversion::target module for querying the selected target features.
  • Targets can now be specified by CPU (e.g. x86-64-v2 or skylake).
  • Added option to pass attributes to clones.
  • Added special targets = "simd" option to automatically target all SIMD instruction sets.

Removed

  • Removed the specialize mode. All targets now specify clones. Specialization should be implemented by querying the selected targets.
  • Removed support for functions that reference self or Self. Previous support was inconsistent and difficult to use correctly.

Fixed

  • Fixed broken impl Trait support. Using impl Trait in return position now results in an error.
  • Dispatch is now bypassed in scenarios where no targets are specified for the target architecture, or if the first matching target features are known to exist at compile time.
  • Improved performance of direct dispatch.
  • Avoid indirect dispatch in some situations, such as when using retpolines