Update render script and Makefile

This commit is contained in:
Jonas Zeunert
2024-04-22 21:54:39 +02:00
parent 2d63fe63cd
commit 4d0cd768f7
10975 changed files with 47095 additions and 4031084 deletions

View File

@@ -5,8 +5,9 @@
▐ _Everything you'll ever need on the road to mastering OCaml._
A curated list of references to awesome OCaml tools, frameworks, libraries, and articles. Additionally, there is a collection of freely available books (https://github.com/rizo/awesome-ocaml/tree/master/books), 
papers (https://github.com/rizo/awesome-ocaml/tree/master/papers), and presentations (https://github.com/rizo/awesome-ocaml/tree/master/presentations).
A curated list of references to awesome OCaml tools, frameworks, libraries, and articles. Additionally, there is a collection of freely available books 
(https://github.com/rizo/awesome-ocaml/tree/master/books), papers (https://github.com/rizo/awesome-ocaml/tree/master/papers), and presentations 
(https://github.com/rizo/awesome-ocaml/tree/master/presentations).
If you're looking for comprehensive community-driven content about OCaml, visit 📚OCamlverse (https://ocamlverse.github.io/)!
@@ -83,20 +84,23 @@
- Ke (https://github.com/mirage/ke) - Fast implementation of queue (FIFO) in OCaml.
- Duff (https://github.com/mirage/duff) - Implementation of Rabin's fingerprint and delta compression by P. MacDonald in OCaml (same as libXdiff (http://www.xmailserver.org/xdiff-lib.html)
- ORaft (https://github.com/komamitsu/oraft) - Library of Raft consensus algorithm (https://raft.github.io/raft.pdf) implemented in OCaml
- ODiff (https://github.com/dmtrKovalenko/odiff)  Library of YIQ NTSC transmission image difference alghoritm (http://www.progmat.uaem.mx:8080/artVol2Num2/Articulo3Vol2Num2.pdf) implemented in OCaml and 
ReasonML.
- ODiff (https://github.com/dmtrKovalenko/odiff)  Library of YIQ NTSC transmission image difference alghoritm (http://www.progmat.uaem.mx:8080/artVol2Num2/Articulo3Vol2Num2.pdf) implemented 
in OCaml and ReasonML.
Application Libraries
- Batteries Included (https://github.com/ocaml-batteries-team/batteries-included) A community-maintained foundation library for your OCaml projects.
- Cmdliner (https://github.com/dbuenzli/cmdliner) Declarative definition of command line interfaces for OCaml.
- Core (https://github.com/janestreet/core) Jane Street Capital's full-fledged standard library overlay. A portable subset of Core is also available: Core_kernel (https://github.com/janestreet/core_kernel).
- Core (https://github.com/janestreet/core)  Jane Street Capital's full-fledged standard library overlay. A portable subset of Core is also available: Core_kernel 
(https://github.com/janestreet/core_kernel).
- Base (https://github.com/janestreet/base) - Jane Street Capital's dependency-free, quick-compiling, fully-portable across any environment that can run OCaml code standard library.
- React (http://erratique.ch/software/react) React is an OCaml module for functional reactive programming (FRP). It provides support for programs with time-varying values, declarative events, and signals.
- React (http://erratique.ch/software/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 (https://github.com/UnixJunkie/minicli) Minimalist library for command-line parsing.
- easy-format (https://github.com/mjambon/easy-format) Pretty-printing library for OCaml.
- ocaml-rpc (https://github.com/mirage/ocaml-rpc) Light library to deal with RPCs in OCaml.
- ocaml-containers (https://github.com/c-cube/ocaml-containers) A lightweight, modular standard library extension, string library, and interfaces to various libraries (bigarrays, Unix, etc.) BSD license.
- ocaml-containers (https://github.com/c-cube/ocaml-containers)  A lightweight, modular standard library extension, string library, and interfaces to various libraries (bigarrays, Unix, 
etc.) BSD license.
Benchmarking
@@ -116,35 +120,38 @@
Books
- More OCaml: Algorithms, Methods, and Diversions (https://www.amazon.com/More-OCaml-Algorithms-Methods-Diversions/dp/0957671113/)  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 (http://www.greenteapress.com/thinkocaml/index.html) 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 (http://ocaml-book.com/) 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 (https://www.amazon.co.uk/Pearls-Functional-Algorithm-Design-Richard/dp/0521513383) 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 
here (https://github.com/MassD/pearls).
- More OCaml: Algorithms, Methods, and Diversions (https://www.amazon.com/More-OCaml-Algorithms-Methods-Diversions/dp/0957671113/)  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 (http://www.greenteapress.com/thinkocaml/index.html) 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 (http://ocaml-book.com/) 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 (https://www.amazon.co.uk/Pearls-Functional-Algorithm-Design-Richard/dp/0521513383) 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 here (https://github.com/MassD/pearls).
- Real World OCaml (https://realworldocaml.org/) by Y. Minsky, A. Madhavapeddy, and J. Hickey - Functional Programming for the masses.
- Unix System Programming in OCaml (https://ocaml.github.io/ocamlunix/) by X. Leroy and D. Rémy Introduction to Unix Systems Programming, with an emphasis on communications between processes.
- Using, Understanding, and Unraveling OCaml (https://caml.inria.fr/pub/docs/u3-ocaml) This book describes both the OCaml language and the theoretical grounds behind its powerful type system.
- Purely Functional Data Structures (https://www.amazon.co.uk/Purely-Functional-Structures-Chris-Okasaki/dp/0521631246/ref=sr_1_1?ie=UTF8&qid=1406279836&sr=8-1&keywords=functional+data+structures) - This is the 
first or only book focus on various data structures in FP world. A must-read one.
- Unix System Programming in OCaml (https://ocaml.github.io/ocamlunix/) by X. Leroy and D. Rémy  Introduction to Unix Systems Programming, with an emphasis on communications between 
processes.
- Using, Understanding, and Unraveling OCaml (https://caml.inria.fr/pub/docs/u3-ocaml)  This book describes both the OCaml language and the theoretical grounds behind its powerful type 
system.
- Purely Functional Data Structures 
(https://www.amazon.co.uk/Purely-Functional-Structures-Chris-Okasaki/dp/0521631246/ref=sr_1_1?ie=UTF8&qid=1406279836&sr=8-1&keywords=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 (http://www.ffconsultancy.com/products/ocaml_for_scientists/) - by Jon Harrop.
- OCaml Programming: Correct + Efficient + Beautiful (https://cs3110.github.io/textbook) - Textbook on Functional Programming and Data Structures in OCaml - by Michael R. Clarkson et al.
Videos
 - OCaml Programming: Correct + Efficient + Beautiful (https://www.youtube.com/playlist?list=PLre5AT9JnKShBOPeuiD9b-I4XROIJhkIU) - List of 200 bite-sized videos recorded by Michael R. Clarkson. It can be watched
independently of the textbook titled the same and listed above in the Books section (#books).
 - OCaml Programming: Correct + Efficient + Beautiful (https://www.youtube.com/playlist?list=PLre5AT9JnKShBOPeuiD9b-I4XROIJhkIU) - List of 200 bite-sized videos recorded by Michael R. 
Clarkson. It can be watched independently of the textbook titled the same and listed above in the Books section (#books).
Code Analysis and Linters
- Mascot (http://mascot.x9c.fr/) - Mascot is a style-checker for OCaml sources.
- pfff (https://github.com/returntocorp/pfff)  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.
- pfff (https://github.com/returntocorp/pfff)  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 (https://github.com/facebook/infer) - Infer is a static analyzer for Java, C and Objective-C
- Frama-C (http://frama-c.com) - Frama-C is a static analysis and formal proof framework for C and C++.
- flow (https://github.com/facebook/flow) - flow is a static type checker for JavaScript.
@@ -170,12 +177,14 @@
 - Hack Programming Language (https://hacklang.org/)
 - Haxe Programming Language (https://haxe.org/)
 - Neko Programming Language (https://nekovm.org/) - Originally the compiler was written in OCaml.
 - Mezzo Programming Language (https://protz.github.io/mezzo/) - Mezzo is a programming language in the ML tradition, which places strong emphasis on the control of aliasing and access to mutable memory.
 - Mezzo Programming Language (https://protz.github.io/mezzo/) - Mezzo is a programming language in the ML tradition, which places strong emphasis on the control of aliasing and access to 
mutable memory.
 - OCaml-Java (http://www.ocamljava.org/) - OCaml to Java bytecode compiler.
 - Opa Programming Language (http://opalang.org/)
 - Rhine (https://github.com/artagnon/rhine-ml) A Lisp on LLVM written in OCaml.
 - Rust Programming Language (https://www.rust-lang.org/) - Originally written in OCaml before bootstrapping.
 - Quick C-- Target Language (http://www.cminusminus.org/) - It is now a dead project. Github Repo (https://github.com/nrnrnr/qc--). Alternative website (http://www.cs.tufts.edu/~nr/c--/qc--.html).
 - Quick C-- Target Language (http://www.cminusminus.org/) - It is now a dead project. Github Repo (https://github.com/nrnrnr/qc--). Alternative website 
(http://www.cs.tufts.edu/~nr/c--/qc--.html).
 - tis-interpreter (https://github.com/TrustInSoft/tis-interpreter) - An interpreter for finding subtle bugs in programs written in standard C
 - Reason (http://facebook.github.io/reason/) - Friendly syntax & toolchain for OCaml by Facebook.
@@ -184,7 +193,8 @@
- Parser and Lexer Generators:
 - Opal (https://github.com/pyrocat101/opal) Self-contained monadic parser combinators for OCaml.
 - Sedlex (https://github.com/ocaml-community/sedlex) is a modern, encoding-agnostic (read: Unicode-supporting) lexer generator (the ppx-based successor to ulex (http://www.cduce.org/download.html#side).)
 - Sedlex (https://github.com/ocaml-community/sedlex) is a modern, encoding-agnostic (read: Unicode-supporting) lexer generator (the ppx-based successor to ulex 
(http://www.cduce.org/download.html#side).)
 - Menhir (http://gallium.inria.fr/~fpottier/menhir/) Menhir is a LR(1) parser generator for OCaml.
- See **ocaml-parsing** (https://github.com/smolkaj/ocaml-parsing) for a clearer example of using Menhir and Sedlex to produce a useful parser, 
- ... and **Obelisk** (https://github.com/Lelio-Brun/Obelisk), a neat project to produce readable LaTeX, HTML, or plain-text EBNF-style documentation for your grammar.
@@ -196,8 +206,9 @@
Concurrency
Two concurrency libraries exist in OCaml: _Lwt_ and _Async_. They provide very similar functionality but make radically different decisions with regards to error handling and internal implementation details (see
the links below for more details). Real World OCaml (https://realworldocaml.org/) uses Async, but a version of the code examples translated to Lwt (https://github.com/dkim/rwo-lwt) is also available.
Two concurrency libraries exist in OCaml: _Lwt_ and _Async_. They provide very similar functionality but make radically different decisions with regards to error handling and internal 
implementation details (see the links below for more details). Real World OCaml (https://realworldocaml.org/) uses Async, but a version of the code examples translated to Lwt 
(https://github.com/dkim/rwo-lwt) is also available.
- Libraries:
 - Lwt (http://ocsigen.org/lwt/) — A cooperative threads library for OCaml.
@@ -239,8 +250,8 @@
 - Implementing the Binary Memcached Protocol with Ocaml and Bitstring (https://andreas.github.io/2014/08/22/implementing-the-binary-memcached-protocol-with-ocaml-and-bitstring/)
 - Interfacing OCaml and PostgreSQL with Caqti (https://medium.com/@bobbypriambodo/interfacing-ocaml-and-postgresql-with-caqti-a92515bdaa11)
 - Finally, Type-Safe, Extensible and Efficient Language Integrated Query (https://www.cs.tsukuba.ac.jp/~kam/papers/pepm2016a.pdf) 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. 
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. 
Datetime
@@ -254,16 +265,18 @@
Developer Tools
- Try OCaml (https://try.ocamlpro.com/) Try OCaml in your web browser.
- learn-ocaml (https://github.com/ocaml-sf/learn-ocaml). Web app (written in OCaml) underlying the learn-ocaml-corpus. Can be customized to serve lectures (with Markdown slides), playgrounds (with a toplevel 
prelude), and interactive exercises (with OCaml tests). MIT License.
- learn-ocaml.el (https://github.com/pfitaxel/learn-ocaml.el). Minor mode for Emacs that can display exercise topics and grade exercise solutions, after logging to a Learn-OCaml instance. MIT License.
- learn-ocaml (https://github.com/ocaml-sf/learn-ocaml). Web app (written in OCaml) underlying the learn-ocaml-corpus. Can be customized to serve lectures (with Markdown slides), playgrounds 
(with a toplevel prelude), and interactive exercises (with OCaml tests). MIT License.
- learn-ocaml.el (https://github.com/pfitaxel/learn-ocaml.el). Minor mode for Emacs that can display exercise topics and grade exercise solutions, after logging to a Learn-OCaml instance. MIT
License.
- BetterOCaml (https://betterocaml.ml) An efficient, intuitive, and cross-platform web IDE with your OCaml code interpreted and running in your browser!
- codingground (https://www.tutorialspoint.com/compile_ocaml_online.php) Compile and execute OCaml code online.
- OCaml: Learn & Code iOS app (https://apps.apple.com/app/ocaml-learn-code/id1547506826) - Learn and execute OCaml code from your iPhone/iPad/Mac.
- Jupyter (https://github.com/akabe/ocaml-jupyter) An OCaml kernel for the Jupyter notebook.
- utop (https://github.com/ocaml-community/utop) Universal toplevel for OCaml with support for multiline edition, history, real-time and context-sensitive completion, colors, and more.
- ocamlformat (https://github.com/ocaml-ppx/ocamlformat) - A command-line tool to format OCaml code.
- ocamlbrowser (http://caml.inria.fr/pub/docs/manual-ocaml/browser.html) A source and compiled interface browser, written using LablTk. Included in the standard distribution for ocaml = 4.02.
- ocamlbrowser (http://caml.inria.fr/pub/docs/manual-ocaml/browser.html)  A source and compiled interface browser, written using LablTk. Included in the standard distribution for ocaml = 
4.02.
- ghim (https://github.com/samoht/ghim) A command-line tool to manage Github Issues.
- OCaml Yeoman Generator (https://github.com/mabrasil/generator-ocaml) Yeoman generator to scaffold OCaml modules.
@@ -273,10 +286,12 @@
 - Modular foreign function bindings (http://openmirage.org/blog/modular-foreign-function-bindings)
 - Py.ml (https://github.com/thierry-martinez/pyml) - OCaml bindings for Python.
- Editor Integration:
 - ocaml-lsp (https://github.com/ocaml/ocaml-lsp) - An LSP language server for OCaml that integrates with any editor that understands LSP like VSCode (https://github.com/microsoft/vscode), Vim and Emacs.
 - ocaml-lsp (https://github.com/ocaml/ocaml-lsp) - An LSP language server for OCaml that integrates with any editor that understands LSP like VSCode (https://github.com/microsoft/vscode), 
Vim and Emacs.
 - merlin (https://github.com/ocaml/merlin) Context sensitive completion for OCaml in Vim and Emacs.
 - tuareg (https://github.com/ocaml/tuareg) - OCaml mode for Emacs that can run the toplevel and the debugger within Emacs.
 - opam-switch-mode (https://github.com/ProofGeneral/opam-switch-mode) - Minor mode for Emacs that extends Tuareg and Merlin with menus to change or reset the opam switch in the ambient Emacs session.
 - opam-switch-mode (https://github.com/ProofGeneral/opam-switch-mode) - 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 (https://github.com/Khady/merlin-eldoc) Emacs package to provide merlin's features through eldoc.
 - vscode-ocaml (https://github.com/hackwaly/vscode-ocaml) extension that provides OCaml language support for VSCode (https://github.com/microsoft/vscode)
 - OCaml Debugger (https://github.com/hackwaly/ocamlearlybird) extension that provides OCaml Debugger for VSCode (https://github.com/microsoft/vscode)
@@ -295,18 +310,20 @@
Exercises and Short Examples
- 99 problems (https://ocaml.org/learn/tutorials/99problems.html). 99% of the solutions are here (https://github.com/MassD/99).
- learn-ocaml-corpus (https://ocaml-sf.org/learn-ocaml-public/#activity=exercises). Corpus of beginner-to-advanced online exercises (including those from the OCaml MOOC) with automatic grading tests.
- learn-ocaml-corpus (https://ocaml-sf.org/learn-ocaml-public/#activity=exercises). Corpus of beginner-to-advanced online exercises (including those from the OCaml MOOC) with automatic 
grading tests.
- Rosetta Code (http://rosettacode.org/wiki/Category:OCaml)
- OCaml at Exercism (http://exercism.io/languages/ocaml)  Exercism is your place to engage in thoughtful conversations about code. Explore simplicity, idiomatic language features, and expressive, readable code.
Solutions (https://github.com/exercism/xocaml).
- Programming Language Examples Alike Cookbook (http://pleac.sourceforge.net/pleac_ocaml/index.html) - The OCaml section of the book is a free reference for solving common programming problems using OCaml.
- OCaml at Exercism (http://exercism.io/languages/ocaml)  Exercism is your place to engage in thoughtful conversations about code. Explore simplicity, idiomatic language features, and 
expressive, readable code. Solutions (https://github.com/exercism/xocaml).
- Programming Language Examples Alike Cookbook (http://pleac.sourceforge.net/pleac_ocaml/index.html) - The OCaml section of the book is a free reference for solving common programming 
problems using OCaml.
Formal Software Verification
- Coq (https://coq.inria.fr/)  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 (http://why3.lri.fr/)  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.
- Coq (https://coq.inria.fr/)  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 (http://why3.lri.fr/)  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 (http://alt-ergo.lri.fr/) Alt-Ergo is an open-source SMT solver dedicated to the proof of mathematical formulas generated in the context of program verification.
@@ -356,8 +373,8 @@
- lablqml (https://github.com/Kakadu/lablqml) QML Qt5 bindings for OCaml.
- labltk (https://forge.ocamlcore.org/projects/labltk/) — Interface to the Tcl/Tk GUI framework. In the standard distribution for ocaml <= 4.01.
- TSDL (http://erratique.ch/software/tsdl) Tsdl is an OCaml module providing thin bindings to the cross-platform SDL library.
- Lambda-Term (https://github.com/ocaml-community/lambda-term)  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.
- Lambda-Term (https://github.com/ocaml-community/lambda-term)  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 (https://github.com/pqwy/notty) - Notty is a declarative terminal library for OCaml, structured around the notion of composable images.
- ocaml-linenoise (https://github.com/ocaml-community/ocaml-linenoise) - Self-contained OCaml bindings to linenoise; easy high-level readline functionality in OCaml.
@@ -383,11 +400,12 @@
- frama-c (https://git.frama-c.com/pub/frama-c) - platform dedicated to the analysis of source code written in C
- libguestfs (https://github.com/libguestfs/libguestfs) - library and tools for accessing and modifying virtual machine disk images
- Liquidsoap (https://github.com/savonet/liquidsoap) - a swiss-army knife for multimedia streaming, notably used for netradios and webtvs
- mirage (https://github.com/mirage/mirage) - library operating system that constructs unikernels for secure, high-performance network applications across a variety of cloud computing and mobile platforms
- mirage (https://github.com/mirage/mirage) - library operating system that constructs unikernels for secure, high-performance network applications across a variety of cloud computing and 
mobile platforms
- MLDonkey (https://github.com/ygrek/mldonkey) - cross-platform multi-network peer-to-peer daemon
- Oni2 (https://github.com/onivim/oni2) - Native, lightweight modal code editor.
- pfff (https://github.com/returntocorp/pfff) - 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.
- pfff (https://github.com/returntocorp/pfff) - 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.
- WHY3 (https://gitlab.inria.fr/why3/why3) - platform for deductive program verification
- xen-api (https://github.com/xapi-project/xen-api) - management stack that configures and controls Xen-enabled hosts and resource pools, and co-ordinates resources within the pool.
@@ -434,8 +452,8 @@
 - ppx_deriving_yojson (https://github.com/whitequark/ppx_deriving_yojson) A Yojson codec generator for OCaml.
- Tools and Language Extensions:
 - MetaOCaml (http://okmij.org/ftp/ML/MetaOCaml.html) an OCaml dialect for multi-stage programming.
 - Fan (http://bobzhang.github.io/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.
 - Fan (http://bobzhang.github.io/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 (https://camlp5.github.io/) - Camlp5 is a preprocessor-pretty-printer of OCaml.
 - camlp4 (http://caml.inria.fr/pub/docs/manual-camlp4/manual002.html) - Camlp4 is part of the standard OCaml distribution and is different from Camlp5.
@@ -449,7 +467,8 @@
 - OCaml on iOS 7 Released (http://psellos.com/2014/08/2014.08.ocamlxarm-402.html)
 - OCaml + Cordova = more secured, typed and hybrid mobile applications (https://dannywillems.github.io/2016/07/14/ocaml-cordova-secured-typed-hybrid-mobile-applications.html)
- Bindings:
 - Cordova plugins (https://github.com/dannywillems/ocaml-cordova-plugin-list) List of bindings to Cordova plugins. Get access to native device components like accelerometer, SMS, geolocation, etc in OCaml.
 - Cordova plugins (https://github.com/dannywillems/ocaml-cordova-plugin-list)  List of bindings to Cordova plugins. Get access to native device components like accelerometer, SMS, 
geolocation, etc in OCaml.
Networking
@@ -484,8 +503,8 @@
- Build Tools:
 - dune (https://github.com/ocaml/dune) A composable and opinionated build system for OCaml (former jbuilder)
 - Oasis (http://oasis.forge.ocamlcore.org/) - 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.
 - Oasis (http://oasis.forge.ocamlcore.org/) - 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.
- **oasis2opam** (https://github.com/ocaml/oasis2opam) — Tool to convert OASIS metadata to OPAM package descriptions.
 - obuild (https://github.com/ocaml-obuild/obuild) Simple package build system for ocaml.
 - ocaml-makefile (https://github.com/mmottl/ocaml-makefile) — Easy to use Makefile for small to medium-sized OCaml-projects.
@@ -501,12 +520,13 @@
 - ForkWork (https://github.com/mlin/forkwork) — A simple library for forking child processes to perform work on multiple cores.
 - Functory (http://functory.lri.fr/About.html) — A distributed computing library which facilitates distributed execution of parallelizable computations in a seamless fashion.
 - Rpc.Parallel (https://github.com/janestreet/rpc_parallel) — A library for spawning processes on a cluster of machines, and passing typed messages between them.
 - Ocamlnet (http://projects.camlcity.org/projects/ocamlnet.html) — An enhanced system platform library. Contains the netmulticore library to compute tasks on as many cores of the machine as needed.
 - Ocamlnet (http://projects.camlcity.org/projects/ocamlnet.html) — An enhanced system platform library. Contains the netmulticore library to compute tasks on as many cores of the machine as
needed.
 - Nproc (https://github.com/MyLifeLabs/nproc) Process pool implementation for OCaml.
 - Parany (https://github.com/UnixJunkie/parany) Parallelize computation over independent items, even if there is an infinite number of them.
 - Sklml (http://sklml.inria.fr) Functional parallel skeleton compiler and programming system for OCaml programs.
 - SPOC (https://github.com/mathiasbourgoin/SPOC) - Libraries and syntax extensions to offload intensive computations to parallel accelerators (multicore CPUs, GPUs and other accelerators compatible with GPGPU 
frameworks).
 - SPOC (https://github.com/mathiasbourgoin/SPOC) - Libraries and syntax extensions to offload intensive computations to parallel accelerators (multicore CPUs, GPUs and other accelerators 
compatible with GPGPU frameworks).
- Articles:
 - What is the state of OCaml's parallelization abilities? (https://stackoverflow.com/questions/6588500/what-is-the-state-of-ocamls-parallelization-abilities)
@@ -524,8 +544,8 @@
- lrt  (https://github.com/LexiFi/lrt#getting-started), another ppx_deriving-like.
- tpf  (https://github.com/pqwy/tpf#readme), again a ppx_deriving-like.
- typerep  (https://github.com/janestreet/typerep), probably a ppx_deriving-like with ppx_typerep_conv.
- repr (https://mirage.github.io/repr/repr/Repr/index.html#val-pp_json), which appears to have the user build the type representation manually from combinators in addition to also having the user pass it where 
needed.
- repr (https://mirage.github.io/repr/repr/Repr/index.html#val-pp_json), 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 (https://gitlab.com/nomadic-labs/data-encoding/-/blob/master/src/tutorial.md#how-to-build-an-encoding), also fully manual.
- cmon  (https://github.com/let-def/cmon#documentation), fully manual.
- dyn  (https://github.com/ocaml/dune/blob/4b95cd3d1b3a62e69a9a9db2bc4af2f9fd2e56d8/otherlibs/dyn/dyn.mli) in Dune. It appears to also be fully manual.
@@ -545,7 +565,7 @@
- OCaml - polymorphic print and type losing (https://stackoverflow.com/questions/7442449/ocaml-polymorphic-print-and-type-losing)
 Science and Technical Computing
 Science and Technical Computing
- biocaml (https://github.com/biocaml/biocaml) OCaml Bioinformatics Library .
- bistro (https://github.com/pveber/bistro) OCaml library for building bioinformatics pipelines.
@@ -572,11 +592,11 @@
- ocaml-tls (https://github.com/mirleft/ocaml-tls) TLS in pure OCaml.
- Digestif (https://github.com/mirage/digestif) - Hash algorithms (like SHA or BLAKE2) in OCaml and C.
- cryptokit (https://github.com/xavierleroy/cryptokit)  The Cryptokit library for OCaml provides a variety of cryptographic primitives that can be used to implement cryptographic protocols in security-sensitive
applications.
- cryptokit (https://github.com/xavierleroy/cryptokit)  The Cryptokit library for OCaml provides a variety of cryptographic primitives that can be used to implement cryptographic protocols 
in security-sensitive applications.
- nocoiner (https://github.com/marcoonroad/nocoiner) - A Commitment scheme library for Multi-party computations such as online auctions and gambling.
- nocrypto (https://github.com/mirleft/ocaml-nocrypto)  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.
- nocrypto (https://github.com/mirleft/ocaml-nocrypto)  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.
▐ Note: The differences between nocrypto and cryptokit cryptographic libraries are described in the following blog post: OCaml-TLS: building the nocrypto library core 
▐ (https://mirage.io/blog/introducing-nocrypto).
@@ -601,7 +621,8 @@
System Programming
- Mirage OS (https://github.com/mirage/mirage) Mirage is a programming framework for constructing secure, high-performance network applications across a variety of cloud computing and mobile platforms.
- Mirage OS (https://github.com/mirage/mirage)  Mirage is a programming framework for constructing secure, high-performance network applications across a variety of cloud computing and 
mobile platforms.
- ocaml-fat (https://github.com/mirage/ocaml-fat) Read and write FAT-format filesystems from OCaml.
- ocaml-git (https://github.com/mirage/ocaml-git) Pure OCaml low-level git bindings.
- ocaml-vchan (https://github.com/mirage/ocaml-vchan) Pure OCaml implementation of the "vchan" shared-memory communication protocol.
@@ -615,7 +636,8 @@
Testing
- Alcotest (https://github.com/mirage/alcotest) A lightweight and colourful test framework.
- OUnit (http://ounit.forge.ocamlcore.org/) 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.
- OUnit (http://ounit.forge.ocamlcore.org/)  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 (https://github.com/c-cube/qcheck) — QCheck is a property testing library inspired from Haskell's QuickCheck
- iTeML (https://github.com/vincent-hugot/iTeML) (formerly known as qtest (http://batteries.vhugot.com/qtest/)) — supports inline pragma's to generate tests.
- Kaputt (http://kaputt.x9c.fr/) — comprehensive testing framework.
@@ -629,8 +651,8 @@
- ocaml-cuid (https://github.com/marcoonroad/ocaml-cuid) - Collision-resistant IDs for server scalability & database performance.
- Validate (https://github.com/Axot017/validate) - PPX deriver designed to streamline the process of validating records.
- Uuidm (https://erratique.ch/software/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.
- Uuidm (https://erratique.ch/software/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 (https://github.com/sqids/sqids-ocaml) - Official OCaml port of Sqids. Generate short unique IDs from numbers.
@@ -638,17 +660,18 @@
- Frameworks:
 - Opium (https://github.com/rgrinberg/opium) Sinatra like web toolkit for OCaml.
 - Ocsigen Eliom (http://ocsigen.org/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.
 - Ocsigen Eliom (http://ocsigen.org/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 (https://aantron.github.io/dream/) - Tidy Web framework for OCaml and ReasonML
 - webmachine (https://github.com/inhabitedtype/ocaml-webmachine)  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.
 - webmachine (https://github.com/inhabitedtype/ocaml-webmachine)  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 (https://github.com/janestreet/incr_dom) - A library for building dynamic webapps, using Js_of_ocaml
 - fmlib_browser (https://hbr.github.io/fmlib/odoc/fmlib_browser/doc_overview.html) - a library which helps to write web applications which run in the browser in a pure functional style.
 - ocaml-vdom (https://github.com/LexiFi/ocaml-vdom) - Elm architecture and (V)DOM for OCaml
- Tools:
 - COW (https://github.com/mirage/ocaml-cow) 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.
 - COW (https://github.com/mirage/ocaml-cow)  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 (http://projects.camlcity.org/projects/ocamlnet.html)
has many relevant web libraries — 
**Nethtml** (http://projects.camlcity.org/projects/dl/ocamlnet-4.0.4/doc/html-main/Nethtml.html)