domainslib
ocaml-interop
Our great sponsors
domainslib | ocaml-interop | |
---|---|---|
4 | 2 | |
161 | 0 | |
3.1% | - | |
5.8 | 0.0 | |
about 2 months ago | over 1 year ago | |
OCaml | Rust | |
ISC License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
domainslib
-
OCaml 5.0 Alpha Release
For nested parallel computations (think Scientific Programming, where one would use OpenMP, Rust Rayon, etc), we have domainslib [1]. Eio, a direct-style, effect-based IO library is pretty competitive against Rust Tokio [2]. The performance will only get better as we get closer to the 5.0 release.
[1] https://github.com/ocaml-multicore/domainslib
[2] See the http server performance graphs at https://tarides.com/blog/2022-03-01-segfault-systems-joins-t...
-
PR to Merge Multicore OCaml
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.
-
The road to OCaml 5.0
[3] Domainslib -- Parallel Programming over Multicore OCaml, https://github.com/ocaml-multicore/domainslib
ocaml-interop
-
OCaml 5.0 Alpha Release
OCaml is possibly my favorite language, along with Rust, and what I hope from the Santa is projects like https://github.com/tezedge/ocaml-interop to become mature.
I think all these "properly typed" languages should aspire to have great interoperability: after all, they have types to help. But I realize there can be big technical difficulties in making it safe, in particular with garbage collection..
- 2021 at OCamlPro
What are some alternatives?
ocaml-multicore - Multicore OCaml
ocaml-rs - OCaml extensions in Rust
dune - A composable build system for OCaml.
drom - drom is a wrapper over opam/dune in an attempt to provide a cargo-like user experience. It can be used to create full OCaml projects with sphinx and odoc documentation. It has specific knowledge of Github and will generate files for Github Actions CI and Github pages.
ocaml - The core OCaml system: compilers, runtime system, base libraries
eioio - Effects-based direct-style IO for multicore OCaml
esy - package.json workflow for native development with Reason/OCaml
rescript-compiler - The compiler for ReScript.
melange - A mixture of tooling combined to produce JavaScript from OCaml & Reason
RFCs - Design discussions about the OCaml language