• 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.

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

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.

Machining the ultimate hackathon prize — Jane Street, Feb 28, 2019

Jane Street is sponsoring this year’s MakeMIT hackathon, and we wanted to create a prize for the winners that would do justice to the maker spirit of the competition. As makers ourselves – it’s not unusual to find a “software” engineer here who hacks on FPGAs or who has a CNC machine at home – it felt natural to get our hands dirty.

Senior Haskell / Full Stack Developer at PRODA Ltd (Full-time) — Functional Jobs (FunctionalJobs.com), Feb 14, 2019

Position summary

We are looking for a full-time senior software engineer to join our team in London or work remotely.

We want you to be someone who is looking to really help shape the future of the development team, have real impact on strategy, architecture and be the lead on our most important projects.

You will expand PRODA's capabilities in data ingestion, data exports, data standardisation and machine learning. We work in a functional programming stack in Haskell and Elm, together w…


Full Stack Software Engineer (Haskell experience preferred) at Interos Solutions (Full-time) — Functional Jobs (FunctionalJobs.com), Feb 12, 2019

Interos Solutions, Inc. is a fast-growing venture backed company with an AI-driven SaaS application that delivers our commercial and government customers unique insight into their ever-changing business ecosystems. The core of our platform is the compilation, analysis and visualization of dynamically changing big data collected across open source, proprietary and public data sources. By continuously analyzing our "real-time" data stream we provide our customers with unique insights int…


Formal proof and analysis of an incremental cycle detection algorithm — GaGallium (Armaël Guéneau), Feb 12, 2019

As part of my PhD at Gallium, I have been working on formally proving OCaml programs using Coq. More precisely, the focus has been on proving not only that a program is functionally correct (always compute the right result), but also does so in the expected amount of time. In other words, we are interested in formally verifying the asymptotic complexity of OCaml programs.

In this blog-post, I’m happy to report on our latest endeavour: the verification of the correctness and (amortized) compl…


What’s new for Alt-Ergo in 2018 ? Here is a recap ! — OCamlPro, Feb 11, 2019

After the hard work done on the integration of floating-point arithmetic reasoning two years ago, 2018 is the year of polymorphic SMT2 support and efficient SAT solving for Alt-Ergo. In this post, we recap the main novelties last year, and we announce the first Alt-Ergo Users’ Club meeting.

An SMT2 front-end with prenex polymorphism

As you may know, Alt-Ergo’s native input language is not compliant with the SMT-LIB 2 input language standard, and translating formulas from SMT-LIB 2 to…


Learning a New Language — Gaius Hammond, Feb 10, 2019

Generally, every program I write, regardless of what useful thing it actually does, and regardless of what programming language it is written in, has to do certain things, which usually includes

  • Importing a library and calling functions contained within that library
  • Handling datatypes such as converting between strings and integers, and knowing when this is implicit or explicit, how dates and times work, and so on
  • Getting command line parameters or parsing a configuration file
  • Writing log messa…

Release of Base64 — Tarides (Romain C.), Feb 08, 2019

MirageOS is a library operating system written from the ground up in OCaml. It has an impossible and incredibly huge goal to re-implement all of the world! Looking back at the work accomplished by the MirageOS team, it appears that's what happened for several years. Re-implementing the entire stack, in particular the lower layers that we often take for granted, requires a great attention to detail. While it may seem reasonably easy to implement a given RFC, a huge amount of work is often hid…


OCaml server-side developer at Ahrefs (Full-time) — Functional Jobs (FunctionalJobs.com), Feb 05, 2019

What we need

Ahrefs is looking for a backend developer with a deep understanding of networks, distributed systems, OS fundamentals and taste for simple and efficient architectural designs. Our backend is implemented mostly in OCaml and some C++, as such proficiency in OCaml is very much appreciated, otherwise a strong inclination to intensively learn OCaml in a short term will be required. Understanding of functional programming in general and/or experience with other FP languages (F#,Haskell,S…


Improving Tezos Storage : Gitlab branch for testers — OCamlPro, Feb 04, 2019

This article is the third post of a series of posts on improving Tezos storage.  In our previous post, we announced the availability of a docker image for beta testers, wanting to test our storage and garbage collector. Today, we are glad to announce that we rebased our code on the latest version of mainnet-staging, and pushed a branch mainnet-staging-irontez on our public Gitlab repository:


The only difference with the previous po…


Playing Atari Games with OCaml and Deep Reinforcement Learning — Jane Street, Feb 02, 2019

In a previous blog post we detailed how we used OCaml to reproduce some classical deep-learning results that would usually be implemented in Python. Here we will do the same with some Reinforcement Learning (RL) experiments.

Elixir Developers & Functional Programmers at CareDox (Full-time) — Functional Jobs (FunctionalJobs.com), Feb 01, 2019

Love functional programming? Want to keep millions of children healthy? CareDox is hiring Elixir developers and functional programmers interested in learning Elixir.

We're a diverse, collaborative team of thoughtful, friendly engineers driven by CareDox's mission of working with schools and school nurses to immunize all children -- even the uninsured! -- against diseases like the flu and to help children with chronic illnesses (like asthma) manage their care.

We take pride in our Eli…


Improving Tezos Storage : update and beta-testing — OCamlPro, Jan 30, 2019

In a previous post, we presented some work that we did to improve the quantity of storage used by the Tezos node. Our post generated a lot of comments, in which upcoming features such as garbage collection and pruning were introduced. It also motivated us to keep working on this (hot) topic, and we present here our new results, and current state. Irontez3 is a new version of our storage system, that we tested both on real traces and real nodes. We implemented a garbage-collector for it, that is …


Tezos and OCamlPro — OCamlPro, Jan 29, 2019

A reflection on the new year… Today, Tezos is a global network and an open source project with developers spanning over five continents. In the inception of this project, the French company OCamlPro which, to this day, stills develops numerous projects around Tezos, played a particularly important role. Indeed, they were the first home of the research engineers who laid down the cornerstone of the code base, in tight collaboration with Arthur Breitman and the architect of the project, and …


L2 Regularization and Batch Norm — Jane Street, Jan 29, 2019

This blog post is about an interesting detail about machine learning that I came across as a researcher at Jane Street - that of the interaction between L2 regularization, also known as weight decay, and batch normalization.

opam 2.0.3 release — OCaml Platform (Raja Boujbel - OCamlPro, Louis Gesbert - OCamlPro), Jan 28, 2019

We are pleased to announce the release of opam 2.0.3.

This new version contains some backported fixes:

  • Fix manpage remaining $ (OPAMBESTEFFORT)
  • Fix OPAMROOTISOK handling
  • Regenerate missing environment file

Installation instructions (unchanged):
  1. From binaries: run

    sh <(curl -sL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh)

    or download manually from the Github "Releases" page to your PATH. In this case, don't forget to run opam init --reinit -ni to enable san…


Deprecating file releases on the forge — OCamlCore Forge News (Sylvain Le Gall), Jan 18, 2019

As part of the deprecation plan for forge.ocamlcore.org, the ability to upload files to the forge will soon be deprecated. Projects will not have the ability to create new releases. I will keep the current uploaded files and will continue to serve them. Here is what will change, once the deprecation will be done: - files will be moved to a new static host: https://download.ocamlcore.org - all links in the "Files" section will point to an URL https://download.ocamlcore.org - statistic…Read more...

Coq 8.9.0 is out — Coq, Jan 18, 2019

The 8.9.0 release of Coq is available.

It features many quality-of-life improvements, including goal differences as well as numeral and custom notations. For details, see the CHANGES file.

Feedback and bug reports are extremely welcome.

Improving Tezos Storage — OCamlPro, Jan 15, 2019

Running a Tezos node currently costs a lot of disk space, about 59 GB for the context database, the place where the node stores the states corresponding to every block in the blockchain, since the first one. Of course, this is going to decrease once garbage collection is integrated, i.e. removing very old information, that is not used and cannot change anymore (PR720 by Thomas Gazagnaire, Tarides, some early tests show a decrease to 14GB ,but with no performance evaluation). As a side note, thi…


A tutorial for building web applications with Incr_dom — Jane Street, Jan 15, 2019

At Jane Street, our web UIs are built on top of an in-house framework called Incr_dom, modeled in part on React’s virtual DOM. Rendering different views efficiently in response to changes made to a shared model is a quintessentially incremental computation—so it should be no surprise that Incr_dom is built on top of Incremental.

How configurator reads C constants — Tarides (Etienne M.), Jan 03, 2019

Dune comes with a library to query OS-specific information, called configurator. It is able to evaluate C expressions and turn them into OCaml value. Surprisingly, it even works when compiling for a different architecture. How can it do that?

Using TLA+ to understand Xen vchan — Thomas Leonard, Jan 01, 2019

The vchan protocol is used to stream data between virtual machines on a Xen host without needing any locks. It is largely undocumented. The TLA Toolbox is a set of tools for writing and checking specifications. In this post, I’ll describe my experiences using these tools to understand how the vchan protocol works.

Table of Contents


ocaml-http--migration-to-github — OCamlCore Forge News (Claudio Sacerdoti Coen), Dec 17, 2018

The ocaml-http project now resides on Github, https://github.com/sacerdot/ocaml-http. Further developments and new releases will take place on Github, not on this forge.

opam 2.0.2 release — OCamlPro, Dec 14, 2018

We are pleased to announce the release of opam 2.0.2.

As sandbox scripts have been updated, don’t forget to run opam init --reinit -ni to update yours.

This new version contains mainly backported fixes:

  • Doc:
    • update man page
    • add message for deprecated options
    • reinsert removed ones to print a deprecated message instead of fail (e.g. --alias-of)
    • deprecate no-aspcud
  • Pin:
    • on pinning, rebuild updated pin-depends packages reliably
    • include descr & url files on pinning 1.2 opam files
  • Sa…

View older blog posts.