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

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

Full Time: FPGA Engineer at Jane Street in New York, NY; London, UK — GitHub Jobs, Sep 18, 2017

Jane Street is looking to hire an engineer with experience in both software and hardware design to work on FPGA-based applications, and on tools for creating such applications.

We're big believers in the ability of tools to make programming faster, more pleasant, and more reliable. We think the same is true for hardware design, and we're looking for people with real world experience in hardware design who are interested in using programming language technology to improve the process of designin…


Revised Code Size Estimates for Examachine Releases — Eray Özkural, Sep 13, 2017

This post is in reference to Celestial Intellect Cybernetics's AGI (Artificial General Intelligence) Platform called Examachine. Examachine's core is a "parallel AGI kernel" which presents a generic programming API implementing parallel incremental general-purpose machine learning algorithms for heterogeneous supercomputers, and

Full Time: Software Developer (Functional Programming) at Jane Street in New York, NY; London, UK; Hong Kong — GitHub Jobs, Sep 11, 2017

Software Developer

Jane Street is a proprietary quantitative trading firm, focusing primarily on trading equities and equity derivatives. We use innovative technology, a scientific approach, and a deep understanding of markets to stay successful in our highly competitive field. We operate around the clock and around the globe, employing over 500 people in offices in New York, London and Hong Kong.

The markets in which we trade change rapidly, but our intellectual approach changes faster still…


Coq 8.7 beta 1 is out — Coq, Sep 06, 2017

The first beta release of Coq 8.7 is available for testing. Coq 8.7 includes:
  • A large amount of work on cleaning and speeding up the code base, notably the work of Pierre-Marie Pédrot on making the tactic-level system insensitive to existential variable expansion, providing a safer API to plugin writers and making the code more robust.
  • New tactics:
    • Variants of tactics supporting existential variables eassert, eenough, etc. by Hugo Herbelin;
    • Tactics e…

Platforms, Packaging, Progress — OCaml Labs, Sep 04, 2017

Richard Mortier recently decided to refresh and update his ocal command-line calendaring package, and took the opportunity to use the new packaging and build features present in opam: topkg and jbuilder.

This post from Mort details the process of removing remnants of older features such as Oasis, creating new jbuild files and topkg skeletons, and finally preparing and publishing a release into opam.

Merlin 3.0.0 on Windows — OCaml Labs, Aug 25, 2017

David Allsopp has previously contributed patches for native Windows support to Merlin, and after the release of Merlin 3.0.0 back in July, he’s been working with Frédéric Bour to port the new features to Windows.

This post from David explores some of the challenges for cross-platform development between Windows and Unix systems.

Alleged "hack" of our site: just a spam — Coq, Aug 23, 2017

The alleged "hack" of coq.inria.fr that led to several days of downtime for investigations was nothing more than a spam bug report. More details here.

Batteries 2.7.0 released — OCamlCore Forge News (Gabriel Scherer), Aug 17, 2017

This minor release is the first to support OCaml 4.05.0. See the full release notes at https://github.com/ocaml-batteries-team/batteries-included/releases/tag/v2.7.0

Transpose — Shayne Fletcher, Aug 12, 2017


If we are to represent a row of a matrix as a list of numbers, then a matrix can naturally be represented as a list of lists of numbers.

The transpose of a matrix $\mathbf{A}$ is a new matrix denoted $\mathbf{A^{T}}$. The traditional mathematical definition of $\mathbf{A^{T}}$ is expressed as saying the $i$ th row, $j$ th column element of $\mathbf{A^{T}}$ is the $j$ th row, $i$ th column element of $\mathbf{A}$:


frama-clang 0.0.3, compatible with Frama-C 15 is out. Download ithere. — Frama-C, Aug 02, 2017

A New Implementation of Git — OCaml Labs, Jul 27, 2017

Displaying his own true sense of style, Romain Calascibetta added an incredibly detailed (and hilariously funny) PR for integrating his new Git implementation into ocaml-git - using the new implementation!

For the last ~6 months, Romain has been working hard to improve ocaml-git: decoding/encoding PACK files; implementing the git gc command; git push; and HTTP protocol.

He is currently integrating this work into the existing ocaml-git implementation using a bottom-to-top method, and as the new…


Coq 8.6.1 is out — Coq, Jul 25, 2017

Version 8.6.1 of Coq is available. It fixes several bugs of version 8.6. More information can be found in the CHANGES file. Feedback and bug reports are extremely welcome.

Major Releases of Cohttp, Conduit, DNS and TCP/IP Libraries — OCaml Labs, Jul 19, 2017

Whilst porting a large portion of Mirage libraries to use Jbuilder, the MirageOS core team realised it was also a great opportunity to reorganise the package structure of some specific libraries, update/remove old code and improve overall functionality.

Many of the new releases include popular libraries used by projects other than MirageOS, and the maintainers have helpfully provided details on what has changed, specific improvements and adjustments users will need to make in order to use them.…


OCaml EFL 1.19.0 released and migration to GitHub — OCamlCore Forge News (Alexis Bernadet), Jul 13, 2017

Moved to version 1.19 of the EFL. Like the previous version, only version 1.8 and higher of the EFL and Elementary are required to build this version of OCaml EFL. This is probably the last version of OCaml EFL released on OCaml Forge. This project will migrate to GitHub: https://github.com/axiles/ocaml-efl

OCaml 4.05.0 released — Caml INRIA, Jul 13, 2017

OCaml 4.05.0 Released — OCaml Labs, Jul 13, 2017

Following some minor releases in the last month, OCaml 4.05.0 was released today and is available as an opam switch, or from source.

The release comprises over 130 changes, with a few breaking existing programs. General changes include language optimisations, runtime and type system improvements, bug fixing and some internal compiler-libs alterations.

More specifically, the OCaml manual has been updated, with dead links removed and a new document detailing how to contribute upstream, and there…


Provisioning, deploying, and managing virtual machines — Hannes Mehnert (hannes), Jul 10, 2017

How to deploy unikernels?

MirageOS has a pretty good story on how to compose your OCaml libraries into a virtual machine image. The mirage command line utility contains all the knowledge about which backend requires which library. This enables it to write a unikernel using abstract interfaces (such as a network device). Additionally the mirage utility can compile for any backend. (It is still unclear whether this is a sustainable idea, since the mirage tool needs to be adjusted for every ne…


How I found a bug in Intel Skylake processors — GaGallium (Xavier Leroy), Jul 03, 2017

Instructors of "Introduction to programming" courses know that students are willing to blame the failures of their programs on anything. Sorting routine discards half of the data? "That might be a Windows virus!" Binary search always fails? "The Java compiler is acting funny today!" More experienced programmers know very well that the bug is generally in their code: occasionally in third-party libraries; very rarely in system libraries; exceedingly rarely…


OCaml server-side developer at Ahrefs (Full-time) — Functional Jobs (FunctionalJobs.com), Jun 30, 2017

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…


Intel Hyper-Threading Bug Uncovered by OCaml Developers — OCaml Labs, Jun 26, 2017

The OCaml community has helped uncover a serious microcode defect on Intel Skylake and Kaby Lake processors with hyper-threading enabled. Debian have issued a security advisory encouraging users of systems with the affected processors to apply the BIOS/UEFI update, or disable hyper-threading.

Related issues have been under investigation since 2016, when OCaml developers began experiencing unpredictable behaviour when using the Intel Skylake and Kaby Lake CPUs. As detailed on the Mantis issue, t…


OCaml 4.04.2 released — Caml INRIA, Jun 23, 2017

Unicode 10.0.0 refresh — Daniel Bünzli, Jun 21, 2017

Uucd, Uucp, Uunf and Uuseg were refreshed for Unicode 10.0.0. Find the details via the software page.

Unsigned Integers as Built-In Types or as a Library? — OCaml Labs, Jun 15, 2017

Jeremy Yallop has submitted an extensive PR to add support for unsigned 32-bit and 64-bit integers. This feature is frequently requested, and the PR details the motivation behind the addition of primitive types, standard library modules, syntax for expressions and patterns, as well as suggesting ideas for future enhancement.

Unsigned integers could be added as built-in OCaml types, and Jeremy describes the advantages of doing so over adding them as a library. The features will help improve a va…


New in libguestfs: Rewriting bits of the daemon in OCaml — Richard Jones, Jun 04, 2017

libguestfs is a C library for creating and editing disk images. In the most common (but not the only) configuration, it uses KVM to sandbox access to disk images. The C library talks to a separate daemon running inside a KVM appliance, as in this Unicode-art diagram taken from the fine manual:

 │ main program      │
 │                   │
 │                   │           child process / appliance
 │                …

A Week of Platform Releases: Odig, Odoc, Opam Bundle and More! — OCaml Labs, May 31, 2017

Every year, May and June bring a hive of activity to the Computer Lab, and 2017 is no exception!

Our group is becoming more distributed across the globe, and we’ve taken extra steps to encourage communication by adopting the open-source Discourse forum for OCaml. The forum has become very active very quickly, and includes beginner questions, platform discussion and announcements of new releases.

It’s always fun bringing together OCaml contributors from all over the world to discuss their p…


Frama-C 15 - Phosphorus is out. Download ithere. — Frama-C, May 30, 2017

A modular formalization of type theory in Coq — Andrej Bauer, May 29, 2017

Here are the slides for the talk I just gave at TYPES 2017 in Budapest. It is joint work with Philipp Haselwarter and Théo Winterhalter. The abstract for the talk is available online.

It describes a complete formalization of dependent type theory which allows you to turn various features of type theory on and off, and it proves several basic formal theorems.

GitHub repository: formal-type-theory
Slides: TYPES 2017  – A modular formalization of type theory in Coq [PDF]

Why Jbuilder? Demonstration and Discussion — OCaml Labs, May 26, 2017

Yesterday we welcomed attendees from Docker, Microsoft Research (MSR), Barclays, OCaml Labs, Jane Street and Citrix to a Jbuilder discussion and demonstration. This is the first informal Tech Talk of a possible future series at Docker, and we experimented with live remote access and video recording. Huge thanks to the Docker team for providing the venue and Zoom!

Another build system?!

It’s well known that OCaml has more than a few existing build systems and associated tools (ocamlbuild, jen…


More type classes in OCaml — Shayne Fletcher (Evelgren), May 22, 2017

More type classes in OCaml

More type classes

Author: Joel Björnson

About the author: Joel has been enjoying functional programming ever since being introduced to Haskell at Chalmers University (Sweden). Since then he's been dabbling in F# and more recently OCaml. He's currently based in London, working at the intersection of functional programming and finance.

As demonstrated in previous articles on this blog, OCaml comes with a rich module system. Among other things it enables developers to …


OCaml Compiler Hacking May 2017 - Activity Summaries — OCaml Labs, May 19, 2017

We held the 17th Compiler Hacking Event this week, on a balmy Cambridge evening, and we’ve added summaries of what everyone was working on that evening including:

  • Meeting the group from Citrix working with Opam, some of whom are quite new to OCaml
  • Closing OCaml PRs, reviewing code and bug fixing
  • Getting stuck into Multicore!

We added some new projects to the “Things to Work On” list, and we will continue to update the projects over the coming weeks. There’s lots of interest in …


View older blog posts.