awesome-ocaml
OCaml toolkit
A curated collection of resources and tools for OCaml developers
A curated collection of awesome OCaml tools, frameworks, libraries and articles.
3k stars
125 watching
168 forks
last commit: 13 days ago
Linked from 8 awesome lists
awesomeocamlprogramming-languageresources
Awesome OCaml / Community | |||
Official OCaml Website | |||
OCaml Discourse Web Forum | |||
OCaml Discord Chat | |||
Official OCaml Mailing List | |||
OCaml Planet | |||
OCaml SubReddit | |||
Awesome OCaml / Algorithms and Data Structures | |||
Comparing a Machine Learning Algorithm Implemented in F# and OCaml | |||
OCamlgraph | 234 | 8 days ago | – A generic graph library for OCaml |
ods | 48 | almost 2 years ago | – A large collection of data structures and algorithms for OCaml |
combine | 35 | 2 months ago | – OCaml library for combinatorics |
Decompress | 115 | 10 months ago | A pure OCaml implementation of Zlib |
Ke | 51 | 9 months ago | Fast implementation of queue (FIFO) in OCaml |
Duff | 20 | over 1 year ago | Implementation of Rabin's fingerprint and delta compression by P. MacDonald in OCaml (same as |
ORaft | 28 | over 1 year ago | Library of implemented in OCaml |
ODiff | 2,061 | about 2 months ago | – Library of implemented in OCaml and ReasonML |
Awesome OCaml / Application Libraries | |||
Batteries Included | 519 | 7 months ago | – A community-maintained foundation library for your OCaml projects |
Cmdliner | 296 | 6 months ago | – Declarative definition of command line interfaces for OCaml |
Core | 1,115 | 12 days ago | – Jane Street Capital's full-fledged standard library overlay. A portable subset of Core is also available: |
Base | 868 | 12 days ago | Jane Street Capital's dependency-free, quick-compiling, fully-portable across any environment that can run OCaml code standard library |
React | – React is an OCaml module for functional reactive programming (FRP). It provides support for programs with time-varying values, declarative events, and signals | ||
Minicli | 30 | about 4 years ago | – Minimalist library for command-line parsing |
easy-format | 43 | over 2 years ago | – Pretty-printing library for OCaml |
ocaml-rpc | 96 | about 2 months ago | – Light library to deal with RPCs in OCaml |
ocaml-containers | 492 | 6 days ago | – A lightweight, modular standard library extension, string library, and interfaces to various libraries (bigarrays, Unix, etc.) BSD license |
Awesome OCaml / Benchmarking | |||
core_bench | 49 | 12 days ago | – Micro-benchmarking library for OCaml by Jane Street. - |
benchmark | 28 | 13 days ago | – Benchmarking functions for measuring the run-time of functions using latency or throughput |
Awesome OCaml / Blogs | |||
Gagallium | |||
Type OCaml – Many things about OCaml | |||
OCaml Platform | |||
Drup's Thingies | |||
Thomas Letan’s articles about OCaml | |||
Awesome OCaml / Books | |||
More OCaml: Algorithms, Methods, and Diversions | – In More OCaml, John Whitington takes a meandering tour of functional programming with OCaml, introducing various language features and describing some classic algorithms. The book ends with a large-scale example dealing with the production of PDF files. There are questions for each chapter, along with worked-out answers and hints | ||
How to Think Like a (Functional) Programmer | by Allen Downey and Nicholas Monje – How to Think Like a Computer Scientist is an introductory programming textbook based on the OCaml language. It is a modified version of Think Python by Allen Downey. It is intended for newcomers to programming and also those who know some programming but want to learn programming in the function-oriented paradigm, or those who simply want to learn OCaml | ||
OCaml from the Very Beginning | by J. Whitington - OCaml from the Very Beginning will appeal both to new programmers and experienced programmers eager to explore functional languages such as OCaml | ||
Pearls of Functional Algorithm Design | by Richard Bird - It summarizes 30 hard algorithmic problems in the function programming world. Although it is for Haskell, the algorithm problems are very interesting, and trying to solve them in OCaml also helps the thinking of functional programming. Partial solutions in OCaml are | ||
Real World OCaml | by Y. Minsky, A. Madhavapeddy, and J. Hickey - Functional Programming for the masses | ||
Unix System Programming in OCaml | by X. Leroy and D. Rémy – Introduction to Unix Systems Programming, with an emphasis on communications between processes | ||
Using, Understanding, and Unraveling OCaml | – This book describes both the OCaml language and the theoretical grounds behind its powerful type system | ||
Purely Functional Data Structures | This is the first or only book focus on various data structures in FP world. A must-read one | ||
OCaml for Scientists | by Jon Harrop | ||
OCaml Programming: Correct + Efficient + Beautiful | Textbook on Functional Programming and Data Structures in OCaml - by Michael R. Clarkson et al | ||
Awesome OCaml / Code Analysis and Linters | |||
Mascot | Mascot is a style-checker for OCaml sources | ||
pfff | 185 | almost 2 years ago | – pfff is a set of tools and APIs to perform some static analysis, dynamic analysis, code visualizations, code navigations, or style-preserving source-to-source transformations such as refactorings on source code |
Infer | 14,979 | 7 days ago | Infer is a static analyzer for Java, C and Objective-C |
Frama-C | Frama-C is a static analysis and formal proof framework for C and C++ | ||
flow | 22,091 | 6 days ago | flow is a static type checker for JavaScript |
SLAyer | 326 | over 8 years ago | SLAyer is an automatic formal verification tool that uses separation logic to verify memory safety of C programs |
MemCAD | 25 | about 3 years ago | MemCAD is an abstract interpreter for shape analysis. MemCAD can verify C programs manipulating complex data structures |
Camelot | 44 | over 1 year ago | Camelot is a modular and fully configurable OCaml linter and stylechecker |
coq-of-ocaml | 255 | 4 months ago | Translator from OCaml to Coq to formally verify OCaml code |
MOPSA | MOPSA is a generic framework for building sound static analyzers based on the theory of abstract interpretation | ||
Awesome OCaml / Program analysis | |||
BAP | 2,068 | 3 months ago | BAP is a reverse engineering and program analysis platform that targets binary programs |
BinCat | 1,691 | about 2 months ago | BinCat is a binary code static analysis toolkit |
cwe_checker | 1,124 | 3 months ago | cwe_checker finds vulnerable patterns in binary executables |
Owi | 135 | 5 days ago | Owi is a toolchain for working with WebAssembly (Wasm) in OCaml, featuring a powerful, parallel symbolic execution engine for Wasm. It also provides frontends for compiling and analyzing C and Rust programs |
Smt.ml | 27 | 15 days ago | Smt.ml is a frontend OCaml library that interfaces with multiple SMT solvers, enabling seamless integration of solvers like Z3, cvc5, Colibri2, Bitwuzla, and Alt-Ergo within OCaml programs |
Awesome OCaml / Compilers and Compiler Tools | |||
Opal | 146 | over 1 year ago | – Self-contained monadic parser combinators for OCaml |
Sedlex | 240 | 20 days ago | is a modern, encoding-agnostic (read: Unicode-supporting) lexer generator (the ppx-based successor to .) |
Menhir | – Menhir is a LR(1) parser generator for OCaml | ||
Awesome OCaml / Compilers and Compiler Tools / Menhir | |||
ocaml-parsing | 124 | 7 months ago | See for a clearer example of using Menhir and Sedlex to produce a useful parser, |
Obelisk | 55 | 4 months ago | ... and , a neat project to produce readable LaTeX, HTML, or plain-text EBNF-style documentation for your grammar |
Awesome OCaml / Compilers and Compiler Tools | |||
ocamllex/ocamlyacc | – lex and yacc implementation for OCaml | ||
Angstrom | 649 | 2 months ago | Parser combinators built for speed and memory efficiency |
Kaleidoscope: Implementing a Language with LLVM in Objective Caml¶ | |||
Awesome OCaml / Concurrency / : | |||
Lwt | — A cooperative threads library for OCaml | ||
Async | — A monadic concurrence library to go with the Core library | ||
The blog post that introduced Async | |||
A user gives up on Async | |||
Cooperative Concurrency in OCaml: A Core.Std.Async Example | |||
Awesome OCaml / Databases | |||
Dbm | — A binding to the NDBM/GDBM Unix "databases" | ||
Mongo.ml | – An OCaml driver for Mongodb | ||
PG'OCaml | — A type-safe interface to PostgreSQL in pure OCaml | ||
Awesome OCaml / Databases / PG'OCaml | |||
ppx_pgsql | 52 | about 4 years ago | – A syntax extension for embedded SQL queries using PG'OCaml |
Awesome OCaml / Databases | |||
PostgreSQL-OCaml | — An interface to PostgreSQL through the C API ( ) | ||
SQLite3 | 114 | 25 days ago | — OCaml bindings to the SQLite3 database |
Sqlite3EZ | — Thin wrapper for SQLite3 with a simplified interface | ||
ocaml-redis | 74 | about 1 year ago | – Redis bindings for OCaml |
mysql | – Bindings to libmysqlclient for interacting with MySQL databases | ||
pgx | 122 | about 2 years ago | – A pure OCaml PostgreSQL client library |
mysql_protocol | 14 | over 2 years ago | – Implementation of MySQL Protocol with the Bitstring library |
Irmin | 1,852 | about 2 months ago | — A distributed database that follows the same design principles as Git |
Obigstore | — A database with BigTable-like data model atop LevelDB | ||
RunOrg | 12 | over 9 years ago | It is a WIP database server written in OCaml |
dokeysto | 10 | almost 2 years ago | dumb OCaml key-value store, string keys and string values. Optional on-the-fly LZ4 compression of values or tokyocabinet backend |
Sequoia | 123 | almost 2 years ago | Sequoia is a type-safe query builder for MySQL/MariaDB and PostgreSQL |
Macaque | 38 | about 5 years ago | — Macaque is a library for safe and flexible database queries using comprehensions on top of PG'OCaml |
ORM | 60 | about 6 years ago | — ORM for SQLite |
Caqti | 311 | 28 days ago | Cooperative-threaded access to relational data |
Caqti setence preparation, ppx_rapper | 137 | 7 months ago | |
Awesome OCaml / Databases / : | |||
Implementing the Binary Memcached Protocol with Ocaml and Bitstring | |||
Interfacing OCaml and PostgreSQL with Caqti | |||
Finally, Type-Safe, Extensible and Efficient Language Integrated Query | by Oleg and Co. The proposed approach is to describe SQL queries in type-safe manner and optimize them (using term rewriting or normalization-by evaluation) before sending to database engine. It potentially could optimize O(n^2) queries to O(n) ones | ||
Awesome OCaml / Datetime | |||
ISO8601 | 29 | 10 months ago | |
calendar | |||
odate | 23 | 7 months ago | |
ptime | |||
Awesome OCaml / Developer Tools | |||
ctypes | 371 | 3 months ago | – Library for binding to C libraries using pure OCaml |
ocaml-main-program-in-c | 16 | about 7 years ago | – Example build system for making mixed C/Ocaml binaries where the main program is in C |
Modular foreign function bindings | |||
Py.ml | 187 | 5 months ago | OCaml bindings for Python |
ocaml-lsp | 772 | 7 days ago | An LSP language server for OCaml that integrates with any editor that understands LSP like , Vim and Emacs |
merlin | 1,586 | 28 days ago | – Context sensitive completion for OCaml in Vim and Emacs |
tuareg | 364 | 4 months ago | OCaml mode for Emacs that can run the toplevel and the debugger within Emacs |
opam-switch-mode | 5 | over 1 year ago | Minor mode for Emacs that extends Tuareg and Merlin with menus to change or reset the opam switch in the ambient Emacs session |
merlin-eldoc | 44 | almost 2 years ago | – Emacs package to provide merlin's features through eldoc |
vscode-ocaml | 170 | almost 4 years ago | – extension that provides OCaml language support for |
OCaml Debugger | 207 | 6 days ago | – extension that provides OCaml Debugger for |
Sublime better ocaml | 23 | almost 7 years ago | – Better OCaml mode for Sublime Text |
Awesome OCaml / Developer Tools / Sublime better ocaml | |||
Sublime text package | 12 | over 7 years ago | |
Awesome OCaml / Developer Tools | |||
ocp-index | – Easy access to the interface information of installed OCaml libraries. Provides standalone tools like and | ||
Awesome OCaml / Developer Tools / ocp-index | |||
ocp-browser | – Small ncurses-based API and documentation browser | ||
ocp-index-top | 20 | about 7 years ago | – Toplevel directive for looking up documentation using ocp-index |
Sublime text package | |||
Awesome OCaml / Developer Tools | |||
ocp-indent | – Indentation tool for OCaml, to be used from editors like Emacs and Vim | ||
Awesome OCaml / Developer Tools / ocp-indent | |||
Vim plugin | 29 | over 6 years ago | |
Awesome OCaml / Developer Tools | |||
Bisect_ppx | 302 | 8 months ago | |
Awesome OCaml / Exercises and Short Examples | |||
99 problems | . 99% of the solutions are | ||
learn-ocaml-corpus | . Corpus of beginner-to-advanced online exercises (including those from the OCaml MOOC) with automatic grading tests | ||
Rosetta Code | |||
OCaml at Exercism | – Exercism is your place to engage in thoughtful conversations about code. Explore simplicity, idiomatic language features, and expressive, readable code. | ||
Programming Language Examples Alike Cookbook | The OCaml section of the book is a free reference for solving common programming problems using OCaml | ||
Awesome OCaml / Formal Software Verification | |||
Coq | – Coq is a formal proof management system. It provides a formal language to write mathematical definitions, executable algorithms, and theorems, together with an environment for semi-interactive development of machine-checked proofs | ||
Why3 | – Why3 is a platform for deductive program verification. It provides a rich language for specification and programming, called WhyML, and relies on external theorem provers, both automated and interactive, to discharge verification conditions | ||
Alt-Ergo | – Alt-Ergo is an open-source SMT solver dedicated to the proof of mathematical formulas generated in the context of program verification | ||
Awesome OCaml / General | |||
Functional Programming with OCaml | |||
Python to OCaml: retrospective | |||
OCaml for the Masses | |||
Why We Use OCaml | |||
Xen – OCaml Coding Considerations | |||
Monads are a class of hard drugs | |||
Beginner's guide to OCaml | |||
Why OCaml, why now? | |||
A blog about game development in OCaml | |||
(Functional) Alternatives to inheritance | |||
camlPDF | 201 | 17 days ago | – OCaml library for reading, writing and modifying PDF files |
slacko | 81 | 10 months ago | – A neat interface for Slack in OCaml |
Learn X in Y minutes | Where X=OCaml | ||
Awesome OCaml / Graphics | |||
archimedes | — 2D plotting library | ||
cairo2 | 54 | 13 days ago | — Binding to Cairo, a 2D Vector Graphics Library. Integrates well with lablgtk |
Vg | 91 | 6 months ago | – Declarative 2D vector graphics for OCaml |
glMLite | 19 | over 2 years ago | — OpenGL bindings for OCaml. Provides an (experimental) functional API. ( ) |
lablgl | — Interface to OpenGL. Integrates well with lablgtk | ||
tgls | — Thin bindings OpenGL 3.{2,3},4.{0,1,2,3,4} and OpenGL ES {2,3} | ||
Awesome OCaml / Internationalization | |||
Camomile | 124 | 8 months ago | — A Unicode library for OCaml |
ocaml-m17n | 50 | over 5 years ago | — Multilingualization for OCaml source code. Allows using Unicode identifiers in OCaml source code |
Uucd | 17 | 11 days ago | — Unicode character database decoder for OCaml |
Uucp | 21 | 11 days ago | — Unicode character properties for OCaml |
Uunf | 21 | 11 days ago | — Unicode text normalization for OCaml |
Uuseg | 23 | 11 days ago | — Unicode text segmentation for OCaml |
Uutf | 32 | about 1 year ago | — Non-blocking streaming Unicode codec for OCaml |
Awesome OCaml / User Interface | |||
lablgtk | — GTK2 and GTK3 bindings for OCaml with various higher-level facilities to define GUIs | ||
lablqml | 159 | 10 months ago | – QML Qt5 bindings for OCaml |
labltk | — Interface to the Tcl/Tk GUI framework. In the standard distribution for ocaml <= 4.01 | ||
TSDL | – Tsdl is an OCaml module providing thin bindings to the cross-platform SDL library | ||
Lambda-Term | 209 | 4 months ago | – Lambda-Term is a cross-platform library for manipulating the terminal. It provides an abstraction for keys, mouse events, and colors, as well as a set of widgets to write curses-like applications |
Notty | 351 | 8 months ago | Notty is a declarative terminal library for OCaml, structured around the notion of composable images |
ocaml-linenoise | 51 | 4 months ago | Self-contained OCaml bindings to linenoise; easy high-level readline functionality in OCaml |
Awesome OCaml / Language-related | |||
Higher-Rank Polymorphism in OCaml | |||
mikmatch | 22 | about 1 year ago | – OCaml pattern-matching extended with regexps |
Inlined records in constructors | |||
Algebraic Data Types | |||
XEN – OCaml Best Practices for Developers | |||
OCaml Style Guide (by Jane Street) | See also: , , | ||
A safe but strange way of modifying OCaml compiler | |||
Fiddling with the OCaml Type System | |||
Awesome OCaml / Large Source Code Examples | |||
Base | 868 | 12 days ago | Standard library for OCaml |
cil | 361 | about 1 year ago | C Intermediate Language |
coq | 4,859 | 6 days ago | formal proof management system |
frama-c | platform dedicated to the analysis of source code written in C | ||
libguestfs | 631 | 6 days ago | library and tools for accessing and modifying virtual machine disk images |
Liquidsoap | 1,415 | 5 days ago | a swiss-army knife for multimedia streaming, notably used for netradios and webtvs |
mirage | 2,562 | 6 days ago | library operating system that constructs unikernels for secure, high-performance network applications across a variety of cloud computing and mobile platforms |
MLDonkey | 256 | 3 months ago | cross-platform multi-network peer-to-peer daemon |
Oni2 | 7,838 | over 2 years ago | Native, lightweight modal code editor |
pfff | 185 | almost 2 years ago | an OCaml API to write static analysis, dynamic analysis, code visualizations, code navigations, or style-preserving source-to-source transformations such as refactorings on source code |
Tezos | a self-upgradable Proof of Stake blockchain | ||
WHY3 | platform for deductive program verification | ||
xen-api | 345 | 3 days ago | management stack that configures and controls Xen-enabled hosts and resource pools, and co-ordinates resources within the pool |
Awesome OCaml / Logging | |||
dolog | 37 | about 1 year ago | – A dumb OCaml logger |
Volt | 8 | about 1 year ago | – A variant of the Bolt OCaml logging tool |
Logs | Logs provides a logging infrastructure for OCaml | ||
Awesome OCaml / Machine Learning | |||
Ocaml-sklearn | 34 | almost 4 years ago | scikit-learn for OCaml |
Owl | Scientific library with neural networks, algorithmic differentiation and ONNX support | ||
Object detection convolutional neural network with OCaml (based on Owl) | 17 | almost 5 years ago | |
PyTorch bindings | 413 | about 1 month ago | OCaml bindings for PyTorch |
Awesome OCaml / Machine Learning / PyTorch bindings | |||
Ocaml-NN | 5 | 11 months ago | Fully functional monadic implementation of a Neural Network (FCNNs) in OCaml |
Awesome OCaml / Machine Learning | |||
Deep Learning with OCaml (PyTorch bindings) | |||
Transfer Learning with OCaml (PyTorch bindings) | |||
Reinforcement Learning with OCaml (PyTorch bindings) | |||
Awesome OCaml / Messaging | |||
ocaml-zmq | 80 | 6 months ago | – ZeroMQ bindings for OCaml with Async and Lwt wrappers |
onanomsg | 38 | about 4 years ago | – nanomsg bindings for OCaml |
Kafka | 63 | 5 months ago | – OCaml bindings for Apache Kafka |
AMQP | 62 | 6 months ago | – AMQP client library for Async and Lwt |
MPI | 24 | 8 months ago | – Message Passing Interface bindings for OCaml |
MQTT | 19 | almost 4 years ago | – OCaml implementation of the MQTT pubsub protocol |
capnp-ocaml | 98 | over 1 year ago | – OCaml code generator plugin for the Cap'n Proto serialization framework |
Awesome OCaml / Metaprogramming / : | |||
A Guide to Extension Points in OCaml | |||
Extension Points, or how OCaml is becoming more like Lisp | |||
Syntax extensions without Camlp4: let's do it! | |||
Reading Camlp4 – Ambassador to the Computers | |||
ppx_import | 89 | 9 days ago | – Import is a syntax extension that allows to pull in types or signatures from other compiled interface files |
ppx_string_interpolate | 21 | over 4 years ago | – A simple ppx filter to support string interpolation like |
ppx_monad | 7 | over 7 years ago | – Monad syntax extension for OCaml |
ppx_deriving_yojson | 157 | 4 months ago | – A Yojson codec generator for OCaml |
MetaOCaml | – an OCaml dialect for multi-stage programming | ||
Fan | – Fan is a compile-time metaprogramming system for OCaml, originally inspired from Camlp4. It's a combination of OCaml and Lispy Macros. It shares the same concrete syntax with OCaml | ||
camlp5 | Camlp5 is a preprocessor-pretty-printer of OCaml | ||
camlp4 | Camlp4 is part of the standard OCaml distribution and is different from Camlp5 | ||
Awesome OCaml / Metrics | |||
prometheus | 51 | 7 months ago | – OCaml client library for Prometheus monitoring |
Awesome OCaml / Mobile Applications / : | |||
OCaml on iOS 7 Released | |||
OCaml + Cordova = more secured, typed and hybrid mobile applications | |||
Cordova plugins | 26 | about 8 years ago | – List of bindings to Cordova plugins. Get access to native device components like accelerometer, SMS, geolocation, etc in OCaml |
Awesome OCaml / Networking / : | |||
ocaml-cohttp | 711 | about 1 month ago | – Very lightweight HTTP server using Lwt or Async |
ocurl | 59 | 4 months ago | – OCaml bindings to libcurl |
httpaf | 535 | 6 months ago | – A high performance, memory efficient, and scalable web server written in OCaml |
piaf | 191 | 2 months ago | Client/server library for HTTP/1.X / HTTP/2 written entirely in OCaml |
Awesome OCaml / Networking | |||
ocaml-dns | 105 | 17 days ago | – A pure OCaml implementation of the DNS protocol |
fluent-logger | 7 | about 10 years ago | – Fluentd logger for OCaml |
charrua-unix | 11 | over 7 years ago | charrua-unix is a Unix DHCP daemon based on |
Awesome OCaml / Online Courses | |||
OCaml MOOC: Introduction to Functional Programming in OCaml | Videos available in of the YouTube channel | ||
Cornell University – Data Structures and Functional Programming | |||
Princeton University - Functional programming in OCaml | |||
University of Illinois | Course that uses OCaml to teach functional programming and programming language design | ||
Awesome OCaml / Package Management | |||
OPAM | – A flexible Git-friendly package manager with multiple compiler support | ||
ocamlfind | — Local OCaml library manager. Used by most of the OCaml ecosystem | ||
OCaml for Windows | opam repository and experimental build for Windows (deprecated since 2021) | ||
Diskuv OCaml | 63 | 2 months ago | Diskuv OCaml distribution for Windows |
makorel | 8 | almost 10 years ago | – Release OPAM packages easily |
esy | 846 | 5 days ago | package.json workflow for native development with Reason/OCaml |
dune | 1,635 | 5 days ago | – A composable and opinionated build system for OCaml (former jbuilder) |
Oasis | A tool to integrate a configure, build and install system in your OCaml project. It helps to create standard entry points in your build system and allows external tools to analyse your project easily | ||
Awesome OCaml / Package Management / Oasis | |||
oasis2opam | 27 | about 7 years ago | — Tool to convert OASIS metadata to OPAM package descriptions |
Awesome OCaml / Package Management | |||
obuild | 55 | about 1 year ago | – Simple package build system for ocaml |
ocaml-makefile | 74 | 16 days ago | — Easy to use Makefile for small to medium-sized OCaml-projects |
topkg | 68 | about 1 year ago | — OPAM-aware packaging system using ocamlbuild |
Bazel | 37 | over 3 years ago | OCaml rules for , Google's multi-language and platform build tool |
Awesome OCaml / Parallelism | |||
Parmap | — Provides easy-to-use parallel map and fold functions | ||
ForkWork | 19 | about 5 years ago | — A simple library for forking child processes to perform work on multiple cores |
Functory | — A distributed computing library which facilitates distributed execution of parallelizable computations in a seamless fashion | ||
Rpc.Parallel | 47 | 12 days ago | — A library for spawning processes on a cluster of machines, and passing typed messages between them |
Ocamlnet | — An enhanced system platform library. Contains the library to compute tasks on as many cores of the machine as needed | ||
Nproc | 29 | about 11 years ago | – Process pool implementation for OCaml |
Parany | 52 | about 1 year ago | – Parallelize computation over independent items, even if there is an infinite number of them |
Sklml | – Functional parallel skeleton compiler and programming system for OCaml programs | ||
SPOC | 138 | 11 months ago | Libraries and syntax extensions to offload intensive computations to parallel accelerators (multicore CPUs, GPUs and other accelerators compatible with GPGPU frameworks) |
What is the state of OCaml's parallelization abilities? | |||
Parallel programming in multicore OCaml | 283 | 8 months ago | |
Parallelism programming | from the officiel OCaml manual | ||
Awesome multicore OCaml | 147 | about 1 year ago | . A compilation of resources |
Awesome OCaml / Printers helpers | |||
Console.log | 459 | 7 months ago | Reason's native |
Dum | 29 | over 2 years ago | |
Inspect | 33 | over 8 years ago | |
ppx_deriving | 466 | about 2 months ago | ’s |
refl | 51 | about 2 years ago | , a ppx_deriving-like |
lrt | 32 | about 4 years ago | , another ppx_deriving-like |
tpf | 23 | over 4 years ago | , again a ppx_deriving-like |
typerep | 23 | 3 months ago | , probably a ppx_deriving-like with ppx_typerep_conv |
repr | , which appears to have the user build the type representation manually from combinators in addition to also having the user pass it where needed | ||
data-encoding | , also fully manual | ||
cmon | 24 | over 2 years ago | , fully manual |
dyn | 1,635 | 5 days ago | in Dune. It appears to also be fully manual |
Genprint | 29 | over 4 years ago | |
OCaml@p | 11 | almost 8 years ago | |
Awesome OCaml / Project Starter Templates | |||
drom | 184 | 2 months ago | The drom tool is a wrapper over opam/dune in an attempt to provide a cargo-like user experience |
spin | 295 | about 1 month ago | Reason and Ocaml project generator |
modern-ocaml | 76 | about 1 month ago | Template for an ocaml project with modern tooling |
Awesome OCaml / Questions | |||
OCaml polymorphism example other than template function? | |||
OCaml - polymorphic print and type losing | |||
Science and Technical Computing | |||
biocaml | 123 | almost 2 years ago | – OCaml Bioinformatics Library |
bistro | 47 | 6 months ago | – OCaml library for building bioinformatics pipelines |
lacaml | OCaml bindings for BLAS/LAPACK (high-performance linear algebra Fortran libraries) | ||
obandit | OCaml library for multi-armed bandits | ||
onumerical | 8 | over 10 years ago | – Numerical library for OCaml |
oml | 119 | almost 7 years ago | OCaml library for general numerical work |
ocephes | 12 | over 8 years ago | Bindings to frequently used special functions library |
slap | 88 | over 4 years ago | A linear algebra library in OCaml with type-based static size checking for matrix operations |
tensorflow-ocaml | 283 | over 5 years ago | – OCaml bindings for TensorFlow |
owl | 1,222 | 3 days ago | OCaml numerical library: dense and sparse matrix, linear algebra, regressions, maths and stats functions |
WHIZARD | A system designed for the efficient calculation of multi-particle scattering cross sections and simulated event samples | ||
Science and Technical Computing / Regular Expressions | |||
Re | 232 | 20 days ago | – a pure OCaml regular expressions library with combinators, supporting several formats (glob, posix, str, etc.) |
ocaml-pcre | 31 | 16 days ago | – bindings to the PCRE library (perl-compatible regular expressions) |
Humane-re | 25 | about 5 years ago | – Humane-re attempts to provide an easy interface for 90% of your regex needs. Courtesy of ocaml-re |
Tyre | 171 | almost 5 years ago | Tyre is a set of combinators to build type-safe regular expressions, allowing automatic extraction and modification of matched groups |
Science and Technical Computing / Security and Cryptography | |||
ocaml-tls | 304 | 24 days ago | – TLS in pure OCaml |
Digestif | 87 | 8 months ago | Hash algorithms (like SHA* or BLAKE2*) in OCaml and C |
cryptokit | 96 | 21 days ago | – The Cryptokit library for OCaml provides a variety of cryptographic primitives that can be used to implement cryptographic protocols in security-sensitive applications |
nocoiner | 11 | over 1 year ago | A Commitment scheme library for Multi-party computations such as online auctions and gambling |
nocrypto | 111 | over 4 years ago | – A small cryptographic library behind the ocaml-tls project. It is built to be straightforward to use, adhere to functional programming principles, and able to run in a Xen-based unikernel |
Science and Technical Computing / Semantic Technology | |||
OCaml-RDF | – OCaml library to manipulate RDF graphs and execute Sparql queries | ||
Science and Technical Computing / Serialization | |||
atdgen | 316 | 4 months ago | — A serialization compiler for multiple languages (OCaml, Java, Python, Scala, Typescript) with a Binou or JSON format |
bencode | 24 | 7 months ago | — Bencode (.torrent file format) reader/writer |
biniou | 42 | over 2 years ago | – Extensible binary data format, like JSON but faster |
cbor | 24 | almost 3 years ago | — OCaml native decoder/encoder |
jsonm | — Non-blocking streaming JSON codec for OCaml | ||
xmlm | — A streaming codec to decode and encode the XML data format | ||
yojson | 328 | 5 months ago | — An optimized parsing and printing library for the JSON format |
sexplib | 147 | 12 days ago | – A S-expression parser and printer |
Science and Technical Computing / System Programming | |||
OMicroB | 141 | 3 days ago | A virtual machine designed to run OCaml bytecode on AVR (Arduino for instance) micro-controlers |
OCaPIC | An OCaml virtual machine for PIC18 micro-controlers | ||
ocaml-esp32 | 18 | about 4 years ago | A compiler for ESP32 SoC |
Science and Technical Computing / Testing | |||
Alcotest | 455 | about 2 months ago | – A lightweight and colourful test framework |
OUnit | – OUnit is a unit test framework for OCaml. It allows one to easily create unit-tests for OCaml code. It is based on HUnit, a unit testing framework for Haskell | ||
QCheck | 347 | 5 months ago | — QCheck is a property testing library inspired from Haskell's QuickCheck |
iTeML | 66 | over 3 years ago | (formerly known as ) — supports inline pragma's to generate tests |
Kaputt | — comprehensive testing framework | ||
Pa_test | — General inline testing macro's | ||
TestSimple | 13 | over 9 years ago | A lightweight unit testing framework compatible with the |
expect-test | 145 | 12 days ago | — A framework for writing tests in OCaml, similar to , developed by |
Science and Technical Computing / Utilities | |||
ocaml-cuid | 18 | over 2 years ago | Collision-resistant IDs for server scalability & database performance |
Validate | 16 | 10 months ago | PPX deriver designed to streamline the process of validating records |
Uuidm | Uuidm is an OCaml module implementing 128-bit universally unique identifiers version 3, 5 (name based with MD5, SHA-1 hashing) and 4 (random based) according to RFC 4122 | ||
sqids-ocaml | 9 | 9 months ago | Official OCaml port of Sqids. Generate short unique IDs from numbers |
Science and Technical Computing / Web Development | |||
Opium | 759 | 5 months ago | – Sinatra like web toolkit for OCaml |
Ocsigen Eliom | – Eliom is a full-featured multi-tier framework, for developing multi-platform Web and mobile apps as 100% OCaml distributed applications. It can also be used for more traditional Web or mobile apps: Web sites, single page applications, REST API, etc | ||
Dream | Tidy Web framework for OCaml and ReasonML | ||
webmachine | 221 | about 3 years ago | – A REST toolkit for OCaml. OCaml webmachine is a layer on top of cohttp that implements a state-machine-based HTTP request processor. It's particularly well-suited for writing RESTful APIs. As the name suggests, this is an OCaml port of the webmachine project |
incr_dom | 381 | 12 days ago | A library for building dynamic webapps, using Js_of_ocaml |
fmlib_browser | a library which helps to write web applications which run in the browser in a pure functional style | ||
ocaml-vdom | 197 | 4 months ago | Elm architecture and (V)DOM for OCaml |
COW | 107 | 12 months ago | – Caml on the Web (COW) is a set of parsers and syntax extensions to let you manipulate HTML, CSS, XML, JSON and Markdown directly from OCaml code |
Ocamlnet | has many relevant web libraries — html parser, for ASN.1 parsing, for Base64, Quoted Printable, URL encoding and HTML escaping, for MIME processing, etc. See the in Ocamlnet's manual | ||
tyxml | — Library to build valid (according to the W3C spec) Html and Svg trees | ||
js_of_ocaml | – Js_of_ocaml is a compiler of OCaml bytecode to Javascript. It makes it possible to run Ocaml programs in a Web browser | ||
Science and Technical Computing / Web Development / js_of_ocaml | |||
commonjs_of_ocaml | 13 | over 8 years ago | Easily import and export CommonJS modules from a js_of_ocaml project |
Science and Technical Computing / Web Development | |||
ReScript | ReScript is a robustly typed language that compiles to efficient and human-readable JavaScript | ||
ocaml-uri | 98 | 4 months ago | – RFC3986 URI parsing library |
Goji | 44 | over 10 years ago | – An OCaml bindings generator for JavaScript libraries |
Syndic | 34 | about 1 year ago | – RSS and Atom feed parsing |
ocaml-mustache | 83 | 6 months ago | – mustache.js logic-less templates in OCaml |
atdjs | 9 | about 11 years ago | – atd code generator (serialization) for OCaml/js_of_ocaml |
jingoo | 127 | 8 months ago | – OCaml template engine almost compatible with jinja2 |
dispatch | 45 | about 2 years ago | – Path-based dispatching for client- and server-side applications |
Lambda Soup | 383 | 3 months ago | Functional HTML scraping and manipulation with CSS selectors, à la Python's Beautiful Soup |
Markup.ml | 146 | about 2 months ago | Error-recovering streaming HTML5 and XML parsers, serializers |
gen_js_api | 175 | about 1 month ago | gen_js_api aims at simplifying the creation of OCaml bindings for Javascript libraries |
routes | 144 | 2 months ago | Typed routes for OCaml/ReasonML web applications |
Cumulus | 49 | over 9 years ago | – Hacker news like website with the OCaml framework Ocsigen |