Releases: kfrlib/kfr
Releases · kfrlib/kfr
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
5.0.0
- New
tensor<T, dims>
class for multidimensional data (like numpy's nparray) - histogram computation
- normal (gaussian) distribution for random number generator
- 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
4.3.1
C++20 compatibility fixes for v4 branch
4.3.0
Changed
- Compile times improved and memory usage reduced for MSVC and GCC
cxxdox
version updated- Tests for latest Clang, Azure Pipelines images are updated
- .editorconfig file
Fixed
- Fixed incompatibility with latest GCC
- Fixed various Internal Compiler Error in latest MSVC2019
- Fixed tests for Clang 14
- Fixed bugs in gather/scatter and read/write functions
4.2.1
Various fixes and performance improvements.
4.2.0
Added
ENABLE_DFT_MULTIARCH
cmake option can be used to buildkfr_dft
with multiple architectures support (x86/x86_64 only)config.h
is generated during install step with all#define
s needed for correct usage of installed libraries
Changed
CMAKE_INSTALL_PREFIX
is reset to empty on Win32 (can be overriden in cmake command line)- C API binary is now installed using install command (
make install
,ninja install
orcmake --build . --target install
)
4.1.0
Added
- MSVC2019 support (16.4.4 is required)
- Stateless short_fir expression (thanks to https://github.com/slarew)
biquad_filter
constructor takingstd::vector<biquad_params<T>>
(thanks to https://github.com/BenjaminNavarro)cabssqr
function (thanks to https://github.com/slarew)moving_sum
expression (thanks to https://github.com/slarew)gen_expj
generator (thanks to https://github.com/slarew)
Changed
cdirect_t{}
is now allowed in real dft plan methods for compatibility- complex support for
convolve_filter
(thanks to https://github.com/slarew)
Fixed
- GCC debug build (thanks to https://github.com/BenjaminNavarro)
is_invocable_r_impl
fallback for missing C++17 featurestd::complex
compatibility (thanks to https://github.com/slarew)- Various CI fixes
4.0.0
- IIR filter design
- Butterworth
- Chebyshev type I and II
- Bessel
- Lowpass, highpass, bandpass and bandstop filters
- Conversion of arbitrary filter from Z,P,K to SOS format (suitable for biquad function and filter)
- Discrete Cosine Transform type II (and its inverse, also called DCT type III)
- cmake uninstall target (thank to @acxz)
- C API: DFT, real DFT, DCT, FIR and IIR filters and convolution, memory allocation
- Built for SSE2, SSE4.1, AVX, AVX2, AVX512, x86 and x86_64, architecture is selected at runtime
- Can be used with any compiler and any language with ability to call C functions
- Prebuilt windows binaries
- C++17
- Inline variables
- Fold expressions
- Structured binding
- New vector based types: color, rectangle, point, size, border, geometric vector, 2D matrix
- Color space conversion (sRGB, XYZ, Lab, LCH)
- MP3 file reading (using third party dr_lib library, see source code for details)
- Various optimizations and fixes (thank to @bmanga, @ncorgan, @rotkreis, @mujjingun for fixes and bug reports)
Release notes
- MSVC support is limited to MSVC2017 due to ICE in MSVC2019. Once fixed, support will be added
- DFT is limited to Clang due to ICE in MSVC and broken AVX optimization in GCC 8 and 9. Once fixed, support will be added
See full change log in CHANGELOG.md
4.0.0-rc
- IIR filter design
- Butterworth
- Chebyshev type I and II
- Bessel
- Lowpass, highpass, bandpass and bandstop filters
- Conversion of arbitrary filter from Z,P,K to SOS format (suitable for biquad function and filter)
- Discrete Cosine Transform type II (and its inverse, also called DCT type III)
- cmake uninstall target (thank to @acxz)
- C API: DFT, real DFT, DCT, FIR and IIR filters and convolution, memory allocation
- Built for SSE2, SSE4.1, AVX, AVX2, AVX512, x86 and x86_64, architecture is selected at runtime
- Can be used with any compiler and any language with ability to call C functions
- Prebuilt windows binaries
- C++17
- Inline variables
- Fold expressions
- Structured binding
- New vector based types: color, rectangle, point, size, border, geometric vector, 2D matrix
- Color space conversion (sRGB, XYZ, Lab, LCH)
- MP3 file reading (using third party dr_lib library, see source code for details)
- Various optimizations and fixes (thank to @bmanga, @ncorgan, @rotkreis, @mujjingun for fixes and bug reports)
Release notes
- MSVC support is limited to MSVC2017 due to ICE in MSVC2019. Once fixed, support will be added
- DFT is limited to Clang due to ICE in MSVC and broken AVX optimization in GCC 8 and 9. Once fixed, support will be added
3.0.9
Changes since KFR 3.0.8
Added
reduce
supports different types and containers other thanunivector
- Assignment operators for
univector
:+=
,*=
etc concatenate
function to concatenate two expressions sequentially- Audio file IO:
read_channels
/write_channels
to read channels data directly without interleaving/deinterleaving as_string
: support forstd::vector
Changed
expression_scalar
: support forvec<T>
Fixed
- CPU detection in cmake subdirectory
- MSVC 2017 32-bit intrinsics