O que motivou a construção do NexusFIX? Porque não usar apenas o QuickFIX?
O QuickFIX foi concebido nos primeiros anos da década de 2000 com idiomas C++98/03: despacho virtual, alocação de heap por mensagem, armazenamento de campos baseado em string. Estes padrões são fundamentalmente incompatíveis com requisitos de latência abaixo do microssegundo. Começámos do zero usando capacidades C++23 que não existiam quando o QuickFIX foi concebido.
Qual é o público-alvo do NexusFIX?
Empresas de trading quantitativo e equipas de infraestrutura que precisam de processamento FIX determinístico abaixo do microssegundo. Especificamente: empresas com estratégias co-localizadas, equipas a construir gateways de trading personalizados e engenheiros C++ a estudar técnicas modernas de desempenho.
Como é que o NexusFIX consegue zero alocações de heap?
Vistas std::span<const char> no buffer original substituem cópias std::string. Arrays pré-indexados substituem std::map. std::pmr::monotonic_buffer_resource fornece alocação em arena. O resultado: zero chamadas malloc no hot path, verificado via instrumentação de alocador personalizado.
Que funcionalidades C++23 utiliza o NexusFIX?
std::expected para tratamento de erros (sem exceções no hot path), std::span para vistas de dados sem cópia, conceitos para validação de interfaces em tempo de compilação, consteval para computação em tempo de compilação e dicas de ramo [[likely]]/[[unlikely]].
Como funciona o parsing SIMD?
As instruções AVX2 carregam 32 bytes de cada vez e usam comparação vetorizada para encontrar delimitadores SOH (\\x01) em paralelo. Isto é ~13x mais rápido do que o scanning byte a byte. A técnica é inspirada no simdjson mas adaptada para a semântica do protocolo FIX.
Que versões FIX são suportadas?
FIX 4.4 tem suporte completo e é o mais comum em produção. FIX 5.0 + FIXT 1.1 também tem suporte completo com apenas 2% de overhead vs 4.4. O índice estrutural é independente da versão — o scanning de campos funciona de forma idêntica em todas as versões FIX.
O NexusFIX está pronto para produção?
O NexusFIX está em desenvolvimento ativo e ainda não foi implantado em ambientes de trading em produção. Os benchmarks são de ambientes controlados com fixação de CPU e aquecimento de cache. O endurecimento para produção é um esforço de engenharia separado.
Como é que o NexusFIX se compara ao Fix8?
Fix8 (C++11) usa pools de objetos e técnicas sem cópia. O NexusFIX difere por alavancar funcionalidades da biblioteca padrão C++23 (PMR, std::span, std::expected) em vez de implementações personalizadas, e por adicionar parsing acelerado por SIMD que o Fix8 não tem.