Spead2

Latest version: v4.3.2

Safety actively analyzes 693883 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 19

4.0.2

Note that an oversight lead to some of the changes between 4.0.0b1 and 4.0.0
being omitted from 4.0.1. They are restored in 4.0.2.

- Fix type annotations for :py:class:`spead2.send.UdpStream` and
:py:class:`spead2.send.asyncio.UdpStream`.
- Add more documentation for developers.
- Remove an old :file:`Makefile.am` that should have been removed in 4.0.0.
- Remove mocking of spead2 in readthedocs build.
- Change `.. code::` to `.. code-block::` in documentation.
- Simplify the implementation of :cpp:class:`!thread_pool_wrapper` and
:cpp:class:`!buffer_reader` in Python binding code.
- Directly use pointer-to-member-functions in Python binding code.
- Test against numpy 1.26.0 (instead of 1.26.0rc1) on Python 3.12.

4.0.1

- Restore dependency on numpy, which was accidentally removed in 4.0.0.
- Change the ``test_numba`` extra to ``test-numba`` to normalise it in
accordance with :pep:`685`.

4.0.0

This release makes major changes to the build system, and removes deprecated
features. See :doc:`migrate-4` for more detailed information about upgrading
and the deprecation removals.

Most of the changes are listed under 4.0.0b1 below. Since then, the following
changes have been made:

- Improve detection of gdrcopy by using the CUDA compiler to compile the
test code.
- Remove ninja from ``build-system.requires``. If you have ninja installed on
the system, that will be used for the Python install rather than
downloading it.
- Make miscellaneous improvements to the build system.
- Remove an unused file (:file:`.ci/ccache-path.sh`).
- Work around a pytest bug to prevent tests running out of file descriptors
(particularly on MacOS, which has a lower default limit).
- Add wheels for MacOS (Intel and Apple Silicon).
- Document that Meson must be at least 1.2.
- Make source paths in :file:`.debug` files more usable (relative to
4.0.0b1).
- Remove :file:`.pyi` file entries for the functionality removed in 4.0.

4.0.0b1

This release makes major changes to the build system, and removes deprecated
features. See :doc:`migrate-4` for more detailed information about upgrading
and the deprecation removals.

- Replace the build system with Meson_.
- Update the C++ code to use C++17.
- No longer link against boost_system, and require Boost 1.69+.
- Remove generated code from release tarballs; some Python packages are now
required at build time to build the C++ bindings.
- Fix an uninitialised variable that could cause a segmentation fault when
using TCP to send and the initial connection failed.
- Fix a large number of compiler warnings that showed up after switching build
systems (mainly related to unused function parameters and signed/unsigned
comparisons).
- Fix the debug logging option so logging from inline functions in headers
will also do debug logging without the user needing to make preprocessor
defines.
- Fix :program:`spead2_bench.py` so that it functions when ibverbs support is
not compiled in.
- Remove the need for boost_program_options to be installed to be able to
install the Python bindings from source.
- Produce binary wheels for aarch64.
- Produce wheels for Python 3.12.
- Make numba and scipy optional for running tests (some tests will be skipped
if they are not present).
- Update the libpcap embedded in the wheels to 1.10.4.
- Update the Boost version used to build wheels to 1.83.
- Update the rdma-core version used to build wheels to 47.0.
- Update the pybind11 build dependency to 2.11.1.
- Replace flake8 with ruff_ for linting.
- Remove the :file:`spead2/common_bind.h` header, which was unused.
- Remove the :c:macro:`!SPEAD2_DEPRECATED` macro.
- Remove build-time dependencies from :file:`requirements.txt`.
- Update the :file:`.pyi` files to use more modern syntax e.g., :pep:`585`,
:pep:`604`, :pep:`613`.
- Replace references to nv_peer_mem with nvidia-peermem.
- Increase TTL of :program:`gpudirect_example` to 4.

.. _Meson: https://mesonbuild.com
.. _ruff: https://beta.ruff.rs/docs/

3.13.0

- Reformat the Python codebase using black_ and isort_.
- Add `pre-commit`_ configuration.
- On i386, check for SSE2 support at runtime rather than configure time.
- Free readers only when the stream is destroyed. This fixes a bug that caused
the Python API to be accessed without the GIL when using
:py:meth:`~spead2.recv.Stream.add_buffer_reader`.
- Improve unit tests by explicitly closing TCP sockets, to avoid
:exc:`ResourceWarning` when testing with ``python -X dev``.
- Remove :py:mod:`wheel` from ``build-system.requires``.

.. _black: https://black.readthedocs.io/en/stable/
.. _isort: https://pycqa.github.io/isort/
.. _pre-commit: https://pre-commit.com/

3.12.0

- Add support for :doc:`recv-chunk-group` to assemble chunks in parallel.
- Simplify the way receive streams shut down. Users should not notice any
change, but custom reader implementations will need to be updated.
- Update :meth:`!test_async_flush` and :meth:`!test_async_flush_fail` to keep
handles to async tasks, to prevent them being garbage collected too early.
- Fix a bug where copying a :cpp:class:`spead2::recv::stream_config` would not
deep copy the names of custom statistics, and so any statistics added to the
copy would also affect the original, and there were also potential race
conditions if a stream config was modified while holding stream statistics.
- Fix a bug (caused by the bug above) where passing a
:cpp:class:`spead2::recv::stream_config` to construct a
:cpp:class:`spead2::recv::chunk_stream` would modify the config. Passing
the same config to construct two chunk streams would fail with an error.
- Fix the type annotation for the :py:class:`~.ChunkRingStream` constructor:
the parameter name for `chunk_stream_config` was incorrect.
- Fix universal binary builds on MacOS (this was preventing Python 3.11 builds
from succeeding).
- Fix :program:`spead2_bench.py`, which has failed to run at all for some time
(possibly since 3.0).
- Avoid including Boost dynamic symbols in the Python module (helps reduce
binary size).
- Strip static symbols out of the Python wheels (reduces size).
- Build Python wheels with link-time optimisation (small performance
improvement).
- Python 3.8 is now the minimum version.

Page 2 of 19

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.