Releases: kfrlib/kfr
Releases · kfrlib/kfr
6.1.0
- It is now possible to perform multidimensional DFT via the C API.
- Documentation updated.
- [Internal] Updated to the latest CxxDox for enhanced documentation features.
- The
Dims
template parameter indft_plan_md
anddft_plan_md_real
now defaults todynamic_shape
. - A workaround has been applied to mitigate the MSVC Internal Compiler Error.
- Additional tests added.
Full Changelog: 6.0.4...6.1.0
6.0.4
This release includes fixes to ensure compatibility with Clang 19. No new features have been added.
6.0.3
KFR 6.0.3 fixes and improvements
- More documentation (thanks to @Jalmenara)
- Stateless parameter fixed
- Fix build with non-MSVC on Win32 (thanks to @jcelerier)
- Android fixes
- Removed deprecated atomic initialization
6.0.2
What's new in KFR 6
- DFT performance has been improved up to 40% (backported to KFR 5.2.0 branch)
- C API for non x86 architectures
- DSP refactoring with easier initialization
- Multiarchitecture for resampling, FIR and IIR filters
matrix_transpose
: optimized matrix transpose (square/non-square, inplace/out-of-place, real/complex, scalar/vectors)- CMake config file generation (
find_package(KFR CONFIG)
support, see installation) .npy
format support (reading/writing, v1/v2, c/fortran order, real/complex, bigendian/littleendian)- Multidimensional DFT: real/complex
inline_vector
- Windows arm64 support
- Emscripten (wasm/wasm64) support
Other changes
- CMake minimum version is 3.12
- Multidimensional reference DFT
- Easier cross compilation to ARM64 on x86_64 macOS
- Automated tests using GitHub Actions (previously Azure Pipelines)
- GCC 7 and 8: emulate missing avx-512 instrinsics
read_group
andwrite_group
- [❗breaking change]
reshape_may_copy
andflatten_may_copy
intensor<>
allows copying by default shape<>::transpose
functiontensor<>::transpose
functionconvert_endianess
- DFT, DSP and IO sources have been moved to
src/
directory - Multiarchitecture is enabled by default
KFR_DFT_NO_NPo2
has been removed (assumed always enabled)- Tests refactoring
- Some tests moved to
tests/internal/
- [❗breaking change] Scalars are now passed by value in expressions (this fixes dangling references in some cases)
- Expression functions should return
expression_make_function
instead ofexpression_function
KFR_WITH_CLANG
KFR_VERSION
CMake variable- Functions to get module versions (
library_version_dft
,library_version_dsp
etc) - Exceptions are no longer enforced in MSVC
kfr::complex
removed (usestd::complex
instead).KFR_STD_COMPLEX
cmake variable removed toostrides_for_shape
for fortran order- AARCH and ARM emulation refactoring (dynamic libraries are now supported)
call_with_temp
maximum_dims
is now 16 (was 8)to_fmt
/from_fmt
supports inplaceshape
refactoring:rotate_left
,rotate_right
,remove_back
,remove_front
- temp argument can be
nullptr
for DFT (temporary buffer will be allocated on stack or heap) dft_plan
and similar classes have now default and move constructors-DCMAKE_POSITION_INDEPENDENT_CODE=ON
is required for building C APIci/run.sh
can now build in a directory outside source tree- [❗breaking change]
graphics/color.hpp
andgraphics/geometry.hpp
have been removed - Simpler
CMT_CVAL
macro /Zc:lambda
is now required for building KFR in MSVCprintln
forstring_view
- MSVC internal compiler error fixed
- Complex vector operators fixed
6.0.0 RC
What's new in KFR 6
- DFT performance has been improved up to 40% (backported to KFR 5.2.0 branch)
- C API for non x86 architectures
- DSP refactoring with easier initialization
- Multiarchitecture for resampling, FIR and IIR filters
matrix_transpose
: optimized matrix transpose (square/non-square, inplace/out-of-place, real/complex, scalar/vectors)- CMake config file generation (
find_package(KFR CONFIG)
support, see installation) .npy
format support (reading/writing, v1/v2, c/fortran order, real/complex, bigendian/littleendian)- Multidimensional DFT: real/complex
inline_vector
Other changes
- CMake minimum version is 3.12
- Multidimensional reference DFT
- Easier cross compilation to ARM64 on x86_64 macOS
- Automated tests using GitHub Actions (previously Azure Pipelines)
- GCC 7 and 8: emulate missing avx-512 instrinsics
read_group
andwrite_group
- [❗breaking change]
reshape_may_copy
andflatten_may_copy
intensor<>
allows copying by default shape<>::transpose
functiontensor<>::transpose
functionconvert_endianess
- DFT, DSP and IO sources have been moved to
src/
directory - Multiarchitecture is enabled by default
KFR_DFT_NO_NPo2
has been removed (assumed always enabled)- Tests refactoring
- Some tests moved to
tests/internal/
- [❗breaking change] Scalars are now passed by value in expressions (this fixes dangling references in some cases)
- Expression functions should return
expression_make_function
instead ofexpression_function
KFR_WITH_CLANG
KFR_VERSION
CMake variable- Functions to get module versions (
library_version_dft
,library_version_dsp
etc) - Exceptions are no longer enforced in MSVC
kfr::complex
removed (usestd::complex
instead).KFR_STD_COMPLEX
cmake variable removed toostrides_for_shape
for fortran order- AARCH and ARM emulation refactoring (dynamic libraries are now supported)
call_with_temp
maximum_dims
is now 16 (was 8)to_fmt
/from_fmt
supports inplaceshape
refactoring:rotate_left
,rotate_right
,remove_back
,remove_front
- temp argument can be
nullptr
for DFT (temporary buffer will be allocated on stack or heap) dft_plan
and similar classes have now default and move constructors-DCMAKE_POSITION_INDEPENDENT_CODE=ON
is required for building C APIci/run.sh
can now build in a directory outside source tree- [❗breaking change]
graphics/color.hpp
andgraphics/geometry.hpp
have been removed - Simpler
CMT_CVAL
macro /Zc:lambda
is now required for building KFR in MSVCprintln
forstring_view
- MSVC internal compiler error fixed
- Complex vector operators fixed
5.2.0
This release mainly focuses on DFT performance (which has been increased up to 40% on x86 and x86_64) and bug fixes.
Changed
- The performance of DFT has been increased up to 40% compared to KFR 5 on x86 and x86_64
in single and double precision, inplace and out of place processing.
Added
KFR_NO_PERF_TESTS
define can now disable performance testsCMT_CVAL
for extracting constexpr-enabled value fromcval_t
fft_algorithm_selection
to select FFT algorithm for given FFT size.
Fixed
- Warnings in Clang 10 #198
std::is_pov
is peprecated in C++20 #190- DFT sizes 0 and 1 were not processed correctly #195
- Internal compiler error in Visual Studio Compiler 19.37 #194
- Goertzel issue #121
- Bug in
nearest_real_or_complex
#137 - Fixed operators in
KFR_STD_COMPLEX
mode - Testo library: typo in
epsilon_scope
- Fix ambiguities with
std::identity
(C++20) - Force linking in correct order for multi-architecture binaries
5.1.0
Added
- Tukey window function
- Subscript operator for
vec<>
- Unary operators for
vec<>
Fixed
- Inverse DCT has been fixed
- Allow C API to be built on non-x86 systems
- Tensor iteration range has been fixed
transpose(vec<vec<>>)
has been fixedvec<bit<>>
bug on GCC and MSVC- Internal constant
is_pod
has been removed root
andcbrt
have been fixed for negative values- Fixed numerous warnings in MSVC
5.0.3
5.0.2
- ARM/ARM64 performance has been improved up to 2 times in various usage scenarios, including DFT.
- Fix sine and other functions not accepting scalar references
- Fix possible name conflict with
fmt
5.0.1
- New
tensor<T, dims>
class for multidimensional data (like numpy's nparray) - Histogram computation
- Normal (gaussian) distribution for random number generator
- Documentation updates
- All builtin expressions support multiple dimensions
- Exception support (may be configured to call user-supplied function or std::abort)
- [changes required] CMake variables now have
KFR_
prefix - Template parameter deduction for
vec
, sovec{1, 2}
is the same asvec<int, 2>{1, 2}
- [changes required]
random_state
is now architecture-agnostic and defined inkfr
namespace - All expression classes have been moved from
kfr::CMT_ARCH_NAME::internal
tokfr::CMT_ARCH_NAME
namespace expression_traits<T>
introduced to support interpreting any object as kfr expression- [changes required] User-defined expressions should be rewritten to be used in KFR5
- Out-of-class assign operators for all input & output expressions
round.hpp
,clamp.hpp
,select.hpp
,sort.hpp
,saturation.hpp
,min_max.hpp
,logical.hpp
,abs.hpp
headers have been moved tosimd
modulestate_holder.hpp
has been moved tobase
module- All code related to expressions have been moved to
base
module vec<T, N>::front()
andvec<T, N>::front()
are now writableset_elements
functions for output expressions likeget_elements
for input expressions