VOLK v2.5.1 release

By Johannes Demel | February 12, 2022

Originally published on libvolk.org

Hi everyone!

We have a new VOLK release! We are happy to announce VOLK v2.5.1! We want to thank all contributors. This release wouldn’t have been possible without them.

The list of contributors is pretty long this time due to a lot of support to relicense VOLK under LGPL. Currently, we are “almost there” but need a few more approvals, please support us. We thank everyone for their support in this effort.

We use cpu_features for a while now. This maintainance release should make it easier for package maintainers, FreeBSD users, and M1 users to use VOLK. Package maintainers should be able to use an external cpu_features module. For everyone else, cpu_features received support for M1 and FreeBSD.

You can find VOLK on Zenodo DOI: 10.5281/zenodo.3360942. We started to actively support Zenodo now via a .zenodo.json file. This might come in handy for people who use VOLK in publications. As a contributor, if you want more information about yourself added to VOLK, feel free to add your ORCiD and affiliation.

In the past, we relied on Boost for several tasks in volk_profile. For years, we minimized Boost usage to boost::filesystem. We mostly switched to C++17 std::filesystem years ago. The last distribution in our CI system that required Boost to build VOLK, was Ubuntu 14.04. Thus, now is the time to remove the Boost dependency completely and rely on C++17 features.

Some VOLK kernels are untested for years. We decided to deprecate these kernels but assume that nobody uses them anyways. If your compiler spits out a warning that you use a deprecated kernel, get in touch. Besides, we received fixes for various kernels. Especially FEC kernels are notoriously difficult to debug because issues often pop up as performance regressions.

Finally, we saw a lot of housekeeping in different areas. Scripts to support us in our LGPL relicensing effort, updated docs, and updated our code of conduct. We could remove some double entries in our QA system and fixed a volk_malloc bug that ASAN reported. Finally, we switched to the Python sysconfig module in our build system to ensure Python 3.12+ does not break our builds.

Contributors

Changes

  • Kernels

    • Fixup underperforming GENERIC kernel for volk_8u_x4_conv_k7_r2_8u
    • volk_32fc_x2_conjugate_dot_prod_32fc: New generic implementation
    • Add volk_32f(c)_index_min_16/32u
    • Fix volk_32fc_index_min_32u_neon
    • Fix volk_32fc_index_min_32u_neon
  • Misc

    • Fix volk_malloc alignment bug
    • qa: Remove repeating tests
    • python: Switch to sysconfig module
    • deprecate: Add attribute deprecated
    • deprecate: Exclude warnings on Windows
    • docs: Update docs
    • Add the list of contributors agreeing to LGPL licensing
    • Add a script to count the lines that are pending resubmission
    • Testing: Add test for LGPL licensing
    • Update CODE_OF_CONDUCT file
  • Boost

    • boost: Remove boost dependency
    • c++: Require C++17 for std::filesystem
  • cpu_features cpu_features: Update submodule pointer cpu_features: Make cpu_features submodule optional

  • Zenodo zenodo: Add metadata file zenodo: Re-organize .zenodo.json