• en

OCaml Planet

The OCaml Planet aggregates various blogs from the OCaml community. If you would like to be added, read the Planet syndication HOWTO.

1155 blog posts are available. You can read the 30 more recent ones below or view older ones.

Learn Eliom - Graffiti tutorial updated — Ocsigen project (The Ocsigen Team), Jun 25, 2019

Graffiti tutorial explains step by step how to write a multi-user client-server drawing application with Eliom.

It is the best starting point for beginners!

An updated version of this tutorial is now online, thanks to corentinjuvigny and chrismamo1.

Learn Eliom - Graffiti tutorial updated — Ocsigen blog (The Ocsigen Team), Jun 25, 2019

Graffiti tutorial explains step by step how to write a multi-user client-server drawing application with Eliom.

It is the best starting point for beginners!

An updated version of this tutorial is now online, thanks to corentinjuvigny and chrismamo1.

Frama-C 19.0 (Potassium) is out. Download ithere. — Frama-C, Jun 21, 2019

Moved to GitHub — OCamlCore Forge News (Jacques Garrigue), Jun 01, 2019

This Project has moved to GitHub. The new project page is: https://github.com/garrigue/labltk

LablGTK moved to GitHub — OCamlCore Forge News (Jacques Garrigue), Jun 01, 2019

New address is https://github.com/garrigue/lablgtk

Coq 8.9.1 is out — Coq, May 20, 2019

The 8.9.1 release of Coq is available.

Main changes:

  • some quality-of-life bug fixes,
  • many improvements to the documentation,
  • a critical bug fix related to primitive projections and native_compute,
  • several additional Coq libraries shipped with the Windows installer.

Feedback and bug reports are extremely welcome.

Coq 8.10+beta1 is out — Coq, May 15, 2019

The first beta release of Coq 8.10 is available for testing.

Coq version 8.10 contains two major new features: support for a native machine integer type and a new sort SProp, a definitionally proof irrelevant universe. It is also the result of refinements and stabilization of previous features, deprecations or removals of deprecated features, cleanups of the internals of the system and API, and many documentation improvements. This release includes many user-visible changes, including deprecat…


Thoughts from AAAI 2019 — Jane Street, May 13, 2019

At Jane Street, for the last several years, we have been increasingly interested in machine learning and its many use cases. This is why it was exciting when earlier this year myself and a few of my colleagues had the opportunity to attend the AAAI 2019 conference. We’d like to take this space to share with you some of the interesting projects and themes we saw at the conference.

On the road to Irmin v2 — Tarides (Thomas Gazagnaire), May 13, 2019

Over the past few months, we have been heavily engaged in release engineering the Irmin 2.0 release, which covers multiple years of work on all of its constituent elements. We first began Irmin in late 2013 to act as a Git-like distributed and branchable storage substrate that would let us escape the perils of POSIX filesystems.

The Irmin libraries provide snapshotting, branching and merging operations over storage and can communicate via Git both on-disk and remotely. Irmin today therefore cons…


An introduction to OCaml PPX ecosystem — Tarides (Nathan Rebours), May 09, 2019

These last few months, I spent some time writing new OCaml PPX rewriters or contributing to existing ones. It's a really fun experience. Toying around with the AST taught me a lot about a language I thought I knew really well. Turns out I actually had no idea what I was doing all these years.

All jokes aside, I was surprised that the most helpful tricks I learned while writing PPX rewriters weren't properly documented. There already exist a few very good introduction articles on the subj…


A course on homotopy (type) theory — Andrej Bauer, May 08, 2019

This semester my colleague Jaka Smrekar and I are teaching a graduate course on homotopy theory and homotopy type theory. The first part was taught by Jaka and was a nice review of classical homotopy theory leading up to Quillen model categories. In the second part I am covering basic homotopy type theory. The course … Continue reading A course on homotopy (type) theory

7th MirageOS hack retreat — Tarides (Charles-Edouard Lecat), May 06, 2019

Let's talk sun, mint tea and OCaml: Yes, you got it, the MirageOS biennial retreat at Marrakesh!

For the 7th iteration of the retreat, the majority of the Tarides team took part in the trip to the camels country. This is a report about what we produced and enjoyed while there.

Charles-Edouard Lecat

That's it, my first MirageOS retreat is coming soon, let's jump in the plane and here I come. After a nice cab trip and an uncountable number of similar streets, I'm finally at the Ri…


Blockchains @ OCamlPro: an Overview — OCamlPro, Apr 29, 2019

OCamlPro started working on blockchains in 2014, when Arthur Breitman came to us with an initial idea to develop the Tezos ledger. The idea was very challenging with a lot of innovations. So, we collaborated with him to write a specification, and to turn the specification into OCaml code. Since then, we continually improved our skills in this domain, trained more engineers, introduced the technology to students and to professionals, advised a dozen projects, developed tools and libraries, made …


MirageOS security advisory 02: mirage-xen < 3.3.0 — MirageOS (Thomas Leonard), Apr 26, 2019

MirageOS Security Advisory 02 - grant unshare vulnerability in mirage-xen

  • Module: mirage-xen
  • Announced: 2019-04-25
  • Credits: Thomas Leonard, Mindy Preston
  • Affects: mirage-xen < 3.3.0, mirage-block-xen < 1.6.1, mirage-net-xen < 1.10.2, mirage-console < 2.4.2, ocaml-vchan < 4.0.2, ocaml-gnt (no longer supported)
  • Corrected: 2019-04-22: mirage-xen 3.4.0, 2019-04-05: mirage-block-xen 1.6.1, 2019-04-02: mirage-net-xen 1.10.2, 2019-03-27: mirage-console 2.4.2, …

will take place on June 3, 2019 in Paris. Registration and programhere. — Frama-C, Apr 18, 2019

Learning ML Depth-First — Jane Street, Apr 17, 2019

If you haven’t heard of it, Depth First Learning is a wonderful resource for learning about machine learning.

The Mirage retreat: field trip report — GaGallium (Gabriel Scherer), Apr 15, 2019

Between March 6th and March 13th 2019, I attended the Mirage retreat organized by Hannes Mehnert in Marrakesh, Morocco.

The Mirage retreat takes place in an artist residency organized as a hostel (shared rooms with simple beds). Hannes gathers a lot of people whose activity is relevant to the Mirage project; some of them work within the OCaml ecosystem (but not necessarily Mirage), some work on system programming (not necessarily in OCaml). The whole place is for all of us for one week, ex…


opam 2.0.4 release — OCamlPro, Apr 10, 2019

We are pleased to announce the release of opam 2.0.4.

This new version contains some backported fixes:

  • Sandboxing on macOS: considering the possibility that TMPDIR is unset [#3597 @herbelin – fix #3576]
  • display: Fix opam config var display, aligned on opam config list [#3723 @rjbou – rel. #3717]
  • pin:
    • update source of (version) pinned directory [#3726 @rjbou – fix #3651]
    • fix --ignore-pin-depends with autopin [#3736 @AltGr]
    • fix pinnings not installing/upgrading already pinned p…

opam 2.0.4 release — OCaml Platform (Raja Boujbel - OCamlPro, Louis Gesbert - OCamlPro), Apr 10, 2019

We are pleased to announce the release of opam 2.0.4.

This new version contains some backported fixes:

  • Sandboxing on macOS: considering the possibility that TMPDIR is unset [#3597 @herbelin - fix #3576]
  • display: Fix opam config var display, aligned on opam config list [#3723 @rjbou - rel. #3717]
  • pin:
    • update source of (version) pinned directory [#3726 @rjbou - #3651]
    • fix --ignore-pin-depends with autopin [#3736 @AltGr]
    • fix pinnings not installing/upgrading already pinned packages (introduced in 2.0.…

Dune 1.9.0 — Tarides (Lucas Pluvinage), Apr 10, 2019

Tarides is pleased to have contributed to the dune 1.9.0 release which introduces the concept of library variants. Thanks to this update, unikernels builds are becoming easier and faster in the MirageOS universe! This also opens the door for a better cross-compilation story, which will ease the addition of new MirageOS backends (trustzone, ESP32, RISC-V, etc.)

This post has also been posted to the Dune blog. See also the the discuss forum for more details.

Dune 1.9.0

Changes include:

  • Coloring …

MirageOS Spring 2019 hack retreat roundup — MirageOS (Hannes Mehnert), Apr 03, 2019

MirageOS Spring Hack Retreat, Marrakesh 2019

Early March 2019, 31 MirageOS hackers gathered again in Marrakesh for our bi-annual hack retreat. We'd like to thank our amazing hosts, and everyone who participated on-site or remotely, and especially those who wrote up their experiences.

On this retreat, we ate our own dogfood, and used our MirageOS DHCP, recursive DNS resolver, and CalDAV unikernels as isolated virtual machines running on a PC Engines APU with FreeBSD as host system. The CalDAV s…


OCaml on Baremetal Shakti RISC-V processor — KC Sivaramakrishnan, Mar 29, 2019

It has been 3 months since I joined IIT Madras and it has been good fun so far. Along with the members of the RISE group, we’ve initiated a project to build secure applications on top of secure extensions of the open-source Shakti RISC-V processor ecosystem. Unsurprisingly, my language of choice to build the applications is OCaml. Given the availability of rich ecosystem of libraries under the MirageOS library operating system for building unikernels, we hope to minimise the amount of unsafe C…


Release of OCamlFormat 0.9 — Tarides (Guillaume Petiot), Mar 29, 2019

We are pleased to announce the release of OCamlFormat (available on opam). There have been numerous changes since the last release, so here is a comprehensive list of the new features and breaking changes to help the transition from OCamlFormat 0.8.

Additional dependencies

OCamlFormat now requires:

  • ocaml >= 4.06 (up from 4.04.1)
  • dune >= 1.1.1
  • octavius >= 1.2.0
  • uutf

OCamlFormat_Reason now requires:

  • ocaml >= 4.06
  • dune >= 1.1.1
  • ocaml-migrate-parsetree >= 1.0.10 (up from 1.0.6)
  • octav…

MirageOS security advisory 01: netchannel 1.10.0 — MirageOS (Mindy Preston), Mar 21, 2019

MirageOS Security Advisory 01 - memory disclosure in mirage-net-xen

  • Module: netchannel
  • Announced: 2019-03-21
  • Credits: Thomas Leonard, Hannes Mehnert, Mindy Preston
  • Affects: netchannel = 1.10.0
  • Corrected: 2019-03-20 1.10.1 release

For general information regarding MirageOS Security Advisories, please visit https://mirage.io/security.


MirageOS is a library operating system using cooperative multitasking, which can be executed as a guest of the Xen hypervisor. Virtu…


opam 2.0 tips — OCaml Platform (Louis Gesbert - OCamlPro), Mar 12, 2019

This blog post looks back on some of the improvements in opam 2.0, and gives tips on the new workflows available.

Package development environment management

Opam 2.0 has been vastly improved to handle locally defined packages. Assuming you have a project ~/projects/foo, defining two packages foo-lib and foo-bin, you would have:

|-- foo-lib.opam
|-- foo-bin.opam
`-- src/ ...

(See also about computed dependency constraints for handling multiple package definitions with mutual co…


Announcing Liquidity version 1.0 — OCamlPro, Mar 08, 2019

Liquidity version 1.0

We are pleased to announce the release of the first major version of the Liquidity smart-contract language and associated tools.

Some of the highlights of this version are detailed below.

Multiple Entry Points

In the previous versions of Liquidity, smart contracts were limited to a single entry point (named main). But traditionally smart contracts executions path depend strongly on the parameter and in most cases they are completely distinct.

Having different entry points a…


Announcing MirageOS 3.5.0 — MirageOS (Hannes Mehnert), Mar 05, 2019

MirageOS 3.5.0 release

We are happy to announce our MirageOS 3.5.0 release. We didn't announce post 3.0.0 releases too well -- that's why this post tries to summarize the changes in the MirageOS ecosystem over the past two years. MirageOS consists of over 100 opam packages, lots of which are reused in other OCaml projects and deployments without MirageOS. These opam packages are maintained and developed further by lots of developers.

On the OCaml tooling side, since MirageOS 3.0.0 we did severa…


Techelson, a test execution engine for Michelson — OCamlPro, Mar 05, 2019

We are pleased to announce the first release of Techelson, available here.

Techelson is a Test Execution Engine for Michelson. It aims at testing functional properties of Michelson smart contracts. Make sure to check the user documentation to get a sense of Techelson’s workflow and features.

For Liquidity programmers interested in Techelson, take a look at this blog post discussing how to write tests in Liquidity and run them using Techelson.

Techelson is still young: if you have problems…


Signing Data for Smart Contracts — OCamlPro, Mar 05, 2019

Smart contracts calls already provide a built-in authentication mechanism as transactions (i.e. call operations) are cryptographically signed by the sender of the transaction. This is a guarantee on which programs can rely.

However, sometimes you may want more involved or flexible authentication schemes. The ones that rely on signature validity checking can be implemented in Michelson, and Liquidity provide a built-in instruction to do so. (You still need to keep in mind that you cannot store un…


Accelerating Self-Play Learning in Go — Jane Street, Feb 28, 2019

At Jane Street, over the last few years, we’ve been increasingly exploring machine learning to improve our models. Many of us are fascinated by the rapid improvement we see in a wide variety of applications due to developments in deep learning and reinforcement learning, both for its exciting potential for our own problems, and also on a personal level of pure interest and curiosity outside of work.

View older blog posts.