LibHFTFlavorsC++ FIX engine

Native reference engine

LibHFT C++ FIX engine.

The LibHFT C++ FIX engine is the native reference implementation of the family: it owns the session, transport and storage path directly, and the Java/JNI and .NET Native flavors run their sessions on it.

Native C++ reference27/27 session behaviors78/79 tracked API capabilitiesHP · 19–20 Sep 2026

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 categoryWhat the C++ flavor coversStatus
Session lifecycleInitiator and acceptor Logon, heartbeat, TestRequest, Logout, schedules, credentials and reset policiesOwned
Sequence recoveryGap detection, ResendRequest, replay, GapFill, PossDup, sequence reset and desynchronisation handlingOwned
Connectivity and securityTCP initiator/acceptor operation, TLS, mutual TLS, certificate and hostname checks, reconnect and backup endpointsOwned
Durable state and auditMessage stores, persisted sequences, resend windows, fail-closed writes and exact-wire audit loggingOwned
ValidationRuntime dictionaries, required fields, data types, enums, field order, duplicate tags, repeating groups and reject codesIncluded
Latency engineeringOwner-thread pinning, send batching, raw sample export, latency stamps and optional hot-counter removalIncluded

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.

Capture replay is not certification.

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.

Transportp50p99p99.9Maximum
Kernel TCP13.577 µs17.935 µs23.523 µs109.617 µs
Solarflare Onload5.560 µs6.044 µs6.593 µs19.537 µs
Mellanox VMA6.142 µs6.701 µs7.183 µs20.516 µs
Solarflare TCPDirect4.702 µs4.976 µs5.363 µs13.581 µs
Mellanox SocketXtreme5.788 µs6.620 µs7.702 µs22.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.

MechanismClassC++
Solarflare OnloadPreload interposer beneath ordinary socketsYes
Mellanox VMA preloadPreload interposer beneath ordinary socketsYes
Solarflare TCPDirectVendor user-space TCP; SDK and build option requiredYes
Mellanox SocketXtremeVendor user-space TCP; SDK and build option requiredYes
ef_vi / ibverbs raw receivePacket ingest, not a TCP FIX sessionYes

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.

Migrating from QuickFIX to LibHFT →

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.