FIX Antenna Rust Release Notes

FIX Antenna Rust Release Notes

FIX Antenna Rust API Alpha 0.1.0


FIX Antenna™ Rust API provides safe Rust wrappers around the B2BITS FIX Antenna C++ API via CXX, with a focus on session management, application callbacks, and FIX message/group manipulation. This first alpha is aimed at early adopters who want to embed FIX Antenna into Rust services while keeping the core engine in native C++.

Requirements & Compatibility

  • Rust + Cargo project consuming the fixantenna_bindings crate.

  • C++ FIX Antenna SDK available for linking (the Rust crate is an FFI layer over the native engine).

  • The Rust API surface is alpha: expect breaking changes between alpha drops.

FIX Engine

  • Engine lifecycle wrapper

    • FixEngine::new("…properties") and FixEngine::new_default() (./engine.properties)

    • FixEngine::is_initialized()

    • FixEngine::get_listen_port()

  • Configured sessions discovery

    • FixEngine::get_configured_sessions_list() returns configured SessionIdWrappers from properties.

  • Session creation

    • FixEngine::create_session(session_id, fix_version, app_version)

    • Supported fix_version strings include: FIX40…FIX44, FIXT11 (with optional app_version like FIX50, FIX50SP1, etc.)

Sessions Processing

  • Initiator / Acceptor connect

    • connect() (acceptor mode)

    • connect_initiator() (initiator mode)

    • disconnect()

  • Application registration (callbacks)

    • register_application(app, delay_ms, max_tries)

    • unregister_application()

  • Message send

    • put(&FixMessage) and put_fast(&FixMessage)

  • Session inspection

    • get_session_id()

    • get_state()

    • Remote endpoint: get_remote_host_ip(), get_remote_port()

    • Queue: get_outgoing_queue_size()

    • Parser access: get_parser()

  • Sequence numbers

    • get_in_seq_num(), get_out_seq_num()

    • set_in_seq_num(), set_out_seq_num()

    • reset_seq_num_local()

    • reset_seq_num_and_send_logon()

Configuration

  • Properties-based engine startup

    • FixEngine::new(properties_file) / new_default()

  • Strongly-typed session parameters builder

    • FixSessionParametersProxy supports:

      • network: host/port, listen_address/listen_port

      • heartbeat: hbi

      • reconnect: reconnect_interval, reconnect_max_tries, forced_reconnect

      • IDs: sender/target sub IDs + location IDs

      • logging: log_dir

      • logon customization: custom_logon_message / custom_logon_message_file_name

      • credentials: user_name, password, new_password, tag overrides, hidden_logon_credentials

      • reset behavior: reset_seq_num_on_non_graceful_termination

      • validate(), arbitrary property set/get/del, and conversion to_engine_params()

Message composition API

  • Create / serialize

    • FixMessage::new(msg_type)

    • FixMessage::from_string(raw_fix)

    • FixMessage::to_string() / to_raw()

  • JSON support

    • FixMessage::to_json(), FixMessage::from_json()

    • JsonParseSettings + JsonTagsHandlingAction for handling unknown/custom tags and group parsing behavior

  • Field access (typed and untyped)

    • generic: set(tag, value), get(tag), remove(tag), has_value(tag)

    • typed getters/setters: int32/uint32/int64/uint64/double/decimal/bool/char/string

  • Header/session helpers

    • sender_comp_id, target_comp_id, seq_num, heart_beat_interval (+ setters)

  • Classification helpers

    • is_administrative, is_business_reject, is_session_reject, is_original, is_empty

  • Repeating groups

    • FixMessage::get_group(tag)FixGroup

    • FixGroup / FixGroupEntry support nested group access, typed field ops, presence checks, and removals

Rust safe mode and unsafe fast path

FIX Antenna Rust is safe by default by leveraging Rust’s compilation model where the compiler enforces strict memory safety guarantees. In this safe mode, common classes of issues such as null pointer dereferences, buffer overflows, use-after-free, and data races are prevented at compile time. Any operation that can bypass these guarantees must be explicitly placed inside an unsafe { } block, making the safety boundary clear and intentional.

In addition to the safe API, FIX Antenna Rust includes a limited set of unsafe variants for selected hot-path functions. These are intended for latency-critical workloads and can achieve extremely low overhead calls on the order of 1–2 ns per call when used with well-crafted, safety-audited application code. The unsafe fast path is used in performance benchmarking, while the main API remains safe-by-default to provide more than a direct “naked C” interface.

Security

  • SSL/TLS configuration surface

    • SslContextConfigurator, SslContextType

    • Certificate structures: CACertificateLocations, ClientCAList, CertificatePrivateKeyPair, SslCertificateDataRecord, SslCertificateEncoding

  • Session parameter hooks

    • SSL protocols/ciphers, certificate/private key, passwords, CA certs, peer validation flags exposed on FixSessionParametersProxy

Interoperability with C++ and wrapper extensibility

Other options:

  • Rust and C++ interoperability

  • Mixed-language access and custom extensions

  • Using FIX Antenna from Rust and C++

  • Extending the Rust wrapper