Skip to content

Latest commit

 

History

History
175 lines (102 loc) · 6.46 KB

CHANGELOG.md

File metadata and controls

175 lines (102 loc) · 6.46 KB

Multicast Expert Changelog

All notable changes to this project will be documented in this file.

The format is based on CHANGELOG.md and this project adheres to Semantic Versioning.


[1.5.0] - 2025-02-07

This release is focused on addressing the performance issues caused by multicast_expert rescanning the network interfaces on the machine each time a socket is opened. You can now avoid this overhead by using the new scan functions and then passing their result into the socket constructors' iface argument.

Added

  • multicast_expert.scan_interfaces() provides a more complete wrapper around netifaces It will scan all the interface details from the machine into a list of IfaceInfo dataclass objects.
  • multicast_expert.find_interfaces() provides an easy way to locate interfaces matching a given specifier. The specifier may be an IPv4 or IPv6 address of the interface (as a string or an object), or an interface name (e.g. eth0).

Changed

  • McastTxSocket and McastRxSocket now accept an IfaceSpecifier for their interface IP arguments instead of just an IP address string. This is compatible with old usage but allows a wider range of values to be used, including an interface obtained from scan_interfaces() or find_interfaces().
  • McastTxSocket and McastRxSocket now accept IPv4Address and IPv6Address objects in addition to strings for the mcast_ips and source_ips constructor arguments.
    • Note that the sendto() and recvfrom() functions still accept and return only string addresses, as this matches the behavior of the socket module (surprisingly).

Fixed

  • It is now possible to unambiguously open a socket on an interface that has the same IP as another interface (in most cases). Previously, it was undefined which interface you'd get if this happened.
  • It is now possible to open a McastRxSocket socket on a machine with interfaces with multiple IPs. This previously crashed unless you explicitly specified one interface to use.

[1.4.2] - 2025-01-31

Fixed

  • Fix mypy and pylance "name not exported" error visible for users of the library

[1.4.1] - 2025-01-30

Added

  • Linting (via ruff, pyright, and docsig in addition to the preexisting mypy) and autoformatting (via ruff) has been added to the project
  • New release workflow via Trusted Publishing
  • Add FAQ entry about IGMP Querier mode in README

[1.4.0] - 2023-12-21

Added

  • multicast_expert now has Github Actions CI thanks to Victor Tang's contribution! It is now automatically tested on Mac, Linux, and Windows.
  • Add enable_external_loopback option on tx and rx sockets, which can be used to turn on multicast loopback for non-loopback interfaces. Note that this option has to be set on both the Tx and Rx sockets in order to work correctly on all platforms.

Fixed

  • Fix bug which prevented opening IPv6 multicast Tx sockets on Linux in some situations.
  • Fix mypy type checker error on non-Windows platforms due to use of ctypes Windows functionality.

[1.3.0] - 2023-10-20

Fixed

  • Fix the type annotation for McastRxSocket.settimeout() parameter.

Changed

  • Replace blocking arg to McastRxSocket with timeout, which allows you to set an integer timeout in the constructor. The old argument is still supported but is marked as legacy.

[1.2.2] - 2023-06-30

Fixed

  • Fix some mypy errors that were visible for users of the library.

[1.2.1] - 2023-06-29

Fixed

  • Fix IPv6 McastRxSocket being broken on Linux when multiple interfaces were used (need to open an OS socket for each interface ip-mcast ip permutation)

[1.2.0] - 2023-06-29

Added

  • An McastRxSocket can now listen on multiple interface IPs at once via passing a list of interface addresses to the new iface_ips parameter. The old iface_ip parameter is retained for compatibility.
  • If no interface IPs are specified, McastRxSocket now listens on all non-loopback interfaces instead of just the default gateway. This should provide more intuitive default behavior for applications where the interface for receiving isn't known.
  • Type annotations now applied to everything, library passes mypy in strict mode.
  • py.typed file now provided so that mypy can see type annotations provided by multicast_expert in your own projects.

[1.1.2] - 2023-05-16

Fixed

  • Another hotfix for a typo in v1.1.0

[1.1.1] - 2023-05-16

Fixed

  • Hotfix for a missing import in v1.1.0. Forgot to run unit tests one last time before uploading to pypi 🤦‍♂️

[1.1.0] - 2023-05-15

Added

  • Add mac compatibility (now that I finally have someone to help test who possesses a mac). Previously only Windows and Linux were properly supported.

[1.0.1] - 2022-08-13

Documentation updates


[1.0.0] - 2022-08-13

Initial Release