Skip to main content

OCaml libraries

Web

  • Hyper - OCaml Web client, composable with Dream.
  • h2 - HTTP/2 implementation written in pure OCaml.
  • Opium - Sinatra like web toolkit for OCaml.
  • OCaml On Ice - Web framework for OCaml in the style of Ruby on Rails.
  • http/af - High performance, memory efficient, and scalable web server written in OCaml.
  • Eliom - Framework for building client/server Web and mobile applications in OCaml.
  • ocaml-wasmtime - OCaml WebAssembly runtime powered by wasmtime.
  • Dream - Tidy, feature-complete Web framework. (Docs) (HN) (Example App)
  • OCaml JavaScript bindings
  • Tiny_httpd - Minimal HTTP server using good old threads + blocking IO, with small request router.
  • ocaml-cohttp - OCaml library for HTTP clients and servers using Lwt or Async.
  • Async_http - Simple HTTP server for async applications.
  • Pollinate - Platform agnostic OCaml library for P2P communications using UDP and Bin_prot.

Test

  • Alcotest - Lightweight and colorful test framework.
  • Mutaml - Mutation Tester for OCaml.
  • Crowbar - Property fuzzing for OCaml.
  • qtest - Inline (Unit) Tests for OCaml.
  • QCheck - Property-based testing for OCaml.
  • Popper - Property-based testing at ease.
  • expect-test - Framework for writing tests in OCaml, similar to Cram.

Science

  • Owl - OCaml library for scientific and engineering computing. (HN) (Web)

ML

  • zeta - Functional neural networks in ocaml. (HN)
  • prbnmcn-clustering - Clustering with k-means, k-medoids & agglomerative clustering.

DB

  • Caqti - Cooperative-threaded access to relational data.
  • PostgreSQL-OCaml - PostgreSQL Bindings for OCaml.
  • postgres-protocol - IO independent postgres protocol implementation.
  • chamelon - Small, simple block-backed key-value store for MirageOS.
  • ocaml_sql_query - Functional-style SQLite queries for OCaml.
  • epiSQL - SQL schema parser and code generator.
  • PGX - Pure OCaml PostgreSQL client library.
  • Sequoia - Type-safe query builder for OCaml.
  • rel - Relational database programming for OCaml.

Bindings

CLI

Error

  • ppx_let_locs - Improving stack trace for let monadic.
  • pp_loc - Provides support to additionally quote and highlight the input fragment the input that corresponds to a location (or a set of locations).
  • ppx_assert - Assert-like extension nodes that raise useful errors on failure.

Graphics

  • Vg - Declarative 2D vector graphics for OCaml.
  • unicorn - Purely functional GUI algebra.
  • ocaml-orx - OCaml bindings to the Orx game library.
  • chapgame - Physics engine based on a priori collision detection approach.

Linux

Crypto

  • Cryptokit - Library of cryptographic primitives (ciphers, hashes, etc) for OCaml.

Other

  • OCamlbuild - Generic build tool, that has built-in rules for building OCaml library and programs.
  • ocaml-vdom - Elm architecture and (V)DOM for OCaml.
  • Lwt - OCaml promises and concurrent I/O.
  • higher - Higher-kinded programming in OCaml.
  • GraphQL Servers in OCaml - Create GraphQL servers in OCaml.
  • piaf - Client library for HTTP/1.X / HTTP/2 written entirely in OCaml.
  • OCamlgraph - OCaml graph library.
  • luv - Minimalist binding to libuv from OCaml and Reason.
  • Nice Parser - Nice parsers in OCaml without the boilerplate.
  • QCSTM - simple state-machine framework for OCaml based on QCheck.
  • deriving - Library simplifying type-driven code generation on OCaml.
  • OCamline - Command line interface for user input.
  • OCaml Batteries Included - Community-maintained foundation library for your OCaml projects.
  • incremental - Library for incremental computations.
  • Landmarks - Simple Profiling Library for OCaml.
  • pfff - Set of tools and APIs to perform static analysis, code visualizations, code navigations, or style-preserving source-to-source transformations such as refactorings on source code.
  • ppx_stage - Staged metaprogramming in stock OCaml.
  • Streaming - Fast, safe and composable streaming abstractions. (Announcement)
  • cameleer - Deductive Verification Tool for OCaml Programs.
  • Ppxlib - Base library and tools for ppx rewriters.
  • jsoo-react - Bindings to React for js_of_ocaml, including JSX ppx. Allows to use React from OCaml.
  • OByteLib - OCaml bytecode library tools. Useful to read, write and evaluate OCaml bytecode files.
  • bimage - Composable image processing library for OCaml.
  • Lwd - Lets you build values that changes over time.
  • Digestif - Hash algorithms in C and OCaml.
  • directories - OCaml library that provides configuration, cache and data paths.
  • Repr - Run-time representations of OCaml types.
  • OCaml-MPST - Communication library powered by Multiparty Session Types (abbreviated as MPST) in OCaml.
  • eqaf - Constant time equal function.
  • Pp - Pretty printing library.
  • capnp-ocaml - OCaml code generator plugin for the Cap'n Proto serialization framework.
  • TyXML - Build valid HTML and SVG documents.
  • parany - Parallelize any kind of computation.
  • Metrics - Infrastructure to collect metrics from OCaml applications.
  • ocaml-mustache - Mustache.js logic-less templates in OCaml.
  • ppx_optcomp - Optional compilation for OCaml.
  • Session-ocaml - Implementation of binary session types in OCaml.
  • brr - Browser programming toolkit for OCaml.
  • Dyntype - Dynamic types for OCaml.
  • RML - ML modules and functors as first-class citizens.
  • VOCaL - Verified OCaml Library.
  • Fmt - OCaml Format pretty-printer combinators.
  • awa-ssh - Purely functional SSH library in OCaml.
  • Fmlib - Functional Monadic Library for Ocaml.
  • eioio - Effects-based direct-style IO for multicore OCaml. (0.1 release)
  • RES - OCaml library for resizable arrays and strings.
  • Preface - Opinionated library designed to facilitate the handling of recurring functional programming idioms in OCaml.
  • OCaml Containers - Modular, clean and powerful extension of the OCaml standard library.
  • vec - Fast, safe mutable dynamic arrays for OCaml.
  • um-abt - OCaml library implementing abstract binding trees (ABTs).
  • ocaml-stun - Pure OCaml implementation of the Session Traversal Utilities for NAT (STUN) protocol (STUN).
  • ortac - OCaml Runtime Assertion Checking.
  • Bloomf - Efficient Bloom filters for OCaml.
  • Index - Scalable implementation of persistent indices in OCaml.
  • ppx_effects - Syntax extensions for untyped effects in OCaml 5.
  • kv-hash - Key Value store using a persistent hashtable approach.
  • DAI - Demanded Abstract Interpretation.
  • field_repr - Efficient run-time representations of OCaml record fields.
  • CacheCache - Efficient caching library for OCaml.
  • ocaml-extlib - Extended Standard Library for OCaml.
  • MParser - Simple monadic parser combinator library for OCaml.
  • futurama - Finite permutation library with an optimizing compiler.
  • algebra - Definitions for common algebraic structures.
  • ocaml-lp - Helps the modeling of Linear Programming (LP) and Mixed Integer Programming (MIP) in OCaml.
  • ppx_regexp - Matching Regular Expressions with OCaml Patterns.
  • Shuttle - Buffered channels for async.
  • Poll - Portable OCaml API to poll file descriptors for IO readiness. Supports kqueue and epoll for now.
  • ART - Adaptive Radix Tree in OCaml.
  • Avro - Runtime library and schema compiler for the Avro serialization format.
  • CMON - Library for printing OCaml values with sharing.
  • Equinoxe - Equinix API client library for OCaml.
  • ocaml_plugin - Automatically build and dynlink OCaml source files.
  • Lwt Pipe - Multi-consumer, multi-producers blocking queue and stream for Lwt.
  • sedlex - Unicode-friendly lexer generator for OCaml.
  • Compact - Memory-efficient data structures in OCaml.
  • PaComb - Parsing library that compiles grammars to combinators using elimination of left recursion.
  • PPrint - Pretty-Printing Toolbox.
  • Multicont - Continuations with multi-shot semantics in OCaml.
  • ExtUnix - OCaml bindings to various low-level system APIs not covered by Unix module.
  • ocaml-arrow - OCaml bindings for Apache Arrow using the C++ api.
  • ocaml-in-python - Effortless Python bindings for OCaml modules.
  • Yojson - Low-level JSON parsing and pretty-printing library for OCaml.
  • ATD - Static types for JSON APIs.
  • Biocaml - OCaml Bioinformatics Library.
  • Iter - Simple iterator abstract datatype, intended to iterate efficiently on collections while performing some transformations.
  • sosa - Sane OCaml String API.
  • ocaml-stdint - Various signed and unsigned integers for OCaml.
  • Current_incr - Self-adjusting computations.
  • hlist - Heterogeneously-typed lists for OCaml.
  • ppx_import - Syntax extension that allows to pull in types or signatures from other compiled interface files.
  • Prime - OCaml Library Supplements.
  • ADT rewriting - Representing ADTs in a flat way and compiling a pattern match-like construction as a rewrite on the memory representation.
  • AlphaRegex - Synthesizer for regular expressions.
  • py.ml - OCaml bindings for Python.
  • Affect - Composable concurrency primitives with OCaml effects handlers.
  • Depyt - Type combinator library.
  • ocaml-websocket - Websocket library for OCaml.
  • ORaft - Library of Raft consensus algorithm implemented in OCaml.
  • ocaml-mpsc - Lockless Multiple Producer Single Consumer Queue for ocaml-multicore.
  • Charset - Fast char sets.
  • OCaml gRPC
  • lockfree - Lock-free data structures for multicore OCaml.
  • Backward Lists - Defines backward lists that are isomorphic to lists.
  • bistro - Library to build and execute typed scientific workflows.
  • domainslib - Parallel Programming over Multicore OCaml.
  • Conformist - Schema definition and validation with support for decoding to bridge the gap between runtime types and static types.
  • ocaml-crunch - Convert a filesystem into a static OCaml module.
  • Ocaml protoc plugin
  • ocaml-rust - Safe OCaml-Rust Foreign Function Interface.
  • shared-block-ring - Simple on-disk fixed length queue.
  • ocaml-protoc - Protobuf Compiler for OCaml.
  • Diskuv Box - Basic, cross-platform set of commands to manipulate and query the file system.
  • raylib-ocaml - OCaml bindings for raylib, a simple and easy-to-use library to enjoy video games programming.
  • ocplib-json-typed - Libraries for reliable manipulation JSON objects.
  • ocaml-alg - Algebraic structures in OCaml.
  • Kai - Library for handling compiler diagnostics and span-associated metadata.
  • midi - Experimenting with midi in OCaml.
  • gen_js_api - Easy OCaml bindings for JavaScript libraries.
  • metapp - Meta-preprocessor for OCaml.
  • Ego - EGraphs in OCaml.
  • Bindoj - Generative datatype toolkit for OCaml centric workflows.