@@ -8,6 +8,145 @@ and this project adheres to
8
8
9
9
## [ Unreleased]
10
10
11
+ ## [ 0.2.12] ( https://github.com/rust-lang/libm/compare/libm-v0.2.11...libm-v0.2.12 ) - 2025-04-09
12
+
13
+ ### Other
14
+
15
+ - Add assembly version of simple operations on aarch64
16
+ - Resolve small errors identified by recent clippy
17
+ - Replace calls to ` core::arch ` intrinsics with assembly
18
+ - Upgrade all dependencies to the latest
19
+ - Gate another assertion behind ` compiler-builtins `
20
+ - Configure out remaining formatting when ` compiler-builtins ` is set
21
+ - Ignore unused variables when ` compiler-builtins ` is set
22
+ - Resolve monomorphization errors in ` compiler-builtins `
23
+ - Make the compiler-builtins test more accurately mirror compiler-builtins
24
+ - Use ` git ls-files ` rather than manually globbing for tidy
25
+ - Make ` fma ` a trait method on ` Float `
26
+ - fma refactor 3/3: combine ` fma ` public API with its implementation
27
+ - fma refactor 2/3: move math/generic/fma.rs to math/fma.rs
28
+ - Rename ` Float::exp ` to ` Float::ex `
29
+ - Add ` roundeven{,f,f16,f128} `
30
+ - Add ` fminimum ` , ` fmaximum ` , ` fminimum_num ` , and ` fmaximum_num `
31
+ - Combine ` fmin{,f,f16,f128} ` and ` fmax{,f,f16,128} ` into a single file
32
+ - Small refactor of bigint tests
33
+ - Eliminate the use of ` force_eval! ` in ` ceil ` , ` floor ` , and ` trunc `
34
+ - Migrate away from nonfunctional ` fenv ` stubs
35
+ - Introduce a trait constant for the minimum positive normal value
36
+ - Implement ` u256 ` with two ` u128 ` s rather than ` u64 `
37
+ - Replace an ` assert! ` with ` debug_assert! ` in ` u256::shr `
38
+ - Add simple icount benchmarks for ` u256 ` operations
39
+ - Port the CORE-MATH version of ` cbrt `
40
+ - Add an enum representation of rounding mode
41
+ - Uncomment some hex float tests that should work now
42
+ - Convert ` fmaf ` to a generic implementation
43
+ - Remove or reduce the scope of ` allow(unused) ` where possible
44
+ - fix exponent calculation for subnormals
45
+ - Add better edge case testing for ` scalbn `
46
+ - Add ` fmaf128 `
47
+ - Make it possible to use ` hf32! ` and similar macros outside of ` libm `
48
+ - Improve tidy output
49
+ - Ensure zero has the correct sign
50
+ - Start converting ` fma ` to a generic function
51
+ - Add checks via annotation that lists are sorted or exhaustive
52
+ - Do not add ` libm_helper.rs ` to the sources list
53
+ - Add ` scalbnf16 ` , ` scalbnf128 ` , ` ldexpf16 ` , and ` ldexpf128 `
54
+ - Fix hex float trait recursion problem
55
+ - Rename ` EXP_MAX ` to ` EXP_SAT `
56
+ - Specify license as just MIT
57
+ - Introduce a wrapper type for IEEE hex float formatting
58
+ - Support parsing NaN and infinities from the ` hf* ` functions
59
+ - Switch musl from a script download to a submodule
60
+ - Ignore specific ` atan2 ` and ` sin ` tests on i586
61
+ - Rework the available Cargo profiles
62
+ - Remove remnants of the ` checked ` feature
63
+ - Upgrade all dependencies to the latest version
64
+ - Add ` fmodf128 `
65
+ - Add ` fmodf16 ` using the generic implementation
66
+ - Add a generic version of ` fmod `
67
+ - Add ` fminf16 ` , ` fmaxf16 ` , ` fminf128 ` , and ` fmaxf128 `
68
+ - Add a generic version of ` fmin ` and ` fmax `
69
+ - Add ` roundf16 ` and ` roundf128 `
70
+ - Add a generic version of ` round `
71
+ - Add a generic version of ` scalbn `
72
+ - Change ` from_parts ` to take a ` u32 ` exponent rather than ` i32 `
73
+ - Add ` hf16! ` and ` hf128! `
74
+ - Add ` rintf16 ` and ` rintf128 `
75
+ - Add a generic version of ` rint `
76
+ - Adjust ` ceil ` style to be more similar to ` floor `
77
+ - Add ` floorf16 ` and ` floorf128 `
78
+ - Add a generic version of ` floor `
79
+ - Add ` ceilf16 ` and ` ceilf128 `
80
+ - Add a generic version of ` ceil `
81
+ - Make ` Float::exp ` return an unsigned integer
82
+ - Shift then mask, rather than mask then shift
83
+ - Add ` sqrtf16 ` and ` sqrtf128 `
84
+ - Copy the u256 implementation from compiler_builtins
85
+ - Port the most recent version of Musl's ` sqrt ` as a generic algorithm
86
+ - Ignore files relevant to benchmarking
87
+ - Add benchmarks using iai-callgrind
88
+ - Adjust precision and add xfails based on new tests
89
+ - Simplify and optimize ` fdim ` ([ #442 ] ( https://github.com/rust-lang/libm/pull/442 ) )
90
+ - Don't set ` codegen-units=1 ` by default in CI
91
+ - Add ` fdimf16 ` and ` fdimf128 `
92
+ - Add a generic version of ` fdim `
93
+ - Add ` truncf16 ` and ` truncf128 `
94
+ - Add a generic version of ` trunc `
95
+ - Add a utility crate for quick evaluation
96
+ - Enable ` build-mpfr ` and ` build-musl ` by default
97
+ - Rename the ` test-multiprecision ` feature to ` build-mpfr `
98
+ - Introduce arch::aarch64 and use it for rint{,f}
99
+ - Use wasm32 arch intrinsics for rint{,f}
100
+ - Expose C versions of ` libm ` functions in the ` cb ` crate
101
+ - Add ` biteq ` and ` exp_unbiased ` to ` Float `
102
+ - Add a ` release-checked ` profile with debug and overflow assertions
103
+ - Remove ` ExpInt ` from ` Float ` , always use ` i32 ` instead
104
+ - Split ` cast ` into ` cast ` and ` cast_lossy `
105
+ - Use ` core::arch::wasm ` functions rather than intrinsics
106
+ - Account for optimization levels other than numbers
107
+ - Replace "intrinsic" config with "arch" config
108
+ - Don't use intrinsics abs for ` f16 ` and ` f128 ` on wasm32
109
+ - Remove an unused ` feature = "force-soft-floats" ` gate
110
+ - Switch from using ` unstable-intrinsics ` to ` intrinsics_enabled `
111
+ - Add test infrastructure for ` f16 ` and ` f128 `
112
+ - Add ` fabsf16 ` , ` fabsf128 ` , ` copysignf16 ` , and ` copysignf128 `
113
+ - Enable ` f16 ` and ` f128 ` when creating the API change list
114
+ - Add more detailed definition output for ` update-api-list.py `
115
+ - Rename ` unstable-test-support ` to ` unstable-public-internals `
116
+ - Add a way for tests to log to a file
117
+ - Use intrinsics for ` abs ` and ` copysign ` when available
118
+ - Rename generic ` abs ` to ` fabs `
119
+ - Use ` rustdoc ` output to create a list of public API
120
+ - Remove an ` is_nan ` workaround that is no longer needed
121
+ - Update and slightly refactor some of the ` Float ` trait
122
+ - Add ` f16 ` and ` f128 ` configuration from ` compiler-builtins `
123
+ - Introduce generic ` abs ` and ` copysign `
124
+ - Fix new ` clippy::precedence ` lints
125
+ - Introduce helper types for accessing trait items
126
+ - Fix a bug in ` abs_diff `
127
+ - Remove tests against system musl
128
+ - Use ` https: ` links in ` README.md `
129
+ - Move some numeric trait logic to default implementations
130
+ - Resolve clippy errors in ` libm ` tests and check this in CI
131
+ - Add some more basic docstrings ([ #352 ] ( https://github.com/rust-lang/libm/pull/352 ) )
132
+ - Introduce ` hf32! ` and ` hf64! ` macros for hex float support
133
+ - Fix errors reported by Clippy in ` libm `
134
+ - Expose the ` support ` module publicly with a test feature
135
+ - Update libm ` Float ` and ` Int ` with functions from the test traits
136
+ - Change prefixes used by the ` Float ` trait
137
+ - Remove ` libm-bench `
138
+ - Rename ` canonical_name ` to ` base_name `
139
+ - Add float and integer traits from compiler-builtins
140
+ - Move architecture-specific code to ` src/math/arch `
141
+ - Update ` select_implementation ` to accept arch configuration
142
+ - Add an "arch" Cargo feature that is on by default
143
+ - Vendor ` cfg_if::cfg_if! `
144
+ - Make use of ` select_implementation `
145
+ - Introduce a ` select_implementation ` macro
146
+ - Introduce ` math::arch::intrinsics `
147
+ - Replace ` feature = "unstable-intrinsics" ` with ` intrinsics_enabled `
148
+ - Move the existing "unstable" feature to "unstable-intrinsics"
149
+
11
150
## [ 0.2.11] ( https://github.com/rust-lang/libm/compare/libm-v0.2.10...libm-v0.2.11 ) - 2024-10-28
12
151
13
152
### Fixed
0 commit comments