Skip to content

Releases: kfrlib/kfr

5.0.1

06 Dec 08:53
Compare
Choose a tag to compare
  • 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, so vec{1, 2} is the same as vec<int, 2>{1, 2}
  • [changes required] random_state is now architecture-agnostic and defined in kfr namespace
  • All expression classes have been moved from kfr::CMT_ARCH_NAME::internal to kfr::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 to simd module
  • state_holder.hpp has been moved to base module
  • All code related to expressions have been moved to base module
  • vec<T, N>::front() and vec<T, N>::front() are now writable
  • set_elements functions for output expressions like get_elements for input expressions

5.0.0

30 Nov 10:38
Compare
Choose a tag to compare
5.0.0 Pre-release
Pre-release
  • 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, so vec{1, 2} is the same as vec<int, 2>{1, 2}
  • [changes required] random_state is now architecture-agnostic and defined in kfr namespace
  • All expression classes have been moved from kfr::CMT_ARCH_NAME::internal to kfr::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 to simd module
  • state_holder.hpp has been moved to base module
  • All code related to expressions have been moved to base module
  • vec<T, N>::front() and vec<T, N>::front() are now writable
  • set_elements functions for output expressions like get_elements for input expressions

4.3.1

23 Nov 13:03
Compare
Choose a tag to compare

C++20 compatibility fixes for v4 branch

4.3.0

14 Oct 07:09
Compare
Choose a tag to compare

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

29 Apr 20:56
Compare
Choose a tag to compare

Various fixes and performance improvements.

4.2.0

31 Mar 09:27
1f97061
Compare
Choose a tag to compare

Added

  • ENABLE_DFT_MULTIARCH cmake option can be used to build kfr_dft with multiple architectures support (x86/x86_64 only)
  • config.h is generated during install step with all #defines 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 or cmake --build . --target install)

4.1.0

04 Mar 13:05
Compare
Choose a tag to compare

Added

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

4.0.0

05 Dec 23:09
Compare
Choose a tag to compare
  • 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

04 Dec 23:45
Compare
Choose a tag to compare
4.0.0-rc Pre-release
Pre-release
  • 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

02 Apr 07:45
Compare
Choose a tag to compare

Changes since KFR 3.0.8

Added

  • reduce supports different types and containers other than univector
  • 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 for std::vector

Changed

  • expression_scalar: support for vec<T>

Fixed

  • CPU detection in cmake subdirectory
  • MSVC 2017 32-bit intrinsics