Top 23 OCaml Ocaml Projects
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.
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.
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.
FUSE filesystem over Google DriveProject 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.
The core OCaml system: compilers, runtime system, base librariesProject 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.
MirageOS is a library operating system that constructs unikernelsProject mention: The one and only.. | reddit.com/r/ProgrammerHumor | 2022-01-16
No mention of https://mirage.io/ yet
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.
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.
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.)
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: 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.
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: 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.
A high performance, memory efficient, and scalable web server written in OCaml
Parser combinators built for speed and memory efficiency
Auto-formatter for OCaml codeProject 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
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.
Vult is a transcompiler well suited to write high-performance DSP codeProject mention: Emulating actual modules | reddit.com/r/vcvrack | 2021-05-13
Functional HTML scraping and rewriting with CSS in OCaml
OCaml Ocaml related posts
Cloud Backup apps
2 projects | reddit.com/r/elementaryos | 17 Jan 2022
Using rsync bash script to backup to Google Drive, permissions error
1 project | reddit.com/r/linux4noobs | 17 Jan 2022
From TypeScript to ReScript
12 projects | news.ycombinator.com | 12 Jan 2022
Multicore OCaml has been merged
1 project | news.ycombinator.com | 11 Jan 2022
Multicore OCaml merged to trunk
1 project | reddit.com/r/contextfree | 11 Jan 2022
OCaml Multicore merged upstream
1 project | reddit.com/r/programming | 10 Jan 2022
OCaml Multicore merged upstream
1 project | reddit.com/r/functionalprogramming | 10 Jan 2022
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.