The road to OCaml 5.0

Florian Angeletti <[email protected]> Thu, 7 Oct 2021 11:49:10 +0200 (CEST)
Newsgroups gmane.comp.lang.caml.announce
Message-ID <[email protected]>
--=_2ca0a2ff-03ef-4479-9658-8ce339cdde84
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

With the convergence between the multicore and standard runtime across 
OCaml 4.10.0 to 4.13.0, the development of OCaml multicore has reached a point 
where further integration into OCaml's main branch requires fully committing to 
a switch to OCaml multicore. 

The OCaml team has decided that the time has come for such a commitment. 
The new major version, OCaml 5, will be a multicore version of OCaml. 
Moreover, OCaml 4.14 will be the last minor release of the 4.x series of OCaml. 


Multicore Minimum Viable Product (MVP) 
------------------------------------------------------ 

The first version of OCaml multicore, code-named OCaml 5.0, will be 
a Minimum Viable Product focused on: 

- x86-64 
- Linux, MacOS, Windows mingw-w64 
- Parallelism through Domains [1] 
- Concurrency through Effect Handlers [2] (without syntactic support and exposed as functions from the standard library) 

Our plan is to integrate the multicore branch into the main branch during the 
next 6 months. Hopefully, OCaml 5.0 will then be released between March and 
April 2022. 

Note that OCaml 5.0 focuses on minimal (solid) support for the multicore 
runtime system, and will not provide stable user-facing concurrency and 
parallelism libraries. There has been a lot of experimentation [3,4] in the last 
few years, and some work remains to offer long-term, user-facing concurrent and 
parallel programming abstractions. OCaml 5.0 will be a great time to start 
adding concurrency and parallelism to your OCaml programs, but the libraries 
will still be in flux. 


Long term support for OCaml 4.14 
---------------------------------------------- 

While OCaml 5 is stabilising, we plan to extend the support period for 
OCaml 4.14 by publishing minor bugfix releases whenever needed. In particular, 
OCaml 4.14 will be supported until all tier-1 architectures and operating systems 
are available in OCaml 5, and OCaml 5 sequential performance is close enough to 
that of OCaml 4. 


The sequential glaciation 
--------------------------------- 

To ensure that maintainers can concentrate on Multicore integration, and avoid 
any rebase work for the Multicore developers, the trunk branch will be 
feature-frozen starting from November 2021. All non-bugfix non-multicore 
contributions will be delayed to after the Multicore integration. 
We are calling this period the "sequential glaciation". 

We understand that this may be frustrating for our contributors, and apologize 
for the delay in getting your nice work reviewed and merged into the codebase. 
We hope that the sequential glaciation will be a good opportunity to help with 
the Multicore integration, review and testing, and/or focus on non-core-compiler 
efforts and the rest of the OCaml ecosystem. 

With this early feature-freeze, we also plan to release OCaml 4.14.0 in advance, 
between January-February 2022, reducing the concurrency between the OCaml 5.0 
and OCaml 4.14.0 releases. 


References 
--------------- 
[1] "Retrofitting Parallelism onto OCaml", ICFP 2020, https://arxiv.org/abs/2004.11663 
[2] "Retrofitting Concurrency onto OCaml", PLDI 2021, https://arxiv.org/abs/2104.00250 
[3] Domainslib -- Parallel Programming over Multicore OCaml, https://github.com/ocaml-multicore/domainslib 
[4] eio -- Effects-based Parallel IO for OCaml, https://github.com/ocaml-multicore/eio 


Happy hacking, 
Florian Angeletti, for the OCaml team. 

--=_2ca0a2ff-03ef-4479-9658-8ce339cdde84
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<html><body><div style=3D"font-family: arial, helvetica, sans-serif; font-s=
ize: 12pt; color: #000000"><div><div>With the convergence between the multi=
core and standard runtime across<br>OCaml 4.10.0 to 4.13.0, the development=
 of OCaml multicore has reached a point<br>where further integration into O=
Caml's main branch requires fully committing to<br>a switch to OCaml multic=
ore.<br><br>The OCaml team has decided that the time has come for such a co=
mmitment.<br>The new major version, OCaml 5, will be a multicore version of=
 OCaml.<br>Moreover, OCaml 4.14 will be the last minor release of the 4.x s=
eries of OCaml.<br></div><div><br></div><div><br>Multicore Minimum Viable P=
roduct (MVP)<br>------------------------------------------------------<br><=
br>The first version of OCaml multicore, code-named OCaml 5.0, will be<br>a=
 Minimum Viable Product focused on:<br><br>- x86-64<br>- Linux, MacOS, Wind=
ows mingw-w64<br>- Parallelism through Domains [1]<br>- Concurrency through=
 Effect Handlers [2] (without syntactic support and exposed as functions fr=
om the standard library)<br><br>Our plan is to integrate the multicore bran=
ch into the main branch during the<br>next 6 months. Hopefully, OCaml 5.0 w=
ill then be released between March and<br>April 2022.<br><br>Note that OCam=
l 5.0 focuses on minimal (solid) support for the multicore<br>runtime syste=
m, and will not provide stable user-facing concurrency and<br>parallelism l=
ibraries. There has been a lot of experimentation [3,4] in the last<br>few =
years, and some work remains to offer long-term, user-facing concurrent and=
<br>parallel programming abstractions. OCaml 5.0 will be a great time to st=
art<br>adding concurrency and parallelism to your OCaml programs, but the l=
ibraries<br>will still be in flux.<br><br><br>Long term support for OCaml 4=
.14<br>----------------------------------------------<br><br>While OCaml 5 =
is stabilising, we plan to extend the support period for<br>OCaml 4.14 by p=
ublishing minor bugfix releases whenever needed. In particular,<br>OCaml 4.=
14 will be supported until all tier-1 architectures and operating systems<b=
r>are available in OCaml 5, and OCaml 5 sequential performance is close eno=
ugh to<br>that of OCaml 4.</div><div><br><br>The sequential glaciation<br>-=
--------------------------------<br><br>To ensure that maintainers can conc=
entrate on Multicore integration, and avoid<br>any rebase work for the Mult=
icore developers, the trunk branch will be<br>feature-frozen starting from =
November 2021. All non-bugfix non-multicore<br>contributions will be delaye=
d to after the Multicore integration.<br>We are calling this period the "se=
quential glaciation".<br><br>We understand that this may be frustrating for=
 our contributors, and apologize<br>for the delay in getting your nice work=
 reviewed and merged into the codebase.<br>We hope that the sequential glac=
iation will be a good opportunity to help with<br>the Multicore integration=
, review and testing, and/or focus on non-core-compiler<br>efforts and the =
rest of the OCaml ecosystem.<br><br>With this early feature-freeze, we also=
 plan to release OCaml 4.14.0 in advance,<br>between January-February 2022,=
 reducing the concurrency between the OCaml 5.0<br>and OCaml 4.14.0 release=
s.<br></div><div><br></div><div><br>References<br>---------------<br>[1] "R=
etrofitting Parallelism onto OCaml", ICFP 2020, https://arxiv.org/abs/2004.=
11663<br>[2] "Retrofitting Concurrency onto OCaml", PLDI 2021, https://arxi=
v.org/abs/2104.00250<br>[3] Domainslib -- Parallel Programming over Multico=
re OCaml, https://github.com/ocaml-multicore/domainslib<br>[4] eio -- Effec=
ts-based Parallel IO for OCaml, https://github.com/ocaml-multicore/eio<br><=
/div><div><br></div><div><br>Happy hacking,<br>Florian Angeletti, for the O=
Caml team.<br></div></div></div></body></html>
--=_2ca0a2ff-03ef-4479-9658-8ce339cdde84--