Repository navigation
v3.4.0
Highlights
- Restores high-volume
PipeDecoderthroughput by replacing a full all-aircraft cache scan on every message with amortized global cleanup. - Preserves exact TTL behavior with a bounded per-ICAO expiry check before cached state can influence decoding, including ambiguous BDS 5,0/6,0 inference.
- Avoids empty state entries and skips state-field extraction for downlink formats that cannot contribute to inference.
- Adds
scripts/stream_filtered.py, a configurable Beast live/replay example that filters inexpensive DF/typecode headers before full decoding. - Adds reproducible, version-isolated mixed-traffic and high-cardinality benchmarks with checked-in reports and the public Beast capture.
Performance
Measured on the committed 176,612-frame mixed Beast capture:
| Decoder path | Throughput |
|---|---|
| pyModeS 2.21.1 selective helpers | 52,998 msg/s |
v3.3.0 PipeDecoder |
3,897 msg/s |
v3.4.0 PipeDecoder |
49,243 msg/s |
| v3.4.0 + header prefilter | 85,963 msg/s |
The v3.3.0 and v3.4.0 paths emitted the same 28,404 events with an identical output digest. On the 2,000-aircraft synthetic workload, v3.4.0 reached 38,838 msg/s versus v2.21.1 at 39,604 msg/s, also with identical normalized output.
Validation
- 1,185 tests passed
- Ruff formatting and lint passed
- Mypy strict checks passed
- Wheel and sdist build passed
- Clean-wheel installation smoke test passed
Full Changelog: v3.3.0...v3.4.0