@@ -8,6 +8,296 @@ and this project adheres to
8
8
9
9
## [ Unreleased]
10
10
11
+ ## [ 0.2.12] ( https://github.com/rust-lang/compiler-builtins/compare/libm-v0.2.11...libm-v0.2.12 ) - 2025-04-20
12
+
13
+ ### Other
14
+
15
+ - Run ` cargo fmt ` on all projects
16
+ - Add a .rustfmt.toml with style edition 2024
17
+ - Flatten the ` libm/libm ` directory
18
+ - Reorganize into compiler-builtins
19
+ - Remove compiler-builtins-smoke-test
20
+ - Update .git-blame-ignore-revs after the libm merge
21
+ - Update submodules after the ` libm ` merge
22
+ - Migrate all crates except ` libm ` to edition 2024
23
+ - Introduce a virtual manifest
24
+ - Move the ` libm ` crate to a subdirectory
25
+ - Mark generic functions ` #[inline] `
26
+ - Combine the source files for ` fmod `
27
+ - Ensure all public functions are marked ` no_panic `
28
+ - Account for ` PR_NUMBER ` being set to an empty string
29
+ - Ensure configure.rs changes trigger rebuilds
30
+ - Increase the timeout for extensive tests
31
+ - Require ` ci: allow-many-extensive ` if a threshold is exceeded
32
+ - Allow skipping extensive tests with ` ci: skip-extensive `
33
+ - Cancel jobs when a new push happens
34
+ - Combine the source files for more generic implementations
35
+ - Make ` assert_biteq! ` not rely on having ` Int ` in scope
36
+ - Add ` NEG_NAN ` to ` Float `
37
+ - Correct the normalization of subnormals
38
+ - Add regression tests for subnormal issue
39
+ - Implement rounding for the hex float parsing and prepare to improve error handling
40
+ - Add assembly version of simple operations on aarch64
41
+ - Resolve small errors identified by recent clippy
42
+ - Replace calls to ` core::arch ` intrinsics with assembly
43
+ - Upgrade all dependencies to the latest
44
+ - Gate another assertion behind ` compiler-builtins `
45
+ - Configure out remaining formatting when ` compiler-builtins ` is set
46
+ - Ignore unused variables when ` compiler-builtins ` is set
47
+ - Resolve monomorphization errors in ` compiler-builtins `
48
+ - Make the compiler-builtins test more accurately mirror compiler-builtins
49
+ - Pin the nightly toolchain for aarch64 jobs
50
+ - Use ` git ls-files ` rather than manually globbing for tidy
51
+ - Make ` fma ` a trait method on ` Float `
52
+ - fma refactor 3/3: combine ` fma ` public API with its implementation
53
+ - fma refactor 2/3: move math/generic/fma.rs to math/fma.rs
54
+ - fma refactor 1/3: remove math/fma.rs
55
+ - Scale test iteration count at a later point
56
+ - Add a way to print inputs on failure
57
+ - Rename ` Float::exp ` to ` Float::ex `
58
+ - Check exact values for specified cases
59
+ - Add ` roundeven{,f,f16,f128} `
60
+ - Fix parsing of negative hex float literals in util
61
+ - Increase allowed offset from infinity for ynf
62
+ - Add ` fminimum ` , ` fmaximum ` , ` fminimum_num ` , and ` fmaximum_num `
63
+ - Combine ` fmin{,f,f16,f128} ` and ` fmax{,f,f16,128} ` into a single file
64
+ - Small refactor of bigint tests
65
+ - Eliminate the use of ` force_eval! ` in ` ceil ` , ` floor ` , and ` trunc `
66
+ - Migrate away from nonfunctional ` fenv ` stubs
67
+ - Introduce a trait constant for the minimum positive normal value
68
+ - Implement ` u256 ` with two ` u128 ` s rather than ` u64 `
69
+ - Pin the nightly toolchain for i686-pc-windows-gnu
70
+ - Increase the tolerance for ` jn ` and ` yn `
71
+ - Replace an ` assert! ` with ` debug_assert! ` in ` u256::shr `
72
+ - Change how operators are ` black_box ` ed
73
+ - Add simple icount benchmarks for ` u256 ` operations
74
+ - Decrease the allowed error for ` cbrt `
75
+ - Port the CORE-MATH version of ` cbrt `
76
+ - Add an enum representation of rounding mode
77
+ - Work arouind iai-callgrind apt failures
78
+ - Uncomment some hex float tests that should work now
79
+ - Convert ` fmaf ` to a generic implementation
80
+ - Remove or reduce the scope of ` allow(unused) ` where possible
81
+ - fix exponent calculation for subnormals
82
+ - Check more subnormal values during edge cases tests
83
+ - Run standard tests before running integration tests
84
+ - Add better edge case testing for ` scalbn `
85
+ - Add ` fmaf128 `
86
+ - Make it possible to use ` hf32! ` and similar macros outside of ` libm `
87
+ - Improve tidy output
88
+ - Add an integration test that verifies a list of cases
89
+ - Switch ` musl ` to track ` master `
90
+ - Ensure zero has the correct sign
91
+ - Print the hex float format upon failure
92
+ - Commonize the signature for all instances of ` get_test_cases `
93
+ - Start converting ` fma ` to a generic function
94
+ - Add checks via annotation that lists are sorted or exhaustive
95
+ - Do not add ` libm_helper.rs ` to the sources list
96
+ - Add a check in the ` shared.rs ` that the function list is sorted
97
+ - Add ` scalbnf16 ` , ` scalbnf128 ` , ` ldexpf16 ` , and ` ldexpf128 `
98
+ - Fix hex float trait recursion problem
99
+ - Rename ` EXP_MAX ` to ` EXP_SAT `
100
+ - Specify license as just MIT
101
+ - also print the hex float format for outputs
102
+ - Introduce a wrapper type for IEEE hex float formatting
103
+ - Support parsing NaN and infinities from the ` hf* ` functions
104
+ - Revert "Temporarily pin ` indicatif ` to 0.17.9"
105
+ - Temporarily pin ` indicatif ` to 0.17.9
106
+ - Switch musl from a script download to a submodule
107
+ - Ignore specific ` atan2 ` and ` sin ` tests on i586
108
+ - Rework the available Cargo profiles
109
+ - Remove remnants of the ` checked ` feature
110
+ - Use ` remquo ` from Rug
111
+ - Use ` frexp ` from Rug
112
+ - Use ` az ` exported from Rug
113
+ - Upgrade all dependencies to the latest version
114
+ - Enable missing icount benchmarks
115
+ - Add ` fmodf128 `
116
+ - Add way to override the number of iterations for specific tests
117
+ - Increase or set CI timeouts
118
+ - Add ` fmodf16 ` using the generic implementation
119
+ - Add a generic version of ` fmod `
120
+ - Add ` fminf16 ` , ` fmaxf16 ` , ` fminf128 ` , and ` fmaxf128 `
121
+ - Add a generic version of ` fmin ` and ` fmax `
122
+ - Remove an outdated note about precision
123
+ - Add ` roundf16 ` and ` roundf128 `
124
+ - Add a generic version of ` round `
125
+ - Add a generic version of ` scalbn `
126
+ - Change ` from_parts ` to take a ` u32 ` exponent rather than ` i32 `
127
+ - Introduce XFAILs that assert failure
128
+ - Add ` hf16! ` and ` hf128! `
129
+ - Fix the parsing of three-item tuples in ` util `
130
+ - Add the ability to parse hex, binary, and float hex with util
131
+ - Add ` rintf16 ` and ` rintf128 `
132
+ - Add a generic version of ` rint `
133
+ - Adjust ` ceil ` style to be more similar to ` floor `
134
+ - Add ` floorf16 ` and ` floorf128 `
135
+ - Add a generic version of ` floor `
136
+ - Add ` ceilf16 ` and ` ceilf128 `
137
+ - Add a generic version of ` ceil `
138
+ - Make ` Float::exp ` return an unsigned integer
139
+ - Shift then mask, rather than mask then shift
140
+ - Add ` sqrtf16 ` and ` sqrtf128 `
141
+ - Copy the u256 implementation from compiler_builtins
142
+ - Port the most recent version of Musl's ` sqrt ` as a generic algorithm
143
+ - Enable ` force-soft-floats ` for extensive tests
144
+ - Don't set ` opt_level ` in the musl build script
145
+ - Add a retry to the musl download
146
+ - Remove trailing whitespace in scripts, run JuliaFormatter
147
+ - Ignore files relevant to benchmarking
148
+ - Add a way to ignore benchmark regression checks
149
+ - Run wall time benchmarks with ` --features force-soft-floats `
150
+ - Run icount benchmarks once with softfloat and once with hardfloat
151
+ - Switch to the arm-linux runner and enable MPFR
152
+ - Remove the limit for querying a baseline
153
+ - Add an xfail for recent ynf failures
154
+ - Reduce the warm up and measurement time for ` short-benchmarks `
155
+ - Run iai-callgrind benchmarks in CI
156
+ - Add benchmarks using iai-callgrind
157
+ - Provide a way to override iteration count
158
+ - Increase the CI timeout
159
+ - Adjust precision and add xfails based on new tests
160
+ - Replace ` HasDomain ` to enable multi-argument edge case and domain tests
161
+ - Add an override for a recent failure
162
+ - Pass --max-fail to nextest so it doesn't fail fast
163
+ - Slightly restructure ` ci/calculate-exhaustive-matrix.py `
164
+ - Change ` .yml ` files to the canonical extension ` .yaml `
165
+ - Use cargo-nextest for running tests in CI
166
+ - Simplify and optimize ` fdim ` ([ #442 ] ( https://github.com/rust-lang/compiler-builtins/pull/442 ) )
167
+ - Reduce indentation in ` run.sh ` using early return
168
+ - Don't set ` codegen-units=1 ` by default in CI
169
+ - Add ` fdimf16 ` and ` fdimf128 `
170
+ - Add a generic version of ` fdim `
171
+ - Format the MPFR manual implementation list
172
+ - Disable ` util ` and ` libm-macros ` for optimized tests
173
+ - Add ` truncf16 ` and ` truncf128 `
174
+ - Add a generic version of ` trunc `
175
+ - Add a utility crate for quick evaluation
176
+ - Enable ` build-mpfr ` and ` build-musl ` by default
177
+ - Rename the ` test-multiprecision ` feature to ` build-mpfr `
178
+ - Introduce arch::aarch64 and use it for rint{,f}
179
+ - Use wasm32 arch intrinsics for rint{,f}
180
+ - Add a new precision adjustment for i586 ` exp2f `
181
+ - Add a new precision adjustment for i586 ` rint `
182
+ - Expose C versions of ` libm ` functions in the ` cb ` crate
183
+ - Always use the same seed for benchmarking
184
+ - Add ` biteq ` and ` exp_unbiased ` to ` Float `
185
+ - Add a ` release-checked ` profile with debug and overflow assertions
186
+ - Remove ` ExpInt ` from ` Float ` , always use ` i32 ` instead
187
+ - Reorder tests in ` run.sh `
188
+ - Split ` cast ` into ` cast ` and ` cast_lossy `
189
+ - Use ` core::arch::wasm ` functions rather than intrinsics
190
+ - Add tests against MPFR for ` remquo ` and ` remquof `
191
+ - Account for optimization levels other than numbers
192
+ - Make extensive tests exhaustive if there are enough iterations available
193
+ - Increase the allowed ULP for ` tgammaf `
194
+ - Replace "intrinsic" config with "arch" config
195
+ - Don't use intrinsics abs for ` f16 ` and ` f128 ` on wasm32
196
+ - Remove an unused ` feature = "force-soft-floats" ` gate
197
+ - Switch from using ` unstable-intrinsics ` to ` intrinsics_enabled `
198
+ - Increase the allowed precision for failing tests on i586
199
+ - Enable MPFR tests on i586
200
+ - Only update the github ref for pull requests
201
+ - Loosen precision on i586 based on new tests
202
+ - Add an override for failing ceil/floor tests on i586
203
+ - Add domain and edge case tests to musl
204
+ - Add test infrastructure for ` f16 ` and ` f128 `
205
+ - Add ` fabsf16 ` , ` fabsf128 ` , ` copysignf16 ` , and ` copysignf128 `
206
+ - Enable ` f16 ` and ` f128 ` when creating the API change list
207
+ - Run extensive tests in CI when relevant files change
208
+ - Update precision based on failures from extensive tests
209
+ - Add extensive and exhaustive tests
210
+ - Add more detailed definition output for ` update-api-list.py `
211
+ - Add tests against MPFR for ` ilogb ` and ` ilogbf `
212
+ - Increase the precision for ` jn ` and ` jnf `
213
+ - Rename ` unstable-test-support ` to ` unstable-public-internals `
214
+ - Update precision based on new test results
215
+ - Rewrite the random test generator
216
+ - Add an iterator that ensures known size
217
+ - Streamline the way that test iteration count is determined
218
+ - Add a way for tests to log to a file
219
+ - Add tests against MPFR for ` scalbn{f} ` and ` ldexp{f} `
220
+ - Add tests against MPFR for ` frexp ` and ` frexpf `
221
+ - Add tests against MPFR for ` modf ` and ` modff `
222
+ - Clean up integers stored in ` MpTy `
223
+ - Sort ` ilogb ` with other precise operations
224
+ - Change to exhaustive matching for ` default_ulp `
225
+ - Use intrinsics for ` abs ` and ` copysign ` when available
226
+ - Rename generic ` abs ` to ` fabs `
227
+ - Always emit ` f16_enabled ` and ` f128_enabled ` attributes
228
+ - Add missing functions to the macro list
229
+ - Use ` rustdoc ` output to create a list of public API
230
+ - Forward the ` CI ` environment variable when running in Docker
231
+ - Remove lossy casting in ` logspace `
232
+ - Set the allowed FMA ULP to 0
233
+ - Don't run ` push ` CI on anything other than ` master `
234
+ - Use ` CheckCtx ` in more places
235
+ - Move ` CheckBasis ` and ` CheckCtx ` to a new ` run_cfg ` module
236
+ - Add ` ALL ` , ` from_str ` and ` math_op ` to ` Identifier `
237
+ - Add new trait implementations for ` Identifier ` and ` BaseName `
238
+ - Include ` shared.rs ` in ` libm_test::op `
239
+ - Move the macro's input function list to a new module ` shared `
240
+ - Add a way to plot the output from generators
241
+ - Update allowed precision to account for new tests
242
+ - Add tests for edge cases
243
+ - Add interfaces and tests based on function domains
244
+ - Introduce a float extension trait and some numerical routines
245
+ - Add an 8-bit float type for testing purposes
246
+ - Remove an ` is_nan ` workaround that is no longer needed
247
+ - Update and slightly refactor some of the ` Float ` trait
248
+ - Always enable ` unstable-float ` in CI
249
+ - Add ` f16 ` and ` f128 ` configuration from ` compiler-builtins `
250
+ - Introduce generic ` abs ` and ` copysign `
251
+ - Change from ` -latest ` to named CI images
252
+ - Allow Clippy lints in ` compiler-builtins-smoke-test `
253
+ - Fix new ` clippy::precedence ` lints
254
+ - Replace string function name matching with enums where possible
255
+ - Rename associated type helpers, add ` OpITy `
256
+ - Introduce helper types for accessing trait items
257
+ - Fix a bug in ` abs_diff `
258
+ - Remove tests against system musl
259
+ - Use ` https: ` links in ` README.md `
260
+ - Move some numeric trait logic to default implementations
261
+ - Change the ` multiprec_ ` prefix to ` mp_ `
262
+ - Change default ULP to use enum matching
263
+ - Rename ` Name ` to ` Identifier ` to avoid some ambiguity of "name"
264
+ - Change the ` CheckCtx ` constructor to take a ` Name ` enum
265
+ - Correct the proc macro to emit ` pub ` functions
266
+ - Rework tests to make use of the new ` MathOp ` trait
267
+ - Introduce a ` op ` module with struct representations of each routine
268
+ - Adjust how the proc macro emits types and add an enum
269
+ - Fix clippy lints in ` crates/ ` and enable this on CI
270
+ - Resolve clippy errors in ` libm ` tests and check this in CI
271
+ - Add some more basic docstrings ([ #352 ] ( https://github.com/rust-lang/compiler-builtins/pull/352 ) )
272
+ - Introduce ` hf32! ` and ` hf64! ` macros for hex float support
273
+ - Enable clippy for ` libm ` in CI
274
+ - Fix errors reported by Clippy in ` libm `
275
+ - Replace ` libm_test::{Float, Int} ` with ` libm::{Float, Int} `
276
+ - Expose the ` support ` module publicly with a test feature
277
+ - Update libm ` Float ` and ` Int ` with functions from the test traits
278
+ - Change prefixes used by the ` Float ` trait
279
+ - Check benchmarks in CI
280
+ - Remove ` libm-bench `
281
+ - Add benchmarks against musl libm
282
+ - add support for loongarch64-unknown-linux-gnu
283
+ - Rename ` canonical_name ` to ` base_name `
284
+ - Add float and integer traits from compiler-builtins
285
+ - Move architecture-specific code to ` src/math/arch `
286
+ - Update ` select_implementation ` to accept arch configuration
287
+ - Add an "arch" Cargo feature that is on by default
288
+ - Vendor ` cfg_if::cfg_if! `
289
+ - Update ` libm-test/build.rs ` to skip directories
290
+ - Rename the ` special_case ` module to ` precision ` and move default ULP
291
+ - Run tests against MPFR on CI where possible
292
+ - Add a test against MPFR using random inputs
293
+ - Create interfaces for testing against MPFR
294
+ - Combine the WASM CI job with the others
295
+ - Make use of ` select_implementation `
296
+ - Introduce a ` select_implementation ` macro
297
+ - Introduce ` math::arch::intrinsics `
298
+ - Replace ` feature = "unstable-intrinsics" ` with ` intrinsics_enabled `
299
+ - Move the existing "unstable" feature to "unstable-intrinsics"
300
+
11
301
## [ 0.2.11] ( https://github.com/rust-lang/libm/compare/libm-v0.2.10...libm-v0.2.11 ) - 2024-10-28
12
302
13
303
### Fixed
0 commit comments