Changelog

View Source

0.1.0

Initial release.

Session protocol

  • FixAlchemy.Engine runs the session protocol for one connection, independent of which side dialed: framing, sequence numbers, heartbeats and TestRequests, ResendRequests and replay, and delivery to subscribers.
  • FixAlchemy.Client initiates: dials, sends the Logon, reconnects with backoff.
  • FixAlchemy.Server accepts: listens over TCP or TLS, matches each Logon to a configured session, and refuses one that matches nothing, fails credentials, or names a session already connected.

Dictionaries

  • Generates field, message, and repeating-group parsers from a venue's FIX XML, including the FIXT1.1.xml and FIX50SP2.xml pair a FIX 5.0 session needs.
  • FixAlchemy.Engine.Validation checks inbound messages against the dictionary and answers a bad one with a Reject naming the SessionRejectReason.

Routing and market data

  • FixAlchemy.Dispatch routes inbound messages to subscribers by MsgType, by a tag equalling a value, or by a predicate over a tag.
  • FixAlchemy.Feed publishes one price to many sessions through a tree of venue transforms, applying each transform once however many sessions sit below it.

Storage

  • FixAlchemy.MessageStore retains sent messages for replay; in-memory by default.
  • FixAlchemy.SessionStore carries sequence numbers across connections and restarts, keyed by BeginString, SenderCompID and TargetCompID; ETS-backed implementation included.