[ANN] Release of ocaml-sf/learn-ocaml:0.13.0

Dear all,

We are very pleased to announce the immediate availability of the latest stable release of Learn-OCaml, version 0.13.0.

Many thanks to all users and developers that reported bugs, contributed features or patches :sparkles: and in particular, special thanks go to @yurug and @AltGr for their precious advice and help during the preparation of this release.

A (mostly) comprehensive list of the features, fixes, and enhancements offered by this release is available in the Release Notes.

Beyond this list of changes, note that:

  • We now switch to semantic versioning, so that this version is git-tagged v0.13.0 and not just 0.13.
  • The REST API did not change (between the previous stable version 0.12 and version 0.13.0).
  • The “exodir” format has been slightly extended (but the documentation online is not yet up-to-date for these changes), keeping a strong focus on backward-compatibility (see e.g. PR #397 for related remarks).
  • All the main binaries of Learn-OCaml (learn-ocaml-client, learn-ocaml, and the native learn-ocaml-server) are now statically built and available in the Release page, for Linux and macOS.
  • The whole codebase of Learn-OCaml has been ported to OCaml 4.12 (including the toplevel environment that is exposed to students).
  • We now relax the coupling between client/server, and commit to keeping backward-compatibility for the latest learn-ocaml-client w.r.t. the previous versions (so, learn-ocaml-client.0.13.0 can interact with servers learn-ocaml.{0.12, 0.13.0} smoothly − see PR #426 for context).
  • The learn-ocaml-client CLI API did not change, except that a command learn-ocaml-client server-version has been added, to distinguish between the server version and the (possibly more recent) learn-ocaml-client --version (see PR #429 for details).
  • Docker images are still available on Docker Hub, e.g., to easily spin a local server from a repository exercises, you can do:
    sudo docker run --name=server-test -v "$PWD/demo-repository:/repository:ro" \
      -p 8080:8080 ocamlsf/learn-ocaml:0.13.0
    More details on the Docker setup can be found in How to deploy a learn-ocaml instance.
  • (If you migrate from 0.12 to 0.13.0 in your deployments, beware that the mere bump of OCaml’s version may cause some of your graders to fail.)
  • A dedicated PR has also been opened in opam-repository.
  • As noted above, several architectural changes have been done about the learn-ocaml-client as this tool plays a key “pivot” role, for students that would like to use Tuareg+Merlin+learn-ocaml-mode and interact with a Learn-OCaml server backend directly from Emacs, and thus benefit from the advantages of using both Merlin and Learn-OCaml’s grading feature… and also get a significant speed-up regarding the grading time (because, no more transpilation to Js).

We hope to be able to release 0.14.0 soon, specifically to integrate the pending PR #372 that will solve a long-running issue with auto-Sync and students-code overwriting; and we also plan to extend learn-ocaml’s backend and REST API soon to further enhance the UX of learn-ocaml.el, at least to lift this limitation (for which we have a working proof-of-concept to be refined).

If need be, feel free to open issues in the Learn-OCaml bug tracker or the learn-ocaml.el bug tracker, or post in this thread to share thoughts or experience-feedback.

Kind regards,
Érik Martin-Dorel for the Learn-OCaml team :camel:


Hi, Louis Gesbert (OCamlPro) will give a talk at the Irill meeting in Paris on Thursday 7 October at 2pm. You will find it in room 15-16 101 (rotunda 15, 1st floor, corridor 15-16, room 101) on the Jussieu campus. We would love to see you there!

1 Like

Hi, will it be recorded?

It doesn’t look like it is being recorded, but I can ask @AltGr if he can share his slides.

Correction: it looks like it is recorded, and should be available on the Irill website later.


Just FYI, a bugfix release learn-ocaml 0.13.1 has just been tagged and:

The video is up:

The talk is in French with English slides.

1 Like