What motivated you to build NexusFIX? Why not just use QuickFIX?
QuickFIX was designed in the early 2000s around C++98/03 idioms: virtual dispatch, heap allocation per message, string-based field storage. These patterns are fundamentally incompatible with sub-microsecond latency requirements. We started from first principles using C++23 capabilities that didn't exist when QuickFIX was designed.
Who is the target audience for NexusFIX?
Quantitative trading firms and infrastructure teams that need deterministic, sub-microsecond FIX message processing. Specifically: firms running co-located strategies, teams building custom trading gateways, and C++ engineers studying modern performance techniques.
How does NexusFIX achieve zero heap allocations?
std::span<const char> views into the original buffer replace std::string copies. Pre-indexed arrays replace std::map. std::pmr::monotonic_buffer_resource provides arena allocation. The result: zero malloc calls on the hot path, verified via custom allocator instrumentation.
What C++23 features does NexusFIX use?
std::expected for error handling (no exceptions on hot path), std::span for zero-copy data views, concepts for compile-time interface validation, consteval for compile-time computation, and [[likely]]/[[unlikely]] branch hints.
How does the SIMD parsing work?
AVX2 instructions load 32 bytes at a time and use vectorized comparison to find SOH (\x01) delimiters in parallel. This is ~13x faster than byte-by-byte scanning. The technique is inspired by simdjson but adapted for FIX protocol semantics.
What FIX versions are supported?
FIX 4.4 has full support and is the most common in production. FIX 5.0 + FIXT 1.1 also has full support with only 2% overhead vs 4.4. The structural index is version-agnostic; field scanning works identically across FIX versions.
Is NexusFIX production-ready?
NexusFIX is in active development and has not yet been deployed in production trading environments. Benchmarks are from controlled environments with CPU pinning and cache warming. Production hardening is a separate engineering effort.
How does NexusFIX compare to Fix8?
Fix8 (C++11) uses object pools and zero-copy techniques. NexusFIX differs by leveraging C++23 standard library features (PMR, std::span, std::expected) instead of custom implementations, and by adding SIMD-accelerated parsing which Fix8 doesn't have.