OCaml Weekly News

Previous Week Up Next Week


Here is the latest OCaml Weekly News, for the week of July 09 to 16, 2019.

Table of Contents

Interesting OCaml Articles

Deep in this thread, Ryan Slade said

opam 2.0.5 release

R. Boujbel announced

We are pleased to announce the minor release of opam 2.0.5.

This new version contains mainly build updates & lint fixes. You can find more information in this blog post.

Replying to questions regarding Windows support, David Allsopp said

There is already a very good fork of opam for Windows here. My work has been on changes to upstream opam to improve the native experience. The 2.0 branch of opam builds on Windows, but the resulting binaries are not terribly useful (you can't get past opam init). The master branch of opam now contains sufficient support to pass the testsuite (I haven't yet ported the regression testing framework, although I don't see why that fundamentally shouldn't be passing too). At present I'm making a final push to complete the shell integration parts of opam init and opam env, at which point we can upgrade the ocaml-base-compiler packages in opam-repository with Windows build instructions.

After that, there's a quartet of features which benefit opam in general, but are specifically useful for Windows:

  • a replacement of base packages with base constraints, which is in progress in #3894. This actually provides a much more elegant solution to system compiler upgrades; for Windows, it's original was that it permits upgrading and pinning FlexDLL, which is a C dependency of the Windows ports of OCaml.
  • the introduction of a new predicate to limit automatic selection of packages by the solver, which will mean, amongst other things, that opam install ocaml will never select a variant or trunk compiler (not started yet, although the semantics of it are more complicated than the implementation). For Windows, it will mean that the switch will not randomly try to change the C compiler the switch is based on (i.e. switch Windows port).
  • build environments, which generalise the present "system" build environment. For Unix (well, and Windows 10), this would include having a Docker container associated with a switch and, for Windows, would also permit using separate Cygwin/MSYS and eventually WSL installations for package building. In general, it would also permit switches to have different depexts installed, since you'd no longer have to be tied to what's installed on your actual system (that's not started yet, either)
  • package parameters. There have been various proposals on this before (including the one referenced above, which is actually superseded by the new predicate). I have a (new) prototype implementation which allows specifying things like flambda (and so, for Windows, some of the port selection information) as part of opam install, opam reinstall or opam switch create. There's a bit of tightrope to walk with this one, as changes here need to remain compatible with an opam 2.0 mainline repository.

It's not clear exactly what's going to land in opam 2.1, which is trying to head towards beta soon and 2.2 which should be relatively hot on its tail later in the year. I would add that reimplementing tools in OCaml, while a highly worthy endeavour, merely transforms the nature of the shell problem!

Perry E. Metzger announced

MacPorts has been updated to the new version of opam as of a few moments ago; it may take a couple of hours for mirrors to synchronize.

Marek Kubica then said

Same with homebrew, it was merged 20h ago and binaries should be built sometime.

Fourth edition of the OCaml MOOC

Yann Régis-Gianas announced

Dear OCaml hackers and enthusiasts,

the fourth edition of the OCaml MOOC will start in September. Please, take a minute to spread the word around you!

Three possible actions:

  1. Convince everyone you know to register at https://tinyurl.com/ocamooc4
  2. Print, post and share our flyer https://bit.ly/2YrSVLF
  3. Post the announcement message which is pasted at the end of this email.

By the way, we would like to thank the sponsors of the OCaml Software Foundation for their support. Without it, the OCaml MOOC would not exist.

Thank you all for your help!

Roberto Di Cosmo, Yann Régis-Gianas and Ralf Treinen.

Learn functional programming with the OCaml programming language

Registrations are open!

Functional programming is attracting interest from a broad range of developers because it allows to write expressive, concise and elegant programs.

The course "Introduction to Functional programming using the OCaml language" introduces gradually the central notions of functional programming, via a set of video courses that are complemented by a rich set of interesting exercises that you can perform fully in your browser… Yes, this means you can start learning functional programming without any hassle: nothing to install, nothing to tune up! The programming environment is just one click away!

During the course, you will discover powerful mechanisms that allow to build and manipulate complex data structures in a clean and efficient way. And you will see how functions play a central role, as first-class values that can be freely used in any place where an expression can appear.

Registrations are already open at


The course will start on September 22th 2019, and will run for six weeks.

Your expected effort is between 2 and 6 hours per week, depending on your background, including the time spent watching the short video sequences of the course, that total approximately an hour per week.

This may seem a significant effort, but at the end of the course you will have actually learned a lot: the final programming project will confirm that you acquired a good mastery of functional programming and the ability to develop medium sized programs with ease.

Thousands of learners attended the first two runs of this course in 2015, 2016 and 2018, and the many that completed it were extremely satisfied.

To introduce you to functional programming, we have chosen to use the OCaml programming language. OCaml is a rich, elegant, efficient programming language that reconciles the conciseness and flexibility of untyped programming languages (like Python, for example) with the safety of strongly typed programming languages (like Java, for example), and that has a vibrant user community.

Docker, Facebook, Microsoft, JaneStreet, Bloomberg are some big names in industry that adopted OCaml to develop cutting edge applications. The research community uses OCaml for writing tools like the proof assistant Coq, the Coccinelle program transformer, the Frama-C code analyser, or the Astree static analyser. Several start ups use OCaml to obtain tenfold gains in productivity and stability of their code base. Recently, Tezos, one of the most innovative blockchains, has developed its entire software stack using OCaml to get high insurance about the execution of smart contracts.

Once you have started mastering functional programming using OCaml, we are sure that other programming languages will never look the same to you again.

This course will be held in English, but subtitles are already available in English, in Portuguese and in French.


To take full advantage of this course you should have already some basic knowledge of computer programming, in particular you should already know how to write simple computer programs in some programming language. For instance, you should know concepts like variables (or identifiers), functions (or procedures, methods), conditionals, and loops.

Dune 2.0.0 coming soon!

Jérémie Dimino announced

As we are preparing the Dune 2.0.0 release, we wanted to share a few words about it. Most of it is straightforward. One notable change is that Dune 2 will require a recent version of OCaml to build itself, however it will still be able to build projects using older compilers and will still be installable in older opam switches. We will also provide one additional year of support for Dune 1.


OCaml Users and Developers Workshop 2019: Call for participation

David Allsopp announced

It is my pleasure to invite participation in the OCaml Users and Developers Workshop 2019, which is again co-located with ICFP and will be held on Friday 23rd August, 2019 in Berlin, Germany.


Early bird registration deadline: July 18th, 2019

The OCaml Users and Developers Workshop brings together the OCaml community, including users of OCaml in industry, academia, hobbyists and the free software community. Previous editions have been co-located with ICFP since 2012 in Copenhagen, Boston, Gothenburg, Nara, Oxford and last year in St Louis, following OCaml Meetings in Paris in 2010 and 2011.


Registration for the workshop day is required, but not for the entire conference. There are several talks with an OCaml flavour in the ML Workshop, which is the previous day (August 22nd). Note that although the precise talk schedule is not yet finalised (it should be by the end of this week), once registered for the day, it is possible to move between workshops.


We have accepted 10 talks (full details of which are both on the SIGPLAN website and also shortly on ocaml.org) and there is an additional talk on recent developments and plans for the compiler from Xavier Leroy. The programme covers recent developments and plans in tooling, several interesting experience reports and other applications of OCaml.

Program Committee

David Allsopp, University of Cambridge, UK
Raja Boujbel, OCamlPro, France
Timothy Bourke, INRIA, France
Simon Cruanes, Aesthetic Integration, USA
Emilio Jésus Gallego Arias, MINES ParisTech, France
Thomas Gazagnaire, Tarides, France
Ivan Gotovchits, CMU, USA
Hannes Mehnert, robur.io, Germany
Igor Pikovets, Ahrefs, Singapore
Thomas Refis, Jane Street Europe, UK
KC Sivaramakrishan, IIT Madras, India

Questions and contact

Please send any questions to the chair: David Allsopp <David.Allsopp@cl.cam.ac.uk>

Other OCaml News


If you happen to miss a CWN, you can send me a message and I'll mail it to you, or go take a look at the archive or the RSS feed of the archives.

If you also wish to receive it every week by mail, you may subscribe online.