20 releases

0.0.21 Nov 27, 2023
0.0.20 Nov 24, 2023
0.0.9 Oct 31, 2023
0.0.5 Sep 28, 2023

#133 in Finance

Download history 216/week @ 2024-07-29 38/week @ 2024-09-23

188 downloads per month

MIT license

205KB
4.5K SLoC

HotFIX

An experimental FIX engine written in Rust.

CI crates-badge docs-badge Crates.io

Warning

HotFIX is an experimental project, currently incomplete and a long way from being complete. It is not fit for production.

Overview

HotFIX is a FIX engine implemented in Rust. While the ambition is to create a robust, fully compliant, ergonomic and performant engine eventually, this is a large undertaking.

The primary objective of HotFIX is to provide a functional and useful engine for initiators, supporting FIX 4.4 and 5.0, as soon as possible. This has meant using existing solutions where possible, prioritising functional components over performance and moving fast with experimental code rather than good code at this stage.

What's working already

  • TCP transport
  • TLS support using rustls
  • Basic message encoding and decoding (FIX 4.4)
  • Persistent message stores
  • Heartbeats, logon, reconnecting sessions
  • Basic logic for sending messages
  • Basic logic for receiving messages
  • Resend flows
  • Test Requests and handling peer timeouts
  • Message code generation - coming next

Check out the examples to get started.

Prior Art

The two major influences for HotFIX are QuickFIX and FerrumFIX.

QuickFIX implementations in various languages (such as QuickFIX/J) have influenced the designs of the transport and session layers. The FIX message logic builds on QuickFIX XMLs for the specification.

The FIX message implementation of HotFIX leverages FerrumFIX for things like codegen, parsing the XML specification, defining fields, etc. This may change in the future, but re-using FerrumFIX code has proved useful in expediting the process of reaching a functional engine.

Contributions

In its current state, the engine has a lot of issues that will be fixed in due course, so please don't create issues or PRs for individual bugs.

We welcome committed contributors who want to work with us to turn this into a successful project. There are many components that can be developed in parallel. If you are interested in participating, don't hesitate to reach out.

The best way to get in touch is by starting a Discussion.

Dependencies

~17–33MB
~585K SLoC