/openfix-rs

Financial Information eXchange (aka: FIX) protocol Rust toolbox

Primary LanguageRustMIT LicenseMIT

TODO:

  • maybe use the codegen library
  • or custom proc-macro
    • I think we could end up with this, but perhaps this is blasphemous
     #[derive(FixTypes)]
     include!("fix-spec.xml")

Rust FIX toolbox

This library help to build FIX aware applications using Rust.

Goals / non goals

Goals:

  • Provide simple binding for FIX protocol messages and fields
  • Provide user friendly object
  • Data must be generated from XML dictionaries

Non goals:

  • Produce latency sensitive code.

    Performances is important. But we are not targeting nano seconds serialization / deserialisation. Just switch to FPGA for this kind of latencies.

    See benchmark for more information.

  • Provide a full FIX engine

Code samples

Here some integration tests to show code usages:

State of the project

For now the project is in its early beginning. So, this project is still not fully production ready.

Any help and PR are welcome 😃 !

DONE:

  • FIX dictionary XML parser + data model
  • Field gerator
  • Message generator
  • Toolchain to generate library from generated code
  • Message encoder
  • Message decoder
  • Helper for message checksum and length
  • Find target library name 🤔

TODO:

  • Message builder from MsgType field
  • Publish to crates.io
  • Add example usages

Why I do not provide full FIX engine

There is already so much generic server implementation for Rust. I just do not want to force user to use specific server / client framework.

This library is focus on message correctness and have user friendly object to decode / encode FIX messages.

Few extra links