← all repositories
owlbarn/owl

NumPy for the ML dialect: Owl brings tensors to OCaml

Owl is the de-facto scientific computing stack for OCaml, bundling ndarrays, autograd, neural nets, and plotting into one MIT-licensed library.

owl
Velocity · 7d
+0.4
★ / day
Trend
steady
star history

What it does Owl is a comprehensive scientific computing system for OCaml. It provides n-dimensional arrays (tensors), linear algebra, statistics, signal processing, ODE solvers, optimization, regression, automatic differentiation, and neural networks—plus dataframes and visualization via an external plotting package. The project aims to be the default toolkit for compute-heavy work in a language better known for compilers than crunching numbers.

The interesting bit Owl exposes three interchangeable ndarray backends: a high-performance C-backed implementation, a pure-OCaml “base” version for portability, and a symbolic CGraph-Ndarray that wraps either for TensorFlow-style computation graph optimization. This layered design lets you trade speed, purity, and symbolic execution without rewriting your algorithms.

Key highlights

  • Covers the full stack from sin and Gamma functions to deep neural networks and NLP
  • Automatic differentiation and computation graph optimization built in, not bolted on
  • Pure-OCaml fallback backend when native dependencies are a hassle
  • Docker images available for quick experimentation
  • Active maintenance with a two-approval PR gate and documented governance

Caveats

  • The pure-OCaml base backend is “understandably much slower” and lacks some advanced functions
  • Visualization requires a separate owl-plot package
  • Support is voluntary and best-effort outside core team domains

Verdict Worth a look if you’re already in the OCaml ecosystem and need NumPy/SciPy-like capabilities without leaving the type system. Everyone else should probably stick to Python’s mature tooling unless they have a specific reason to pay the switching cost.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.