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