Spead2

Latest version: v4.3.2

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

Scan your dependencies

Page 6 of 19

3.1.1

- Set ``IBV_ACCESS_RELAXED_ORDERING`` flag on ibverbs memory regions. This
reduces packet loss in some circumstances (observed on Epyc 2 system with
lots of memory traffic).

3.1.0

- Add :py:meth:`~spead2.send.AbstractStream.send_heaps` and
:py:meth:`~spead2.send.asyncio.AbstractStream.async_send_heaps` to send
groups of heaps with interleaved packets.
- Upgrade to pybind11 2.6.0, which contains a workaround for a bug in CPython
3.9.0.

3.0.1

- Bring the type stubs up to date.
- Fix a typo in the documentation.

3.0

updating your existing code, refer to :doc:`migrate-3`.

Other changes:

- Support multiple "substreams" in a send stream (see :ref:`py-substreams`).
- Reduce overhead for dealing with incomplete heaps.
- Allow ibverbs senders to register memory regions for zero-copy
transmission.
- Add C++ preprocessor defines for the version number.
- Use IP/UDP checksum offloading for sending with ibverbs (improves
performance and also adds UDP checksum which is otherwise omitted).
- Drop support for Python 3.5, which is end-of-life.
- Change code examples to use standard SPEAD rather than PySPEAD bug
compatibility.
- Change :cpp:class:`spead2::send::streambuf_stream` so that when the
streambuf only partially writes a packet, the partial byte count is
included in the count returned to the callback.
- :cpp:func:`spead2::send::stream::flush` now only blocks until the
previously enqueued heaps are completed. Another thread that keeps adding
heaps would previously have prevented it from returning.
- Partially rewrite the sending infrastructure, resulting in performance
improvements, in some cases of over 10%.
- Setting a buffer size of 0 for a :py:class:`~spead2.send.UdpIbvStream` now
uses the default buffer size, instead of a 1-packet buffer.
- Fix :program:`spead2_bench.py` ignoring the :option:`!--send-affinity` option.
- The hardware rate limiting introduced in 3.0.0b1 is now disabled by default,
as it proved to be significantly less accurate than the software rate limiter
in some cases. The interface has also been changed from a boolean to an enum
(with the default being ``AUTO``) so that it can later be re-enabled under
circumstances where it is known to work well, while still allowing it to be
explicitly enabled or disabled.
- Add :option:`!--verify` option to :program:`spead2_send` and
:program:`spead2_recv` to aid in testing the code. To support this,
:program:`spead2_send` was modified so that each in-flight heap uses
different memory, which may reduce performance (due to less cache re-use)
even when the option is not given.
- Miscellaneous performance improvements.

Additionally, refer to the changes for 3.0.0b1 below.

3.0.0

3.0.0b2

Page 6 of 19

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.