AtrekesLibHFTDocumentationLanguage flavors

Architecture

Six LibHFT engine flavors.

Choose an independent engine or a managed API over the C++ core without losing sight of where session behavior and transport ownership live.

6 surfaces27/27 session behaviors17/17 typed messages

Implementation ownership

The language boundary is a deployment decision.

C++

Native reference engine

Direct native ownership of the session, transport and storage path.

View benchmarks →
JAVA PURE

Independent JVM engine

Session and codec behavior implemented in Java without the C++ runtime.

View benchmarks →
JAVA / JNI

Java API over C++

Provider-neutral Java-facing APIs backed by the native engine.

View benchmarks →
.NET PURE

Independent C# engine

Managed session and codec implementation without a native provider.

View benchmarks →
.NET NATIVE

C# API over hftnet/C++

A managed application boundary over the native provider and state machine.

View benchmarks →
RUST PURE

Independent Rust engine

Session, recovery, validation, storage and transport implemented in Rust.

View benchmarks →

Generated coverage snapshot

Tracked capabilities remain surface-specific.

API totals are generated from source symbols. Session behavior is maintained as a separate protocol ledger. A native-backed provider can inherit protocol behavior from the C++ engine even when the shim contains no duplicate resend or gap-fill implementation.

FlavorOwnershipTracked APISession behavior
C++Native reference78/79 · 1 absent · 11 n/a27/27
Java PureIndependent Java88/90 · 2 absent27/27
Java/JNIJava API over C++88/89 · 1 absent · 1 n/a27/27 · 13 engine-owned
.NET PureIndependent C#87/87 · 3 n/a27/27
.NET NativeC# API over hftnet/C++86/87 · 1 absent · 3 n/a27/27 · 13 engine-owned
Rust PureIndependent Rust79/79 · 11 n/a27/27

Snapshot derived from the committed generated binding matrix on 28 September 2026. Denominators differ because some provider-specific capabilities are deliberately not applicable.

Shared behavior

What the parity ledger actually tracks.

All six flavors expose typed support for 17 common application and reject message families and the 27 tracked session behaviors. The session ledger covers lifecycle and failure-path behavior such as Logon, heartbeat, sequence gaps, resend, gap fill, reject handling, reconnect and durable state—not just message encoding.

Parity does not mean identical internals.

Independent engines can diverge in implementation and performance. Native-backed providers intentionally reuse the C++ state machine. The public matrix records those differences instead of collapsing them behind one language label.

Selection guide

Choose by operational ownership, not syntax alone.

  • Choose C++ when the application owns the native path and vendor SDK integration directly.
  • Choose Java Pure, .NET Pure or Rust Pure when a standalone runtime-native engine is the architectural requirement.
  • Choose Java/JNI or .NET Native when the managed application should reuse the C++ engine and its native transport integrations.
  • Benchmark the exact flavor, transport, message path and deployment hardware you will operate.