Skip to content

Releases: marcschier/pgm

v0.10.0 — strong-name signing & performance

Choose a tag to compare

@marcschier marcschier released this 30 Jun 12:47

What''s new since v0.9.0

  • Strong-name signing — the Pgm assembly and its friend test assembly are now signed with a committed key (public key token 83cf9066eeb59688), so Pgm can be referenced from other strong-named assemblies. Samples and benchmarks stay unsigned.
  • Performance — ref-struct / span-based codecs, pooled datagrams, and SIMD checksum + FEC, with a BenchmarkDotNet smoke suite.
  • Test coverage — substantially expanded deterministic tests (packet parsing, sender NAK repair, receiver windowing, FEC, and lifecycle), raising line coverage to ~96%.
  • Docs & versioning — benchmarks documentation, plus a versionHeightOffset fix so the package versions as a clean 0.10.0.

Package

dotnet add package Pgm --version 0.10.0

Full changelog: v0.9.0...v0.10.0

v0.9.0 — initial release

Choose a tag to compare

@marcschier marcschier released this 30 Jun 12:47

Initial release of Pgm — a pure-managed, NativeAOT-ready implementation of PGM (Pragmatic General Multicast, RFC 3208) reliable multicast over UDP, with no native dependencies.

Highlights

  • PgmPublisher / PgmSubscriber facade over a pluggable IPgmDatagramChannel (real UDP multicast or an in-memory bus).
  • Reliable delivery: NAK-based repair, transmit window, SPM heartbeats, and Reed–Solomon FEC (proactive + on-demand parity).
  • Allocation-free wire codecs (Span / BinaryPrimitives), with SIMD checksum and GF(256) on net8+.
  • Network-free testing via InMemoryMulticastBus (inject loss, reordering, and duplication).
  • Target frameworks: netstandard2.0, netstandard2.1, net8.0, net9.0, net10.0.

Package

Published to the GitHub Packages and nuget.org feeds as Pgm 0.9.16.