update lists

This commit is contained in:
2025-07-18 22:22:32 +02:00
parent 55bed3b4a1
commit 5916c5c074
3078 changed files with 331679 additions and 357255 deletions

View File

@@ -1,4 +1,4 @@
Awesome OCaml !Build Status (https://travis-ci.org/ocaml-community/awesome-ocaml.svg?branch=master) (https://travis-ci.org/ocaml-community/awesome-ocaml)
Awesome OCaml
=============
@@ -115,33 +115,31 @@
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.
- 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).
- 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.
- 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.
@@ -156,6 +154,9 @@
- BAP (https://github.com/BinaryAnalysisPlatform/bap) - BAP is a reverse engineering and program analysis platform that targets binary programs.
- BinCat (https://github.com/airbus-seclab/bincat) - BinCat is a binary code static analysis toolkit.
- cwe_checker (https://github.com/fkie-cad/cwe_checker) - cwe_checker finds vulnerable patterns in binary executables.
- Owi (https://github.com/OCamlPro/owi) - 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 (https://github.com/formalsec/smtml) - 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.
Compilers and Compiler Tools
@@ -167,6 +168,7 @@
 - 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.
 - Mazeppa (https://github.com/mazeppa-dev/mazeppa) - A modern supercompiler for call-by-value functional languages.
 - 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/)
@@ -193,8 +195,8 @@
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.
@@ -250,8 +252,8 @@
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 (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.
@@ -262,6 +264,7 @@
- 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.
- puml2xml (https://github.com/khalidbelk/puml2xml) A PlantUML (.puml) to XML (.xmi) converter.
- Foreign Function Interface:
 - ctypes (https://github.com/ocamllabs/ocaml-ctypes) Library for binding to C libraries using pure OCaml.
@@ -299,10 +302,10 @@
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.
@@ -365,8 +368,8 @@
- Inlined records in constructors (https://www.lexifi.com/ocaml/inlined-records-constructors/)
- Algebraic Data Types (https://espertech.wordpress.com/2014/07/30/algebraic-data-types/)
- XEN OCaml Best Practices for Developers (http://wiki.xen.org/wiki/OCaml_Best_Practices_for_Developers)
- OCaml Style Guide (by Jane Street) (https://opensource.janestreet.com/standards/) - See also: 1  (https://www.seas.upenn.edu/~cis500/cis500-f06/resources/programming_style.html), 2  
(http://www.cs.cornell.edu/Courses/cs312/2001sp/style.html), 3  (https://www.seas.upenn.edu/~cis120/20fa/ocaml_style/).
- OCaml Style Guide (by Jane Street) (https://opensource.janestreet.com/standards/) - See also: 1  (https://www.seas.upenn.edu/~cis500/cis500-f06/resources/programming_style.html), 2  (http://www.cs.cornell.edu/Courses/cs312/2001sp/style.html), 3
(https://www.seas.upenn.edu/~cis120/20fa/ocaml_style/).
- A safe but strange way of modifying OCaml compiler (https://camlspotter.blogspot.com/2012/09/a-safe-but-strange-way-of-modifying.html)
- Fiddling with the OCaml Type System (https://technotroph.wordpress.com/2013/10/25/fiddling-with-the-ocaml-type-system/)
@@ -383,6 +386,7 @@
- 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.
- Tezos (https://gitlab.com/tezos/tezos) - a self-upgradable Proof of Stake blockchain
- 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.
@@ -478,8 +482,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.
@@ -537,7 +541,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.
@@ -566,8 +570,7 @@
- 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.
- 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).
@@ -626,11 +629,11 @@
- 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
@@ -671,3 +674,5 @@
⟡  
_Inspired by awesome projects line. Discover more awesomeness (https://github.com/bayandin/awesome-awesomeness) :sparkles:._
ocaml Github: https://github.com/ocaml-community/awesome-ocaml