This new release provides numerous performance and codegen improvement in math/ and string/ routines. The directory structure is re-organised and simplified. The math test framework is reworked to improve testing capacity over math routines. This new release also provides several bug fixes and documentation updates.
-
Update MAINTAINERS
-
Improve subdirectory structure
- Merge pl/ into math/. All math routines can now be built into a
single library, and the new structure reduces code duplication. - Upgrade the test infrastructure. Intervals, thresholds and other
test parameters are now embedded in source files, processed into
files generated at compile-time, and finally passed to the tester
script. - Move "lower-quality" routines into dedicated experimental/
directories.
- Merge pl/ into math/. All math routines can now be built into a
-
Changes in config and build system
- Update minimum required versions of GCC (>= 10) and CLANG (>=5), as
a consequence of always building SVE on AArch64. - Updates in config options, eg. removing
WANT_SIMD_TESTS
and
WANT_SVE_MATH
.
- Update minimum required versions of GCC (>= 10) and CLANG (>=5), as
-
Changes in math/ subdirectory
- Provide vector annotations to allow auto-vectorisation to our
mathlib provided that-ffast-math
is enabled andmathlib.h
is
included. - Many codegen and performance improvement in vector routines. Fixing
most regressions that occurred between GCC 13 and 14.
Improvement in memory access, reduction of spills, and better usage
of instruction set. - Add vector variants for standard and non-standard routines:
- C99: modf.
- C23: tanpi.
- other: sincospi.
- Fix signature of vector sincos.
- Fix tests with MPFR.
- Allow building, testing and benchmarking scalar math routines on
macOS and Windows.
- Provide vector annotations to allow auto-vectorisation to our
-
Changes in string/ subdirectory
- Fix 32-bit Arm build.
- Improve string benchmarks.
- Add support for MOPS memcpy/memmove/memset.
- Improved memset performance.
- Add new SVE memset implementation.
- Remove ILP32 support.
-
Changes in networking/ subdirectory
- Fix make install. Library and header might need renaming in the
future to be consistent with other components.
- Fix make install. Library and header might need renaming in the
Full Changelog: v24.05...v25.01