multiversion-macros
Implementation crate for multiversion
0.8.0
14M downloads/mo
#2592 most downloaded on crates.io
calebzulawski/multiversion
What this package is like to depend on
Last release 2 years ago
no release in 18 months
Release timing varies
gaps range from 2 weeks to 2.3 years
Nearly every release is documented
notes for 8 of 8 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
8 releases · first in 2020
0 releases in the last 12 months
see the full history below
Release timeline
8 releases · Jul 2020 to Dec 2024
2021
2022
2023
2024
2025
2026
Releases
latest 8-
0.8.008 Dec 2024Release notes
Open source →Changed
- Upgraded to syn 2. This shouldn't break compatibility with the 0.7 releases, but there might be minor differences.
Fixed
- Read retpoline target features from command line flags because they're LLVM features, not Rust features.
-
0.7.415 Mar 2024 -
0.7.310 Aug 2023 -
0.7.210 May 2023Release notes
Open source →Fixed
- Added workaround for documentation bug (https://github.com/rust-lang/rust/issues/111415)
-
0.7.123 Dec 2022 -
0.7.010 Dec 2022Release notes
Open source →Changed
- The
multiversionmacro 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::targetmodule for querying the selected target features. - Targets can now be specified by CPU (e.g.
x86-64-v2orskylake). - Added option to pass attributes to clones.
- Added special
targets = "simd"option to automatically target all SIMD instruction sets.
Removed
- Removed the
specializemode. All targets now specify clones. Specialization should be implemented by querying the selected targets. - Removed support for functions that reference
selforSelf. Previous support was inconsistent and difficult to use correctly.
Fixed
- Fixed broken
impl Traitsupport. Usingimpl Traitin 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
Release notes
Open source →Changed
- The
multiversionmacro 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::targetmodule for querying the selected target features. - Targets can now be specified by CPU (e.g.
x86-64-v2orskylake). - Added option to pass attributes to clones.
- Added special
targets = "simd"option to automatically target all SIMD instruction sets.
Removed
- Removed the
specializemode. All targets now specify clones. Specialization should be implemented by querying the selected targets. - Removed support for functions that reference
selforSelf. Previous support was inconsistent and difficult to use correctly.
Fixed
- Fixed broken
impl Traitsupport. Usingimpl Traitin 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
- The
-
0.6.118 Aug 2020 -
0.1.014 Jul 2020