Top 23 OCaml Ocaml Projects
These new tools and perspectives empower you to write better programs even when you write in traditional languages. In fact, many modern extensions/frameworks have functional flavours added. See for example ReasonML and typescript. Learning functional programming will give you the necessary building blocks to pick up these frameworks quickly and correctly.
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: A developer's best friend. Try free for 14-days. Scout APM uses tracing logic that ties bottlenecks to source code so you know the exact line of code causing performance issues and can get back to building a great product faster.
FUSE filesystem over Google DriveProject mention: I want to mount a Google Drive folder to my headless Ubuntu server. What's a good open source solution for it? | reddit.com/r/selfhosted | 2021-11-12
Another option would be https://github.com/astrada/google-drive-ocamlfuse I use both of them.
The core OCaml system: compilers, runtime system, base librariesProject mention: Fr, I'll do it | reddit.com/r/memes | 2021-11-02
MirageOS is a library operating system that constructs unikernelsProject mention: writing kernel in haskell or ocaml. | reddit.com/r/osdev | 2021-10-26
The main example of which is probably MirageOS
Binary Analysis PlatformProject 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.
Context sensitive completion for OCaml in Vim and EmacsProject 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.
Run Linux Software Faster and Safer than Linux with Unikernels.
A composable build system for OCaml.Project mention: Installing and using graphics post-4.08 | reddit.com/r/ocaml | 2021-10-28
The best path here is to take five minutes and set up a dune build. The page at https://dune.build even gives you a small example to get started.
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)
:candy: a functional language for building type-safe, scalable, and maintainable applicationsProject 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
A statically-typed, functional typesetting system
Tidy, feature-complete Web frameworkProject 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).
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.
Multicore OCamlProject mention: Will rust ever have a futures executor in std? | reddit.com/r/rust | 2021-11-24
For Algebraic Effects and Multicore OCaml specifically, I have this intro saved and they've been publishing regular updates here's October's. They have a paper linked from their repo's README but I don't remember the contents offhand.
An OCaml library for HTTP clients and servers using Lwt or AsyncProject mention: Cohttp 4.0.0 | reddit.com/r/ocaml | 2021-03-24
OCaml promises and concurrent I/OProject mention: Dream – Tidy Web Framework for OCaml and ReasonML | news.ycombinator.com | 2021-04-09
Dream doesn't have much of a system call dependency footprint itself. It's basically just a convention for plugging request -> response functions into a web server. Some of its native dependencies will have to be replaced by Node equivalents. Soon after that, it would be portable to Node.
There is already work underway to port Dream to Mirage, to run in unikernels: https://github.com/aantron/dream/pull/22
Lwt, Dream's promise library, is itself getting ported to run on top of libuv: https://github.com/ocsigen/lwt/issues/813
libuv is, of course, the I/O library that powers Node, so it might be practical to run Dream as a native node module very soon after doing this.
(As an aside, I'm supposed to work on that libuv project, but instead I've been working on Dream :P)
A high performance, memory efficient, and scalable web server written in OCaml
Parser combinators built for speed and memory efficiencyProject mention: Is Ocaml From the beginning a good book? Where to learn about multicore Ocaml? Is this a good project skeleton? | reddit.com/r/ocaml | 2021-04-21
Do you specifically need an LR(1) parser? If you just need to do some simple parsing, a parser combinator library like Angstrom works fine and is completely defined in OCaml code: https://github.com/inhabitedtype/angstrom
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.
A modular functional web frameworkProject 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:
Of course, if you're interested in OCaml/Reason and don't know about Revery you're missing out.
Functional HTML scraping and rewriting with CSS in OCaml
Vult is a transcompiler well suited to write high-performance DSP codeProject mention: Emulating actual modules | reddit.com/r/vcvrack | 2021-05-13
Compositional JSON encode/decode library for BuckleScriptProject mention: ReScript JSON Typed Strongly | dev.to | 2021-11-02
As I told already, you might use other tools to create the codecs layer. Take bs-json if it feels better. Or even force Js.Json.t to DTO conversion with Obj.magic if you know what you do.
OCaml Ocaml related posts
I want to mount a Google Drive folder to my headless Ubuntu server. What's a good open source solution for it?
1 project | reddit.com/r/selfhosted | 12 Nov 2021
Rubber Dometyl - a concave hall effect rubber dome keyboard
2 projects | reddit.com/r/ErgoMechKeyboards | 11 Nov 2021
A dactyl-like choc build with splay
3 projects | reddit.com/r/ErgoMechKeyboards | 7 Nov 2021
Fr, I'll do it
1 project | reddit.com/r/memes | 2 Nov 2021
Installing and using graphics post-4.08
1 project | reddit.com/r/ocaml | 28 Oct 2021
writing kernel in haskell or ocaml.
1 project | reddit.com/r/osdev | 26 Oct 2021
Can't install graphics library on NixOs
1 project | reddit.com/r/ocaml | 23 Oct 2021
What are some of the best open-source Ocaml projects in OCaml? This list will help you:
Are you hiring? Post a new remote job listing for free.