I have a couple of questions regarding Jane Street’s Core, Async, and related libraries, specifically version 0.17. I noticed that these libraries are constrained to work with OCaml version 5.1.0 and above.
Are these libraries unsafe or unstable to use with OCaml 4.14, or are there specific features and improvements in OCaml 5.1.0 that these libraries rely on?
Has Jane Street internally moved completely to OCaml 5? If so, how has the transition been, and what benefits have been observed?
Any insights from the Jane Street developers or others with experience in this area would be greatly appreciated.
Hi! The restriction to OCaml 5.1+ on the v0.17 release mostly reflects our internal testing being limited to OCaml 5.1. I believe our libraries should be usable on OCaml 4.14 after some code tweaks due to standard library changes.
We are in the process of moving to OCaml 5 internally, and are migrating our systems to use the OCaml 5 runtime. However, we have not started using domains or effect handlers yet. We are currently working on extensions to the OCaml language to provide guarantees like data race freedom for multithreaded programs: see our blog post. We are also working on designs for a safe concurrency and parallelism library using those extensions, and we’ll open-source it once implemented