12 releases
0.0.21 | Nov 27, 2023 |
---|---|
0.0.20 | Nov 24, 2023 |
#341 in Finance
121 downloads per month
Used in hotfix
395KB
4K
SLoC
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
~7MB
~125K SLoC