There are many OCaml stacks, but this one is mine.
curl -sSL https://get.riot.ml | sh
what is riot?
Riot is my stack and tooling for building applications in OCaml. It is heavily opinionated, and designed from the ground up to get out of your way and help you ship great software fast.
Once you install it, riot is the only tool you need to build your projects,
add dependencies, run your tests and benchmarks, cross-compile, publish packages,
get shell completions, format your code, lint and auto-fix your code, search packages,
manage your toolchains, generate docs, interact with the lsp, upgrade
riot itself, and it might even fetch you some Monster Ultra.
When writing OCaml with Riot,
Riot runs on an actor-model multi-core runtime for OCaml. Like Erlang and Elixir, you build software with actors that communicate via message passing. If you need parallelism, just call `spawn`, the runtime does the rest.
It ships with a powerful, modern standard library designed for the actor runtime.
Riot gives you a set of sharp tools to customize the stack to your needs, including an extensible linter with support for automatic fixes, a new procedural macro system it has a friendlier foundation It reflects how I like to build systems: predictable, fast tooling, runtime model, and one cohesive experience from writing code to running it.
I care about a few things: a unified tooling story like Go, fast feedback loops, an actor model with supervision like Elixir, and a strong type system like OCaml and Rust. Riot brings those together into a single way of working.
It comes with a runtime built around actors and message passing, a standard library for real applications, and a toolchain that handles building, testing, formatting, and packaging without making you assemble it yourself.
This is not meant to be everything for everyone. It's just my way of building systems in OCaml, shared as-is.