Skip to content

marcschier/pgm

Repository files navigation

📡 Pgm

CI NuGet GitHub Packages

A pure-managed, NativeAOT-ready implementation of PGM (Pragmatic General Multicast, RFC 3208) — reliable multicast — over UDP, for modern .NET. No native dependency.

  • 📡 Wire-faithful PGM-over-UDP (SPM / ODATA / RDATA / NAK / NCF / SPMR), NAK-based repair, transmit/receive windows, FEC (Reed-Solomon), and congestion control.
  • Multi-TFM: netstandard2.0, netstandard2.1, net8.0, net9.0, net10.0; NativeAOT-clean on net8+.
  • Testable anywhere: the protocol runs over a pluggable datagram channel, so it is fully exercised over an in-memory bus (with injected loss/reorder) without needing real multicast.

📦 Install

dotnet add package Pgm

🛠️ Build & test

dotnet build Pgm.slnx -c Release
dotnet test Pgm.slnx -c Release

📚 Documentation

🧪 Samples

📊 Benchmarks

  • Pgm.Benchmarks — BenchmarkDotNet micro-benchmarks for codec, checksum, and FEC.

📄 License

MIT

About

Pure-managed, NativeAOT-ready PGM (RFC 3208) reliable multicast over UDP for modern .NET

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors