OCaml Ocaml

Open-source OCaml projects categorized as Ocaml | Edit details
Related topics: #Opam #Web #HTTP #Compiler #reasonml

Top 23 OCaml Ocaml Projects

  • GitHub repo reason

    Simple, fast & type safe code that leverages the JavaScript & OCaml ecosystems

    Project mention: Failing to Learn Zig via Advent of Code | news.ycombinator.com | 2022-01-17

    OCaml is pretty close already to what you're describing. The OCaml ecosystem fully embraces imperative programming. And if the syntax of OCaml is problematic, then perhaps ReasonML (https://reasonml.github.io/) is what you're looking for: a curly-braces syntax for OCaml.

  • GitHub repo pyre-check

    Performant type-checking for python.

    Project mention: Statically typed Python | reddit.com/r/Python | 2021-11-30

    Facebook/Instagram uses Pyre which is a typechecker for Python.

  • Scout APM

    Less time debugging, more time building. Scout APM allows you to find and fix performance issues with no hassle. Now with error monitoring and external services monitoring, Scout is a developer's best friend when it comes to application development.

  • GitHub repo google-drive-ocamlfuse

    FUSE filesystem over Google Drive

    Project mention: Cloud Backup apps | reddit.com/r/elementaryos | 2022-01-17

    Agree with previous comment, dejadup is a good option for local backups, but there isnt a really good backup cloud tool in linux enviroment: https://github.com/vitalif/grive2, https://github.com/astrada/google-drive-ocamlfuse, etc.

  • GitHub repo ocaml

    The core OCaml system: compilers, runtime system, base libraries

    Project mention: Are Scala and Haskell the only mainstream functional programming languages with support for higher kinded types? | reddit.com/r/functionalprogramming | 2022-01-18

    Yes, and more specifically modular explicits, which are a sort of sub-feature of modular implicits.

  • GitHub repo mirage

    MirageOS is a library operating system that constructs unikernels

    Project mention: The one and only.. | reddit.com/r/ProgrammerHumor | 2022-01-16

    No mention of https://mirage.io/ yet

  • GitHub repo bap

    Binary Analysis Platform

    Project mention: Starting ocaml | reddit.com/r/ocaml | 2021-06-20

    I find this pretty good https://www.cs.cornell.edu/courses/cs3110/2019sp/textbook/intro/ocaml.html. Fun projects include compilers (pattern matching and static types are why Ocaml is usually selected), binary analysis stuff https://github.com/BinaryAnalysisPlatform/bap, stuff that requires async so you can try out nomadic async stuff, or really anything you desire.

  • GitHub repo merlin

    Context sensitive completion for OCaml in Vim and Emacs

    Project mention: Hoogle for Rust? | reddit.com/r/rust | 2021-08-03

    Instead of searching functions based on their type structure (like Hoogle), you could search for functions that "consume"/"produce" values of given types (like OCaml's Merlin). I think Rust already computes variance of type constructors, so such a tool just would have to obtain this information.

  • OPS

    OPS - Build and Run Open Source Unikernels. Quickly and easily build and deploy open source unikernels in tens of seconds. Deploy in any language to any cloud.

  • GitHub repo dune

    A composable build system for OCaml.

    Project mention: PR to Merge Multicore OCaml | news.ycombinator.com | 2021-12-21

    I started using OCaml in 2017, and had a rough start. But since then Dune (https://dune.build/) and the now-excellent LSP implementation have resolved the biggest issues I had. I haven't had such a pleasant development environment since Turbo Pascal! (To be fair, IntelliJ was also pretty good other than the shortcomings of Java.)

  • GitHub repo opam

    opam is a source-based package manager. It supports multiple simultaneous compiler installations, flexible package constraints, and a Git-friendly development workflow.

    Project mention: We feel it is too "me-too", and not Ada-specific enough [...] It doesn't, to us, feel like a truly Ada-native solution. Tangentially, the use of the word "crates" for the unit of management does little to evoke the kind of principled self-confidence Ada normally exudes. | reddit.com/r/programmingcirclejerk | 2021-11-07

    nodc. (not opam, don't care)

  • GitHub repo caramel

    :candy: a functional language for building type-safe, scalable, and maintainable applications

    Project mention: Is there a language like Erlang with a stricter type system? | reddit.com/r/erlang | 2021-09-02

    Take a look at Gleam and Caramel

  • GitHub repo SATySFi

    A statically-typed, functional typesetting system

    Project mention: Finl Is Not LaTeX | news.ycombinator.com | 2021-05-27

    There is also SATySFi[1] (another typesetting system in Ocaml), it is active but mainly in japanese.

    [1] https://github.com/gfngfn/SATySFi

  • GitHub repo dream

    Tidy, feature-complete Web framework

    Project mention: Dream – Tidy Web Framework for OCaml and ReasonML | news.ycombinator.com | 2021-04-09

    Yes. OCaml + all of the 3 OCaml-to-JS compilers support OCaml syntax.

    Dream itself demonstrates:

    - Server and client both written in Reason, using ocamlc+Melange https://github.com/aantron/dream/tree/master/example/r-fulls...

    That example could also have been written in OCaml syntax, because ocamlc (native) and Melange (JS) both support OCaml. However, Reason is nicer if you want to use React with JSX.

    - Server and client both written in OCaml, using ocamlc+Js_of_ocaml https://github.com/aantron/dream/tree/master/example/w-fulls...

    The remaining example uses Ocaml on the server and ReScript on the client, using the ReScript compiler. However, you could use OCaml on the client with the ReScript compiler. Just as with Melange, you would lose access to nice JSX syntax https://github.com/aantron/dream/tree/master/example/r-fulls...

    It's definitely a lot and not user-friendly to have to decide between all these options, but the community is experimenting greatly right now... so it's good and bad, and that's how it is :/

    As for Node.js, using ReScript syntax requires you to use Node.js on the native side, but that is the only coupling. If you write your native side in OCaml or Reason, you can compile it to native code with ocamlc (technically, ocamlopt is the internal command; nobody uses either one directly, but the build system calls them).

  • GitHub repo js_of_ocaml

    Compiler from OCaml to Javascript.

    Project mention: Is there a statically typed functional programming language that doesn't take purity so seriously? | reddit.com/r/functionalprogramming | 2021-06-01

    TL;DR: Reason is, and always has been, independent of ReScript (formerly BuckleScript) and is still actively maintained. If you want to use Reason or OCaml to make native code you can. If you want to compile JS from OCaml or Reason you also still can, but you'll want to use either js_of_ocaml or a BuckleScript fork named Melange that was made in response to the BuckleScript/ReScript people's shenanigans. And if you only care about JS-like syntax and JS output, you can use ReScript.

  • GitHub repo ocaml-multicore

    Multicore OCaml

    Project mention: PR to Merge Multicore OCaml | news.ycombinator.com | 2021-12-21

    1. Domains are the unit of parallelism. A domain is essentially an OS thread with a bunch of extra runtime book-keeping data. You can use Domain.spawn (https://github.com/ocaml-multicore/ocaml-multicore/blob/5.00...) to spawn off a new domain which will run the supplied function and terminate when it finishes. This is heavyweight though, domains are expected to be long-running.

    2. Domainslib is the library developed alongside multicore to aid users in exploiting parallelism. It supports nested parallelism and is pretty highly optimised (https://github.com/ocaml-multicore/domainslib/pull/29 for some graphs/numbers). The domainslib repo has some good examples: https://github.com/ocaml-multicore/domainslib/tree/master/te...

    3. We've not tested against other forms of parallelism. There isn't anything stopping you exploiting SIMD in addition to parallelism from domains.

    4. No, we've not compared performance by OS.

    5. No plans for the multicore team to look at accelerator integration at the moment.

  • GitHub repo ocaml-cohttp

    An OCaml library for HTTP clients and servers using Lwt or Async

    Project mention: Cohttp 4.0.0 | reddit.com/r/ocaml | 2021-03-24
  • GitHub repo lwt

    OCaml promises and concurrent I/O

    Project mention: From TypeScript to ReScript | news.ycombinator.com | 2022-01-12

    I have to admit I don't know much about ReScript and only have very basic exposure to OCAML, here is how you do await in it:


    The `let* in` is a generic syntax for monads, it doesn't need a special one just for promise. This was in fact a debate back when async/await was in consideration for ECMAScript, but special syntax is hip so now we have `async/await` for Promise, `.?` for optionals and `flatMap` for arrays, basically the same thing.

  • GitHub repo httpaf

    A high performance, memory efficient, and scalable web server written in OCaml

    Project mention: Parser Combinators in Haskell | news.ycombinator.com | 2021-12-22
  • GitHub repo angstrom

    Parser combinators built for speed and memory efficiency

    Project mention: Parser Combinators in Haskell | news.ycombinator.com | 2021-12-22
  • GitHub repo ocamlformat

    Auto-formatter for OCaml code

    Project mention: Is there any way to format mll/mly files? | reddit.com/r/ocaml | 2021-12-12

    Ocamlformat does not - issue has been open since 2019

  • GitHub repo ocaml-containers

    A lightweight, modular standard library extension, string library, and interfaces to various libraries (unix, threads, etc.) BSD license.

    Project mention: I'm typecasting a lot, help | reddit.com/r/ocaml | 2021-09-10

    Instead of either, you might be interested in Containers. It's more like an extension of the OCaml stdlib where you can cherry-pick what you want to use instead of having to go all-or-nothing. Adds a lot of useful things but not in the opinionated "let's make OCaml a different language" way that Base does.

  • GitHub repo sihl

    A modular functional web framework

    Project mention: Dream – Tidy Web Framework for OCaml and ReasonML | news.ycombinator.com | 2021-04-09

    Really exciting to watch the developments in OCaml/Reason web frameworks/libraries. I love the language and wish I could use it instead of Ruby for my personal projects at least. Others that have caught my interest are:

    Sihl: https://github.com/oxidizing/sihl

    ReWeb: https://github.com/yawaramin/re-web/

    Of course, if you're interested in OCaml/Reason and don't know about Revery you're missing out.

  • GitHub repo vult

    Vult is a transcompiler well suited to write high-performance DSP code

    Project mention: Emulating actual modules | reddit.com/r/vcvrack | 2021-05-13
  • GitHub repo lambdasoup

    Functional HTML scraping and rewriting with CSS in OCaml

    Project mention: The State of Web Scraping in 2021 | news.ycombinator.com | 2021-10-11

    OCaml’s Lambda Soup (https://aantron.github.io/lambdasoup/) is a amazing library/, especially for those that prefer functional programming

NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020). The latest post mention was on 2022-01-18.

OCaml Ocaml related posts


What are some of the best open-source Ocaml projects in OCaml? This list will help you:

Project Stars
1 reason 9,558
2 pyre-check 5,740
3 google-drive-ocamlfuse 4,478
4 ocaml 3,599
5 mirage 1,717
6 bap 1,554
7 merlin 1,370
8 dune 1,179
9 opam 966
10 caramel 916
11 SATySFi 899
12 dream 756
13 js_of_ocaml 723
14 ocaml-multicore 716
15 ocaml-cohttp 566
16 lwt 550
17 httpaf 493
18 angstrom 488
19 ocamlformat 441
20 ocaml-containers 387
21 sihl 314
22 vult 311
23 lambdasoup 311
Find remote jobs at our new job board 99remotejobs.com. There are 29 new remote jobs listed recently.
Are you hiring? Post a new remote job listing for free.
Static code analysis for 29 languages.
Your projects are multi-language. So is SonarQube analysis. Find Bugs, Vulnerabilities, Security Hotspots, and Code Smells so you can release quality code every time. Get started analyzing your projects today for free.