LibHFTDocumentationEngine comparison

Full-session and codec evidence

FIX engines compared under one contract.

Compare FIX engines by language and workload. Start with codec timings or complete session exchanges, then inspect the matching percentiles and measurement details.

Evidence refreshed: 2026-10-26Top-five CDF · full roster tableFive language groups

Choose your test

What do you want to compare?

CODEC

Parsing and encoding

Compare in-process message work with peers in the same language. See p50, tail percentiles and the top-five profiles.

Explore codec microbenchmarks →
FULL SESSION

Complete FIX exchanges

Compare engines on the same machines, with matching messages, timing boundaries and rates. Check which comparisons are complete.

See full-session comparisons →
RESULT CATALOGUE

Find a specific result

Filter recorded results by machine, engine, workload and transport. Inspect the original grades and source references.

Browse the result catalogue →
How results qualify and what has changed

A full-session comparison must complete all four workloads on both sides, on the same machines, with matching timing and rate requirements. The detailed records use S5 for this qualification stage. A specific CPU profile names the processor allocation used for that test.

Qualification details

Current comparison status and corrections.

C++ callback CORE / NexusFIX retains its qualified two-rig comparison. Earlier Rust open / NanoFIX and TrueFix canonical figures are superseded: their clock spans omit required work. Original grades and data remain historical. A fresh corrected-clock Rust / NanoFIX comparison now passes all four flows on both rigs under the explicit first-CPU profile.

Actual Native and public managed .NET first-CPU configurations now each pass all four flows on both rigs, within one declared source/generation per host and configuration. The fresh inherited collections retain SCAN Native tick stability and managed mixed-rate failures. Older good cells remain available without completing a failed fresh collection; the completed .NET 10 / QuickFIX/n comparison remains blocked: only HP NOS/tick are admitted. The current Java Pure / Philadelphia-fast comparison admits HP MD/tick and no SCAN flow. Both complete two-rig language minima remain blocked. Inspect Native configurations → · Inspect public managed configurations →

Review per-rig gates and the correction record → · Current target roster by language (Markdown) → · Current coverage document → · All targets and source hashes (JSON) →

Latest codec comparison

25 adapters. Checked numeric field work.

The qualified HP microbenchmark campaign of 18 October 2026 passes 25 build/run gates and 332 isolated text/numeric probes at LibHFT source 5917330b7c2c. C++, Java and Rust each have five-engine CDFs; .NET has four measured peers and Go one. llfix encoding is ranked; its receive cells include SDK timestamp, sequence and callback work and stay unranked. Codec results are not full-session evidence.

Retained transport reference

Explore the retained transport reference.

The charts below use retained open-loop v4 results dated 20 September 2026. Newer tests refresh the source-bound configuration notes; the status badges in these reference tables retain their original campaign grades. Current matched decisions have their own source and clock bindings above. There is no replacement matched, passing five-engine physical-link campaign. Rates, hosts, functional smokes and qualified latency runs are kept separate.

Each measured cell used three 30-second windows after warm-up. The workload is NewOrderSingle → acknowledgement. Response time starts at the intended send slot and includes scheduling delay. Transport paths are separate selections, never each engine’s cherry-picked best path.

CDFs connect recorded percentile anchors, not raw empirical samples. Missing targets show no latency. Read the timing contract →

HP · kernel TCP · single session · 50,000 requests/s · retained NOS/ER reference.

Read selected workflow: order → acknowledgement →

Workload and measurement points

What does each test measure?

Expand a scenario to follow the FIX messages, locate t0/t1, and inspect a complete captured example for every leg. The shaded interval is timed; grey dashed work is excluded. These diagrams explain the tests, not their performance.

Swipe diagrams horizontally on a small screen, or open them at full size.

What this test measures: Order → acknowledgementnos_er · D → 8 · Client clock

Client clock: t1 − t0. Both timestamps belong to one endpoint; synchronized host clocks are not required.

Scheduled order-response latency
Published open-loop reference. t0 is the intended send slot; scheduler delay is included. t1 follows reply parsing and required checks. Open diagram ↗
t0 · start
Published transport reference: the intended send slot, before any scheduling delay. Canonical actual-start tests: immediately before order construction and the engine-specific send call.
t1 · stop
After the client parses the derived acknowledgement and completes the required business-field extraction and checks.
Included
Client order construction/send, both endpoints, the network, server order processing and acknowledgement construction, then client reply processing. The displayed open-loop reference also includes scheduler delay.
Excluded
Session establishment and warm-up are outside the headline samples. An acknowledgement is not a trade fill.
Compare the canonical actual-start boundary

Canonical nos_er starts immediately before construction/send, not at the intended schedule slot. Scheduling delay is a separate probe. Do not mix that service-time distribution with the displayed open-loop reference.

Order round trip · nos_er
Client clock: t0 before order construction/send, D to the server, derived ACK 8 back, t1 after client parsing and required extraction/checks. Open diagram ↗

Captured sample FIX messages

One complete, correlated chain from the synthetic QuickFIX/C++ functional audit. These are actual captured bytes illustrating the current canonical wire shape, not messages from the older transport campaign or measured latency samples.

The acknowledgement echoes order 11=1, symbol LCOM1, buy side, quantity 1000 and price 10000.00000. ExecType 150=0 and OrdStatus 39=0 mean New: CumQty is 0, LeavesQty is 1000 and AvgPx is 0. No LastQty/LastPx fill fields are present.

1. CLIENT → SERVER · NewOrderSingle 35=D

8=FIX.4.4|9=132|35=D|34=2|49=CLIENT|52=20261003-00:42:20.433|56=SERVER|
11=1|21=1|38=1000|40=2|44=10000.00000|54=1|55=LCOM1|60=20260703-12:00:00.000|
10=201|

2. SERVER → CLIENT · ExecutionReport · New acknowledgement 35=8

8=FIX.4.4|9=182|35=8|34=2|49=SERVER|52=20261003-00:42:20.433|56=CLIENT|
6=0.00000|11=1|14=0|17=TCP-EXEC|37=TCP-ORDER|38=1000|39=0|44=10000.00000|54=1|55=LCOM1|60=20260703-12:00:00.000|150=0|151=1000|
10=060|

| represents SOH (ASCII 0x01). Remove display line breaks and restore SOH to recover the exact message, including valid BodyLength (9) and CheckSum (10). FIX SendingTime (52) is a wall-clock field, not the monotonic measurement clock: do not subtract these timestamps to estimate latency. Tag 60 retains the fixed July fixture time.

Download the original synthetic wire capture → · Download all checked examples and source hashes →

What this test measures: Market-data request → full bookmd · V → W · Client clock

Client clock: t1 − t0. Both timestamps belong to one endpoint; synchronized host clocks are not required.

Market-data round trip · md
Client clock: t0 before market-data request construction/send, V requests 10 levels, W returns 20 bid/offer entries, t1 after snapshot parsing and required checks. No order is sent. Open diagram ↗
t0 · start
Immediately before constructing and sending the market-data request, at actual task start.
t1 · stop
After the client parses the full snapshot and completes the required book-field extraction and checks.
Included
Request construction/send, server request parsing and book construction, both network legs, and client parsing/checking of the ten-level snapshot.
Excluded
Session establishment and warm-up. No order submission or ExecutionReport leg belongs to this test.

This diagram explains the canonical actual-start test. It does not assert that a matching passing distribution is available for the current chart selection.

Captured sample FIX messages

One complete, correlated chain from the synthetic QuickFIX/C++ functional audit. These are actual captured bytes illustrating the current canonical wire shape, not messages from the older transport campaign or measured latency samples.

Request 262=1 asks for 264=10 levels and both bid/offer types. Its snapshot echoes the request ID and symbol; 268=20 counts twenty entries, not twenty levels. The complete wire example includes all ten bid/offer pairs in order.

1. CLIENT → SERVER · MarketDataRequest 35=V

8=FIX.4.4|9=113|35=V|34=2|49=CLIENT|52=20261003-00:42:26.939|56=SERVER|
146=1|55=LCOM1|262=1|263=0|264=10|265=0|267=2|269=0|269=1|
10=083|

2. SERVER → CLIENT · MarketDataSnapshotFullRefresh 35=W

8=FIX.4.4|9=688|35=W|34=2|49=SERVER|52=20261003-00:42:26.939|56=CLIENT|
55=LCOM1|262=1|268=20|
269=0|270=10000.00000|271=1000|269=1|270=10001.00000|271=1000|
269=0|270=9999.99000|271=1010|269=1|270=10001.01000|271=1010|
269=0|270=9999.98000|271=1020|269=1|270=10001.02000|271=1020|
269=0|270=9999.97000|271=1030|269=1|270=10001.03000|271=1030|
269=0|270=9999.96000|271=1040|269=1|270=10001.04000|271=1040|
269=0|270=9999.95000|271=1050|269=1|270=10001.05000|271=1050|
269=0|270=9999.94000|271=1060|269=1|270=10001.06000|271=1060|
269=0|270=9999.93000|271=1070|269=1|270=10001.07000|271=1070|
269=0|270=9999.92000|271=1080|269=1|270=10001.08000|271=1080|
269=0|270=9999.91000|271=1090|269=1|270=10001.09000|271=1090|
10=218|

| represents SOH (ASCII 0x01). Remove display line breaks and restore SOH to recover the exact message, including valid BodyLength (9) and CheckSum (10). FIX SendingTime (52) is a wall-clock field, not the monotonic measurement clock: do not subtract these timestamps to estimate latency. Tag 60 retains the fixed July fixture time.

Download the original synthetic wire capture → · Download all checked examples and source hashes →

What this test measures: Book → derived order → acknowledgementmd_nos_er · V → W → D → 8 · Client clock

Client clock: t1 − t0. Both timestamps belong to one endpoint; synchronized host clocks are not required.

Market data to order · md_nos_er
Client clock: V request, ten-level W snapshot, client derives D from parsed book values, server returns ACK 8, t1 after report parsing and required checks. Two request/reply legs plus client derivation, not a single round trip. Open diagram ↗
t0 · start
Immediately before constructing and sending the market-data request, at actual task start.
t1 · stop
After parsing the final acknowledgement and completing the required report checks.
Included
Both request/reply legs, full-book parsing/checks, client-side order derivation from the received book, order construction/send and final acknowledgement processing. One interval covers the entire chain.
Excluded
Session establishment and warm-up. A prebuilt constant reaction order is not a valid substitute for deriving it from the parsed snapshot.

This diagram explains the canonical actual-start test. It does not assert that a matching passing distribution is available for the current chart selection.

Captured sample FIX messages

One complete, correlated chain from the synthetic QuickFIX/C++ functional audit. These are actual captured bytes illustrating the current canonical wire shape, not messages from the older transport campaign or measured latency samples.

The received marker 262=1 is odd, so the client derives a buy (54=1). It uses the parsed best ask 10001.00000 for 44 and the ask size 1000 for 38 (within the lot/cap bounds). Order 11=1 carries the same marker; the final acknowledgement echoes these derived values.

1. CLIENT → SERVER · MarketDataRequest 35=V

8=FIX.4.4|9=113|35=V|34=2|49=CLIENT|52=20261003-00:42:35.638|56=SERVER|
146=1|55=LCOM1|262=1|263=0|264=10|265=0|267=2|269=0|269=1|
10=079|

2. SERVER → CLIENT · MarketDataSnapshotFullRefresh 35=W

8=FIX.4.4|9=688|35=W|34=2|49=SERVER|52=20261003-00:42:35.638|56=CLIENT|
55=LCOM1|262=1|268=20|
269=0|270=10000.00000|271=1000|269=1|270=10001.00000|271=1000|
269=0|270=9999.99000|271=1010|269=1|270=10001.01000|271=1010|
269=0|270=9999.98000|271=1020|269=1|270=10001.02000|271=1020|
269=0|270=9999.97000|271=1030|269=1|270=10001.03000|271=1030|
269=0|270=9999.96000|271=1040|269=1|270=10001.04000|271=1040|
269=0|270=9999.95000|271=1050|269=1|270=10001.05000|271=1050|
269=0|270=9999.94000|271=1060|269=1|270=10001.06000|271=1060|
269=0|270=9999.93000|271=1070|269=1|270=10001.07000|271=1070|
269=0|270=9999.92000|271=1080|269=1|270=10001.08000|271=1080|
269=0|270=9999.91000|271=1090|269=1|270=10001.09000|271=1090|
10=214|

3. CLIENT → SERVER · NewOrderSingle 35=D

8=FIX.4.4|9=132|35=D|34=3|49=CLIENT|52=20261003-00:42:35.638|56=SERVER|
11=1|21=1|38=1000|40=2|44=10001.00000|54=1|55=LCOM1|60=20260703-12:00:00.000|
10=216|

4. SERVER → CLIENT · ExecutionReport · New acknowledgement 35=8

8=FIX.4.4|9=182|35=8|34=3|49=SERVER|52=20261003-00:42:35.638|56=CLIENT|
6=0.00000|11=1|14=0|17=TCP-EXEC|37=TCP-ORDER|38=1000|39=0|44=10001.00000|54=1|55=LCOM1|60=20260703-12:00:00.000|150=0|151=1000|
10=075|

| represents SOH (ASCII 0x01). Remove display line breaks and restore SOH to recover the exact message, including valid BodyLength (9) and CheckSum (10). FIX SendingTime (52) is a wall-clock field, not the monotonic measurement clock: do not subtract these timestamps to estimate latency. Tag 60 retains the fixed July fixture time.

Download the original synthetic wire capture → · Download all checked examples and source hashes →

What this test measures: Completed tick → reaction-order arrivaltick_to_trade · W → D · Feed/server clock

Feed/server clock: t1 − t0. Both timestamps belong to one endpoint; synchronized host clocks are not required.

Tick to trade · tick_to_trade
Same feed clock: build the top-of-book tick outside timing; t0 immediately before sending completed W with two entries; client parses and derives D; t1 at feed-side engine delivery of D before benchmark extraction/marker checks. No ExecutionReport leg. Open diagram ↗
t0 · start
Immediately before sending the completed top-of-book tick. Constructing and finalising W happens before this timestamp.
t1 · stop
The first instruction of the feed-side application callback after the engine frames/parses the returning order, before benchmark-side marker/extraction checks.
Included
Tick send, both network legs, client tick parsing, decision and order derivation/construction/send, and feed-side engine delivery of the returning order.
Excluded
Tick construction and finalisation, then post-t1 marker matching and benchmark extraction checks. Those checks can still invalidate the result. There is no acknowledgement/fill leg.

This diagram explains the canonical actual-start test. It does not assert that a matching passing distribution is available for the current chart selection.

Captured sample FIX messages

One complete, correlated chain from the synthetic QuickFIX/C++ functional audit. These are actual captured bytes illustrating the current canonical wire shape, not messages from the older transport campaign or measured latency samples.

The tick is top-of-book only: 268=2, one bid and one offer. Marker 262=1 produces buy order 11=1 at the parsed ask 10001.00000 for quantity 1000. No 35=8 is sent in the headline tick-to-trade workflow.

1. SERVER → CLIENT · MarketDataSnapshotFullRefresh 35=W

8=FIX.4.4|9=138|35=W|34=2|49=SERVER|52=20261003-00:42:39.983|56=CLIENT|
55=LCOM1|262=1|268=2|
269=0|270=10000.00000|271=1000|269=1|270=10001.00000|271=1000|
10=005|

2. CLIENT → SERVER · NewOrderSingle 35=D

8=FIX.4.4|9=132|35=D|34=2|49=CLIENT|52=20261003-00:42:39.984|56=SERVER|
11=1|21=1|38=1000|40=2|44=10001.00000|54=1|55=LCOM1|60=20260703-12:00:00.000|
10=223|

| represents SOH (ASCII 0x01). Remove display line breaks and restore SOH to recover the exact message, including valid BodyLength (9) and CheckSum (10). FIX SendingTime (52) is a wall-clock field, not the monotonic measurement clock: do not subtract these timestamps to estimate latency. Tag 60 retains the fixed July fixture time.

Download the original synthetic wire capture → · Download all checked examples and source hashes →

Read the complete canonical scenario contract → · Codec operation diagrams and all nine microbenchmark tests →

Comparison by language

C++ and C

Latest codec CDF · HP · 18 October 2026

NewOrderSingle · checked parse and extract · rounded batch-average nanoseconds per operation, 32 operations per sample. This fixed codec chart does not change with the full-session selectors. It excludes networking and session state.

LibHFT C++hffixNexusFIXFixpplibtrading
Reconstructed CDF of the fastest 5 qualifying engines by p50
Percentile-anchor reconstruction, not a raw-sample empirical CDF. Up to five engines with matching evidence; the table retains the full roster. Open CDF ↗

llfix receive results → Listed separately and unranked: they include SDK timestamp, sequence and callback work.

Full C++ and C codec table and all nine test selections →

Retained full-session CDF · 20 September 2026

Read selected workflow: order → acknowledgement →

LibHFT C++
Reconstructed CDF of the fastest 1 qualifying engines by p50
Percentile-anchor reconstruction, not a raw-sample empirical CDF. Up to five engines with matching evidence; the table retains the full roster. Open CDF ↗
RankEnginep50 (µs)p99 (µs)p99.9 (µs)Evidence
1LibHFT C++13.57717.93523.523Recorded passing transport cell
—quickfix_cppNo matching admitted distributionRetained campaign: S5 diag 4/4
—nexusfixNo matching admitted distributionRetained campaign: S5 diag 4/4
—fix8No matching admitted distributionRetained campaign: S5 diag 4/4
—llfixNo matching admitted distributionRetained campaign: blocked
—hffixNo matching admitted distributionRetained campaign: codec only
—fixppNo matching admitted distributionRetained campaign: codec only
—robaho_cpp_fix_codecNo matching admitted distributionRetained campaign: codec only
—openfixNo matching admitted distributionRetained campaign: blocked
—robaho_cpp_fix_engineNo matching admitted distributionRetained campaign: blocked
—libtradingNo matching admitted distributionRetained campaign: S5 diag 4/4
All targets and latest full-session notes

Current source-bound configuration notes accompany the retained campaign grades. A passing historical cell cannot fill a failed or retired current configuration.

EngineFull-session targetRetained campaign gradeLatest full-session note
libhft-cpprequiredS5 pass 4/4Current callback CORE/kernel/no-store comparison with NexusFIX passes all four flows on HP and SCAN after independent full replay (2026-10-14). Earlier before-parser tick comparisons remain separate; QuickFIX-family anchor, other flavours and public release remain open.
quickfix_cpprequiredS5 diag 4/4Complete canonical, bounded-preflight, threaded, checked-precision, integer-quantity, group-metadata and first-CPU physical configurations are retained separately. Both latest first-CPU campaigns and independent cold readers complete; every flow still misses the unchanged 10000/s report rate and exports zero cells (2026-10-19). Earlier non-parity rows remain historical; no unchanged timing retry is pending.
nexusfixrequiredS5 diag 4/4Current original NexusFIX versus callback CORE comparison passes all four flows on both accepted DAC rigs with independent replay (2026-10-14). This closes the C++ minimum only; wider-roster and release gates remain open.
fix8requiredS5 diag 4/4Original fixed-scale production Session, complete clocks/cadence/phases and immutable runtime qualify on both hosts. Both quiet DAC campaigns and independent full replay complete: HP passes all four flows; SCAN passes NOS/tick, MD misses rate and mixed misses rate/delay. Six distinct compact cells are admitted; no complete two-rig matched comparison is claimed (2026-10-24).
llfixrequiredblockedadapter ready; retained session, store/recovery and host evidence missing
hffixn/acodec onlySee the retained campaign and current matched decisions.
fixppn/acodec onlySee the retained campaign and current matched decisions.
robaho_cpp_fix_codecn/acodec onlyno tested session endpoint
openfixexcludedblockedno licence; Bazel-only; gnu++23
robaho_cpp_fix_engineexcludedblockedupstream build fails; licence unknown
libtradingrequiredS5 diag 4/4Separate canonical text-numeric configuration passes all four report flows on both accepted DAC rigs with exact independent replay and observed before/after host/NIC provenance. Eight compact cells retain source CDFs; website delivery uses summaries. The explicit 48-to-128 field capacity patch and older non-parity adapter remain separate (2026-10-19). C is reference-only, with no LibHFT C flavour or matched-language admission.

Comparison by language

Java

Latest codec CDF · HP · 18 October 2026

NewOrderSingle · checked parse and extract · rounded batch-average nanoseconds per operation, 32 operations per sample. This fixed codec chart does not change with the full-session selectors. It excludes networking and session state.

LibHFT Java PureLibHFT Java/JNIFalconPhiladelphiaQuickFIX/J
Reconstructed CDF of the fastest 5 qualifying engines by p50
Percentile-anchor reconstruction, not a raw-sample empirical CDF. Up to five engines with matching evidence; the table retains the full roster. Open CDF ↗

Full Java codec table and all nine test selections →

Retained full-session CDF · 20 September 2026

Read selected workflow: order → acknowledgement →

LibHFT Java/JNILibHFT Java Pure
Reconstructed CDF of the fastest 2 qualifying engines by p50
Percentile-anchor reconstruction, not a raw-sample empirical CDF. Up to five engines with matching evidence; the table retains the full roster. Open CDF ↗
RankEnginep50 (µs)p99 (µs)p99.9 (µs)Evidence
1LibHFT Java/JNI15.66518.65624.764Recorded passing transport cell
2LibHFT Java Pure17.06318.55920.856Recorded passing transport cell
—philadelphiaNo matching admitted distributionRetained campaign: S5 pass 4/4
—philadelphia-fastNo matching admitted distributionRetained campaign: S5 pass 4/4
—crossfixNo matching admitted distributionRetained campaign: S5 pass 4/4
—quickfixjNo matching admitted distributionRetained campaign: S5 diag 4/4
—artioNo matching admitted distributionRetained campaign: S5 diag 4/4
—falconNo matching admitted distributionRetained campaign: S3 smoke 1/4
All targets and latest full-session notes

Current source-bound configuration notes accompany the retained campaign grades. A passing historical cell cannot fill a failed or retired current configuration.

EngineFull-session targetRetained campaign gradeLatest full-session note
libhft-java-purerequiredS5 pass 4/4See the retained campaign and current matched decisions.
libhft-java-jnirequiredS5 pass 4/4See the retained campaign and current matched decisions.
philadelphiarequiredS5 pass 4/4See the retained campaign and current matched decisions.
philadelphia-fastrequiredS5 pass 4/4Current complete callback comparison with the ASCII-numeric Java Pure baseline admits HP MD/tick only; no SCAN flow is admitted, so the Java two-rig minimum is blocked (2026-10-17). Both full physical collections and independent readers complete. Historical passing cells and superseded source comparisons never fill a current failed flow.
crossfixconditionalS5 pass 4/4CrossFIX 1.6; 2.0 is not headline-grade; licensed installation only
quickfixjrequiredS5 diag 4/4Original SDK canonical callback/complete-RTT default-GC configuration completes both sixteen-pair physical matrices and independent bounded collections. Every flow still fails rate and scheduler delay; SCAN NOS also fails percentile stability. Prior Epsilon, race and qualification failures remain separate; no unchanged timing retry is pending. QuickFIX-family anchor admission remains blocked (2026-10-17).
artiorequiredS5 diag 4/4New original numeric codec and production Session qualify through clocks, bounded capture, cadence/backpressure, shared phases and installed DAC runtime on both hosts. Both full sixteen-pair quiet physical campaigns and independent full-value admissions complete; all flows retain rate/delay failures and zero cells are exported (2026-10-25). Original v10 diagnostics remain historical; no unchanged timing retry is pending.
falconn/aS3 smoke 1/4no market-data messages, so N/A for the four flows

Comparison by language

.NET

Latest codec CDF · HP · 18 October 2026

NewOrderSingle · checked parse and extract · rounded batch-average nanoseconds per operation, 32 operations per sample. This fixed codec chart does not change with the full-session selectors. It excludes networking and session state.

LibHFT .NET NativeLibHFT .NET PureFIX Antenna .NET CoreQuickFIX/n
Reconstructed CDF of the fastest 4 qualifying engines by p50
Percentile-anchor reconstruction, not a raw-sample empirical CDF. Up to five engines with matching evidence; the table retains the full roster. Open CDF ↗

Full .NET codec table and all nine test selections →

Retained full-session CDF · 20 September 2026

Read selected workflow: order → acknowledgement →

LibHFT .NET NativeLibHFT .NET Pure
Reconstructed CDF of the fastest 2 qualifying engines by p50
Percentile-anchor reconstruction, not a raw-sample empirical CDF. Up to five engines with matching evidence; the table retains the full roster. Open CDF ↗
RankEnginep50 (µs)p99 (µs)p99.9 (µs)Evidence
1LibHFT .NET Native15.48116.53719.042Recorded passing transport cell
2LibHFT .NET Pure20.79424.81128.828Recorded passing transport cell
—quickfix_nNo matching admitted distributionRetained campaign: S5 diag 4/4
—fixantenna_netNo matching admitted distributionRetained campaign: S5 diag 4/4
All targets and latest full-session notes

Current source-bound configuration notes accompany the retained campaign grades. A passing historical cell cannot fill a failed or retired current configuration.

EngineFull-session targetRetained campaign gradeLatest full-session note
libhft-dotnet-managedrequiredS5 pass 4/4Actual public managed .NET 10 first-CPU complete-RTT/callback baseline passes all four flows on both accepted DAC rigs with independent full replay (2026-10-17). The matched QuickFIX/n comparison remains blocked by peer timing. Earlier .NET 8 and inherited-placement configurations keep their own source/clock identities and grades.
libhft-dotnet-nativerequiredS5 pass 4/4Actual public Native handler/complete-RTT first-CPU configuration passes all four flows on both accepted DAC rigs after the qualified single-traversal book extraction and independent full replay (2026-10-17). Inherited-placement, historical receive-clock and earlier mixed/tick failures remain separate. No .NET peer comparison is inferred from Native results.
quickfix_nrequiredS5 diag 4/4Original public SDK .NET 10 parsing-metadata/complete-request first-CPU configuration completes both quiet physical campaigns and independent full replay. HP NOS/tick pass; HP MD/mixed and every SCAN flow fail rate, with other delay/stability blockers retained. The independent two-rig .NET comparison is blocked and failed flows have no ratios (2026-10-17). Validated/inherited and historical non-parity configurations remain separate.
fixantenna_netadmissionS5 diag 4/4Original numeric writer, production Session, exact clocks/shared phases, report preflight and immutable DAC deployments qualify independently on both hosts. Both original report and separate receiver-placement full physical campaigns complete with independent replay; all flows fail rate/delay and write zero cells (2026-10-26). Tick retains an SDK-envelope prepared-application boundary blocker; original SDK/harness stay unchanged. No unchanged campaign rerun or .NET admission is pending.

Comparison by language

Rust

Latest codec CDF · HP · 18 October 2026

NewOrderSingle · checked parse and extract · rounded batch-average nanoseconds per operation, 32 operations per sample. This fixed codec chart does not change with the full-session selectors. It excludes networking and session state.

LibHFT RustNanoFIXTrueFixDFXfixer-rs
Reconstructed CDF of the fastest 5 qualifying engines by p50
Percentile-anchor reconstruction, not a raw-sample empirical CDF. Up to five engines with matching evidence; the table retains the full roster. Open CDF ↗

Full Rust codec table and all nine test selections →

Retained full-session CDF · 20 September 2026

Read selected workflow: order → acknowledgement →

LibHFT Rust
Reconstructed CDF of the fastest 1 qualifying engines by p50
Percentile-anchor reconstruction, not a raw-sample empirical CDF. Up to five engines with matching evidence; the table retains the full roster. Open CDF ↗
RankEnginep50 (µs)p99 (µs)p99.9 (µs)Evidence
1LibHFT Rust14.50415.87618.233Recorded passing transport cell
—libhft-rust-nativeNo matching admitted distributionRetained campaign: parked
—dfxNo matching admitted distributionRetained campaign: S5 diag 4/4
—fixer_rsNo matching admitted distributionRetained campaign: S5 diag 4/4
—truefixNo matching admitted distributionRetained campaign: S4 diag 4/4
—nanofixNo matching admitted distributionRetained campaign: S5 pass 4/4
—ferrumfixNo matching admitted distributionRetained campaign: codec only
All targets and latest full-session notes

Current source-bound configuration notes accompany the retained campaign grades. A passing historical cell cannot fill a failed or retired current configuration.

EngineFull-session targetRetained campaign gradeLatest full-session note
libhft-rust-purerequiredS5 pass 4/4Corrected complete-RTT/callback first-CPU Rust open versus NanoFIX comparison passes all four flows on HP and SCAN with independently replayed physical evidence (2026-10-17). Earlier shortened-clock canonical comparisons are retired; inherited-placement failures, TrueFix, other flavours and release remain separate.
libhft-rust-nativeparkedparkedparked 2026-09-11
dfxrequiredS5 diag 4/4Both original pinned SDK writer/parser investigations preserve all values and group associations but expose canonical outer-field-order failures in every flow. Explicit body-only order controls pass; the production Session uses the default writer. A supported canonical production writer remains blocked before fresh Session/clock/DAC admission (2026-10-19); legacy non-parity diagnostics remain historical.
fixer_rsrequiredS5 diag 4/4Separate public custom-order SDK configuration qualifies through real Session, prepared/callback clocks and timed phases on both hosts. Both complete quiet DAC matrices and independent full replay finish: HP NOS/tick pass; HP MD/mixed and all SCAN flows retain report blockers. Two new compact cells are admitted; no unchanged timing retry is pending. A complete matched comparison remains blocked (2026-10-23).
truefixadmissionS4 diag 4/4Corrected callback/complete-RTT current-thread production Session completes both full physical matrices and independent cold readers (2026-10-17). Five current compact cells pass: HP NOS/MD/tick and SCAN NOS/tick. HP mixed and SCAN MD/mixed retain report timing failures. Original shortened-clock results remain retired; a compatible separately qualified first-CPU/configuration and fresh matched two-rig comparison remain open.
nanofixadmissionS5 pass 4/4Corrected complete-RTT/callback first-CPU original public-transport NanoFIX versus Rust open comparison passes all four flows on both accepted DAC rigs with independent matched replay (2026-10-17). Older shortened-clock results remain retired and do not supply current admission; the explicit Aeron compatibility patch remains declared.
ferrumfixn/acodec onlySee the retained campaign and current matched decisions.

Comparison by language

Go

Latest codec CDF · HP · 18 October 2026

NewOrderSingle · checked parse and extract · rounded batch-average nanoseconds per operation, 32 operations per sample. This fixed codec chart does not change with the full-session selectors. It excludes networking and session state.

QuickFIX/Go
Reconstructed CDF of the fastest 1 qualifying engines by p50
Percentile-anchor reconstruction, not a raw-sample empirical CDF. Up to five engines with matching evidence; the table retains the full roster. Open CDF ↗

Full Go codec table and all nine test selections →

Retained full-session CDF · 20 September 2026

Read selected workflow: order → acknowledgement →

No matching admitted full-session distribution. The source roster remains visible below; no curve or latency is invented.

RankEnginep50 (µs)p99 (µs)p99.9 (µs)Evidence
—quickfix_goNo matching admitted distributionRetained campaign: S5 diag 4/4
All targets and latest full-session notes

Current source-bound configuration notes accompany the retained campaign grades. A passing historical cell cannot fill a failed or retired current configuration.

EngineFull-session targetRetained campaign gradeLatest full-session note
quickfix_gorequiredS5 diag 4/4Original public writer/parser capability completes on both hosts at the retained microbench SDK pin, with all values and group associations intact. All 240 frames per host differ in canonical outer order because the public field map sorts tags; fresh Session/clock/DAC admission is blocked on a supported writer path (2026-10-19). Go remains reference-only, with no LibHFT Go flavour.

Read the current test evidence.

Correctness gates, wire captures, ownership checks, prepared clocks and scheduler-delay tests from 2–3 October are retained in the archive. Functional passes are not latency distributions; overloaded, incomplete and non-parity attempts stay out of these curves.

Download this page’s measured snapshot and source hashes.