Comparison

hx vs Cabal and Stack

Cabal and Stack are the established Haskell build tools. hx is a single fast binary that wraps and replaces both — without asking you to leave your existing projects behind.

The short version

hx is a native Rust binary that does what Cabal and Stack do — build, test, run, format, lint, publish — from one command, with managed toolchains and deterministic lockfiles. It reads your existing .cabal files and resolves from Hackage, so adopting it does not mean rewriting anything.

If you want the honest one-liner: hx is to the Haskell toolchain what cargo is to Rust. One tool, fast, predictable.

Speed

Every number below is hx against cabal 3.12.1.0 and stack 2.15.1 on the same machine and project. hx is a native binary with no GHC runtime to start, which is most of the difference.

OperationhxCabalStackSpeedup
CLI startup12ms45ms89ms3.8× / 7.4×
Project init68ms320ms2.1s4.7× / 31×
Cold build (simple)0.48s2.68s3.2s5.6× / 6.7×
Incremental build0.05s0.39s0.52s7.8× / 10.4×
Clean8ms180ms95ms22× / 12×

The gap is widest where it is felt most: the dozens of small commands you run every day.

Workflow

hxCabalStack
Build / test / run / format / lint / publishOne toolCabal + external toolsStack + external tools
Managed compiler toolchainsGHC and BHCvia ghcupcurated resolvers
LockfilesDeterministic TOML, checksum-verifiedcabal.project.freezestack.yaml.lock
Reads existing .cabal filesYesYesYes
DistributionSingle static binaryHaskell binaryHaskell binary
PluginsSteel (Scheme) plugin system

Will it work with my project?

Yes. hx reads .cabal files directly and resolves dependencies from Hackage, and it can import existing Cabal or Stack projects. You can adopt it incrementally — use hx build where it helps and keep everything else as it is. Nothing about your package, your dependencies, or your code has to change.

When to use which

Use hx if you want one fast tool for the whole workflow, deterministic builds, managed GHC/BHC toolchains, and instant commands.

Stick with Cabal or Stack if you depend on a workflow detail hx does not cover yet, or your team’s tooling is deeply wired into one of them — and revisit hx as it matures. hx is compatible either way, so there is no lock-in to trying it.

Get started with hx → · Full benchmarks → · Why we built it in Rust →