Implementation model
The engine three flavors run on.
C++ is LibHFT’s native reference engine. Session lifecycle, sequence recovery, connectivity and security, and durable state are implemented by this flavor itself. Two other flavors deliberately delegate those behaviors to it: Java/JNI and .NET Native expose managed APIs over the same C++ state machine.
| Capability category | What the C++ flavor covers | Status |
|---|---|---|
| Session lifecycle | Initiator and acceptor Logon, heartbeat, TestRequest, Logout, schedules, credentials and reset policies | Owned |
| Sequence recovery | Gap detection, ResendRequest, replay, GapFill, PossDup, sequence reset and desynchronisation handling | Owned |
| Connectivity and security | TCP initiator/acceptor operation, TLS, mutual TLS, certificate and hostname checks, reconnect and backup endpoints | Owned |
| Durable state and audit | Message stores, persisted sequences, resend windows, fail-closed writes and exact-wire audit logging | Owned |
| Validation | Runtime dictionaries, required fields, data types, enums, field order, duplicate tags, repeating groups and reject codes | Included |
| Latency engineering | Owner-thread pinning, send batching, raw sample export, latency stamps and optional hot-counter removal | Included |
From the generated binding coverage matrix reviewed on 30 September 2026: 78 of 79 tracked API capabilities (1 absent, 11 recorded n/a) and all 27 tracked session behaviors. Compare the capability map for all six flavors →
Protocol and session scope
FIX 4.0 to 5.0 SP2, typed messages and binary tracks.
The C++ engine loads the bundled QuickFIX-format dictionaries for FIX 4.0, 4.1, 4.2, 4.3, 4.4, 5.0, 5.0 SP1, 5.0 SP2 and FIXT 1.1 at runtime, and carries typed builders and views for 17 common message families: order entry, cancel/replace, execution reports, market data, quotes and rejects. Generated FAST 1.1 whole-message codecs and SBE codecs are available on the C++ track, and the native venue lane capture-replays CME MDP 3.0 market data.
- FIX versions supported: dictionaries, typed messages and the exact FAST, SBE and FIXP scope.
- FIX session recovery: gaps, ResendRequest, GapFill, reconnect and a refused durable write.
- High availability: one durable store, one primary, promotion without a sequence reset.
Replaying independently sourced packets proves behavior at a declared message boundary. It is not counterparty onboarding, exchange certification or support for every message in a protocol family.
Measured results · HP, 19–20 September 2026
One C++ session at 50,000 messages per second.
In the HP open-loop reference campaign, collected on 19 September 2026 and recorded on 20 September 2026 on the HP reference host (Intel Xeon Gold 6254), one C++ FIX session answered a sustained 50,000 NewOrderSingle → ExecutionReport requests per second. Each transport ran three 30-second windows after a 5-second warm-up: about 4.5 million responses. Response time runs from the intended send slot, so scheduler delay is included.
| Transport | p50 | p99 | p99.9 | Maximum |
|---|---|---|---|---|
| Kernel TCP | 13.577 µs | 17.935 µs | 23.523 µs | 109.617 µs |
| Solarflare Onload | 5.560 µs | 6.044 µs | 6.593 µs | 19.537 µs |
| Mellanox VMA | 6.142 µs | 6.701 µs | 7.183 µs | 20.516 µs |
| Solarflare TCPDirect | 4.702 µs | 4.976 µs | 5.363 µs | 13.581 µs |
| Mellanox SocketXtreme | 5.788 µs | 6.620 µs | 7.702 µs | 22.113 µs |
Each percentile is the mean of the three runs’ values; the maximum is the mean of the three runs’ maxima. Evidence: C++ FIX engine benchmarks · how the campaign was measured · results table (TSV) · stored results and CDFs.
A separate diagnostic SCAN sweep on 29 September 2026 (kernel TCP, one session) held 75,000 requests per second at 22.593 µs p50, 27.311 µs p99 and 35.050 µs p99.9, and first saturated at 100,000 per second. BrokerForge housekeeping processes ran on other cores, so it stays labelled diagnostic. Capacity brackets for every flavor →
Codec work is measured on its own: the qualified 25-adapter HP campaign of 18 October 2026 compares C++ parsing, field extraction and message building with its language peers. C++ codec microbenchmarks → · C++ and C engine comparison →
Transports
Every published acceleration path runs under C++.
All five mechanisms in the kernel-bypass coverage matrix are available under C++. They are not interchangeable: an interposer accelerates ordinary sockets, a user-space stack needs its vendor SDK at build time, and raw receive delivers Ethernet frames rather than a TCP FIX session.
| Mechanism | Class | C++ |
|---|---|---|
| Solarflare Onload | Preload interposer beneath ordinary sockets | Yes |
| Mellanox VMA preload | Preload interposer beneath ordinary sockets | Yes |
| Solarflare TCPDirect | Vendor user-space TCP; SDK and build option required | Yes |
| Mellanox SocketXtreme | Vendor user-space TCP; SDK and build option required | Yes |
| ef_vi / ibverbs raw receive | Packet ingest, not a TCP FIX session | Yes |
For the transport alone, a separate 23 August 2026 floor campaign on the dual-card HP Z6 G4 (Xeon Gold 6154) measured TCPDirect at 2.858 µs p50 and 2.908 µs p99, and SocketXtreme at 3.145 µs and 3.964 µs, with 500,000 samples per path. That is a transport measurement, not a FIX round trip. FIX over kernel bypass: the measured evidence →
QuickFIX/C++ counterpart
Coming from QuickFIX/C++.
The C++ flavor is LibHFT’s counterpart of QuickFIX/C++ ↗. QuickFIX-format XML dictionaries load as they are. The settings assessment classifies every QuickFIX/C++ setting as direct, semantic translation, application-owned, unsupported or sensitive, and replay, recovery and store conformance run before any benchmark or cutover.
Selection
When the C++ flavor fits.
- Choose C++ when the application owns the native path and vendor SDK integration directly.
- If the application is written in Java or C#, Java/JNI and .NET Native keep this engine beneath a managed API; Java Pure, .NET Pure and Rust Pure are independent engines.
- Benchmark the exact flavor, transport, message path and deployment hardware you will operate.