NexusFIX Implementation Guide

January 25, 2026 · View on GitHub

Overview

Summary of NexusFIX implementation status, including supported FIX 4.4 message types, core modules, and benchmark results.


FIX 4.4 Message Types (Implemented)

Session Management Messages

Message TypeMsgTypeStatusDescription
LogonASupportedSession authentication, heartbeat negotiation
Logout5SupportedSession termination
Heartbeat0SupportedSession keepalive
TestRequest1SupportedHeartbeat solicitation
ResendRequest2SupportedGap fill request
SequenceReset4SupportedSequence number reset/gap fill
Reject3SupportedSession-level rejection

Order Flow Messages

Message TypeMsgTypeStatusDescription
NewOrderSingleDSupportedOrder submission
ExecutionReport8SupportedOrder fills, rejections, status
OrderCancelRequestFSupportedCancel existing order
OrderCancelReplaceRequestGSupportedModify existing order
OrderStatusRequestHSupportedQuery order status
OrderCancelReject9SupportedCancel rejection response

Market Data Messages

Message TypeMsgTypeStatusDescription
MarketDataRequestVSupportedSubscribe/unsubscribe to market data
MarketDataSnapshotFullRefreshWSupportedFull market data snapshot
MarketDataIncrementalRefreshXSupportedIncremental market data update
MarketDataRequestRejectYSupportedSubscription rejection

Total: 17 message types implemented


Core Modules

Parser Module (include/nexusfix/parser/)

FileFeatures
consteval_parser.hppCompile-time field specs, schema validation
runtime_parser.hppZero-copy IndexedParser, O(1) field lookup
simd_scanner.hppAVX2 SOH detection, field boundary scanning
field_view.hppZero-copy field reference, type conversion
repeating_group.hppRepeating group iterator, MDEntry parser

Session Module (include/nexusfix/session/)

FileFeatures
session_manager.hppSession lifecycle, admin message routing
state.hpp9-state machine, event-driven transitions
sequence.hppSequence number tracking, gap detection
coroutine.hppC++20 async patterns

Transport Module (include/nexusfix/transport/)

FileFeatures
tcp_transport.hppPOSIX socket, non-blocking I/O
socket.hppAbstract socket interface
io_uring_transport.hppLinux io_uring async I/O (optional)

Type System (include/nexusfix/types/)

FileFeatures
field_types.hppStrong types: FixedPrice, Qty, Side, OrdType
tag.hppCompile-time FIX tag definitions
error.hppstd::expected error handling
market_data_types.hppMDEntryType, MDUpdateAction, MDReqRejReason

Memory (include/nexusfix/memory/)

FileFeatures
buffer_pool.hppPre-allocated buffer pool, zero-allocation hot path

Benchmark Results (vs QuickFIX)

Test Configuration:

  • Iterations: 100,000
  • Messages: FIX 4.4 (ExecutionReport, NewOrderSingle, Heartbeat)
  • Measurement: RDTSC cycle-accurate timing

Parse Latency Comparison

Message TypeQuickFIXNexusFIXSpeedup
ExecutionReport (35=8)730 ns246 ns3.0x
NewOrderSingle (35=D)661 ns229 ns2.9x
Heartbeat (35=0)312 ns203 ns1.5x

Field Access Comparison

MetricQuickFIXNexusFIXSpeedup
4-field access31 ns11 ns2.9x

Throughput Comparison

EngineThroughputBandwidth
QuickFIX1.19M msg/sec191 MB/sec
NexusFIX4.17M msg/sec687 MB/sec
Speedup3.5x3.6x

FIX 5.0 / FIXT 1.1 Support

MetricFIX 4.4FIX 5.0Overhead
ExecutionReport232 ns237 ns+2%
Version detection-9 nsNegligible

C++ Features Used

FeatureUsage
C++23std::expected, concepts
Zero-copystd::span views
SIMDAVX2 intrinsics for field scanning
Compile-timeconsteval field offsets
Strong typesFixedPrice, Qty, SeqNum
CoroutinesC++20 async session management
PMRPre-allocated memory pools
Cache-line alignmentalignas(64) for hot structures
Branch hints[[likely]]/[[unlikely]]
Hot attributes[[gnu::hot]] for critical functions
LTO-flto=auto link-time optimization

FIX 5.0 / FIXT 1.1 Support

ComponentStatusDescription
FIXT 1.1 Session MessagesSupportedLogon, Logout, Heartbeat, TestRequest, ResendRequest, SequenceReset, Reject
FIX 5.0 Application MessagesSupportedNewOrderSingle, ExecutionReport, OrderCancelRequest, OrderCancelReject
ApplVerID (tag 1128)SupportedPer-message application version
DefaultApplVerID (tag 1137)SupportedIn FIXT 1.1 Logon message
Version detectionSupportedis_fixt11(), is_fix44(), is_fix4() methods

Directory Structure

nexusfix/
├── include/nexusfix/
│   ├── parser/           # Zero-copy FIX parser
│   ├── session/          # Session state machine
│   ├── transport/        # TCP/io_uring transport
│   ├── types/            # Strong types, tags, errors
│   ├── memory/           # Buffer pools
│   ├── messages/fix44/   # FIX 4.4 message types
│   └── interfaces/       # Message concepts
├── benchmarks/           # Performance benchmarks
│   └── vs_quickfix/      # QuickFIX comparison
├── tests/                # Unit tests (Catch2)
├── examples/             # Simple client example
└── docs/
    ├── design/           # Design documents
    └── compare/          # Benchmark comparison reports