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
For KFR5 changelog see What's new in KFR 5