Our great sponsors
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
Along with the graphs from the PR in the sibling comment, there's also the extensive benchmarking from the ICFP2020 paper: https://arxiv.org/pdf/2004.11663.pdf
Work on this is on-going via the sandmark benchmarking suite: https://github.com/ocaml-bench/sandmark
In short the expectation should be that single-threaded code performs roughly the same (single digit percentage changes) as on the sequential runtime.
Parallel code on multicore can see close to linear speedups on 64 cores, though it depends significantly on your workload. If you're interested in parallelising existing OCaml code, I gave an example-driven OCaml workshop talk in 2020: https://www.youtube.com/watch?v=Z7YZR1q8wzI
work has already begin on a direct-style IO library that internally uses effects. See:
- https://github.com/ocaml-multicore/eio#readme for more information on the Eio library
Good question!
https://github.com/ocaml-multicore/effects-examples has links to tutorials and examples for how effects can be used.
There's also some slides from KC's talk on effect handlers https://kcsrk.info/slides/handlers_edinburgh.pdf and materials from the CUFP 17 tutorial: https://github.com/ocamllabs/ocaml-effects-tutorial
https://gopiandcode.uk/logs/log-bye-bye-monads-algebraic-eff... this is also a great introduction
Good question!
https://github.com/ocaml-multicore/effects-examples has links to tutorials and examples for how effects can be used.
There's also some slides from KC's talk on effect handlers https://kcsrk.info/slides/handlers_edinburgh.pdf and materials from the CUFP 17 tutorial: https://github.com/ocamllabs/ocaml-effects-tutorial
https://gopiandcode.uk/logs/log-bye-bye-monads-algebraic-eff... this is also a great introduction
If you're interested to see a comparison of parallel programming in a number of functional languages check this repo out [0]. It includes parallel multicore OCaml, MLton (but not Poly/ML, which has been around and parallel longer), Haskell, Futhark, F#, Scala, and Rust.
Credit to Sam Westrick for turning me on to this [1].
[0] https://github.com/athas/raytracers
[1] https://twitter.com/shwestrick/status/1480587660691480579