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