Implementation ownership
The language boundary is a deployment decision.
Native reference engine
Direct native ownership of the session, transport and storage path.
C++ FIX engine → C++ benchmarks →Independent JVM engine
Session and codec behavior implemented in Java without the C++ runtime.
Java Pure overview → Java Pure benchmarks →Java API over C++
Provider-neutral Java-facing APIs backed by the native engine.
Java/JNI overview → Java/JNI benchmarks →Independent C# engine
Managed session and codec implementation without a native provider.
.NET Pure overview → .NET Pure benchmarks →C# API over hftnet/C++
A managed application boundary over the native provider and state machine.
.NET Native overview → .NET Native benchmarks →Independent Rust engine
Session, recovery, validation, storage and transport implemented in Rust.
Rust FIX engine → Rust benchmarks →Capability map
What is tracked across all six flavors.
The coverage ledger checks concrete engine functionality, not only whether an API symbol exists. This summary groups the detailed checks into the categories an engineering team evaluates when choosing and operating a FIX engine.
| Capability category | Functionality tracked | C++ | Java Pure | Java/JNI | .NET Pure | .NET Native | Rust |
|---|---|---|---|---|---|---|---|
| Typed FIX APIs | Order entry, cancel/replace, execution reports, quotes, market data, rejects and typed projections | Included | Included | Included | Included | Included | Included |
| Session lifecycle | Initiator and acceptor Logon, heartbeat, TestRequest, Logout, schedules, credentials and reset policies | Owned | Owned | C++ core | Owned | C++ core | Owned |
| Sequence recovery | Gap detection, ResendRequest, replay, GapFill, PossDup, sequence reset and desynchronisation handling | Owned | Owned | C++ core | Owned | C++ core | Owned |
| Validation | Runtime dictionaries, required fields, data types, enums, field order, duplicate tags, repeating groups and reject codes | Included | Included | Included | Included | Included | Included |
| Connectivity and security | TCP initiator/acceptor operation, TLS, mutual TLS, certificate and hostname checks, reconnect and backup endpoints | Owned | Owned | C++ core | Owned | C++ core | Owned |
| Durable state and audit | Message stores, persisted sequences, resend windows, fail-closed writes and exact-wire audit logging | Owned | Owned | C++ core | Owned | C++ core | Owned |
| High availability | Primary-store arbitration, standby retry, promotion and sequence restoration after takeover | Included | Included | Included | Included | Included | Included |
| Observability and control | Session metrics, Prometheus/JSON export, low-latency counter gating and audited operational controls | Tracked | Tracked | Tracked | Tracked | Tracked | Tracked |
| Latency engineering | Owner-thread pinning, send batching, raw sample export, latency stamps and optional hot-counter removal | Included | Included | Included | Included | Included | Included |
| Resilience evidence | Fuzzing, soak tests, reconnect churn, store-failure paths and multi-session pressure | Tracked | Tracked | Tracked | Tracked | Tracked | Tracked |
Owned means the flavor implements the engine behavior itself. C++ core means the Java/JNI or .NET Native API deliberately delegates that behavior to the native engine. Included and Tracked mean the category is covered by the source-derived inventory; they do not turn every optional provider path into a certification claim.
Category summary derived from the generated binding coverage matrix reviewed on 30 September 2026. The complete capability-by-capability ledger is available on request from contact@atrekes.com.
Shared behavior
What the parity ledger actually tracks.
All six flavors expose typed support for 17 common application and reject message families and the 27 tracked session behaviors. The session ledger covers lifecycle and failure-path behavior such as Logon, heartbeat, sequence gaps, resend, gap fill, reject handling, reconnect and durable state—not just message encoding.
Independent engines can diverge in implementation and performance. Native-backed providers intentionally reuse the C++ state machine. The public matrix records those differences instead of collapsing them behind one language label.
Selection guide
Choose by operational ownership, not syntax alone.
- Choose C++ when the application owns the native path and vendor SDK integration directly.
- Choose Java Pure, .NET Pure or Rust Pure when a standalone runtime-native engine is the architectural requirement.
- Choose Java/JNI or .NET Native when the managed application should reuse the C++ engine and its native transport integrations.
- Benchmark the exact flavor, transport, message path and deployment hardware you will operate.