@@ -8,6 +8,296 @@ and this project adheres to
88
99## [ Unreleased]
1010
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+
11301## [ 0.2.11] ( https://github.com/rust-lang/libm/compare/libm-v0.2.10...libm-v0.2.11 ) - 2024-10-28
12302
13303### Fixed
0 commit comments