As you may have noticed, on the begining of April I have some urge to write something technical about some deeply specific point of OCaml. This time I’d like to tackle that through sudoku. It appearch that Sudoku is of great importance considering the number of posts explaining how to write a solver. Following that EzSudoku

New opam features: “opam build”

The new opam 2.0 release, currently in beta, introduces several new features. This post gets into some detail on the new opam build command, its purpose, its use, and some implementation aspects. opam build is run from the source tree of a project, and does not rely on a pre-existing opam installation. As such, it New opam features: “opam build”

Tags: ,

Release of Alt-Ergo 1.30 with experimental support for models generation

We have recently released a new (public up-to-date) version of Alt-Ergo. We focus in this article on its main new feature: experimental support for models generation. This work has been done with Frédéric Lang, an intern at OCamlPro from February to July 2016. The idea behind models generation The idea behind this feature is the Release of Alt-Ergo 1.30 with experimental support for models generation


As you may know, there is a subset of Javascript that compiles efficiently to assembly used as backend of various compilers including a C compiler like emscripten. We’d like to present you in the same spirit how never to allocate in OCaml. Before starting to write anything, we must know how to find if a ASM.OCaml

Reduced Memory Allocations with ocp-memprof

In this blog post, we explain how ocp-memprof helped us identify a piece of code in Alt-Ergo that needed to be improved. Simply put, a function that merges two maps was performing a lot of unnecessary allocations, negatively impacting the garbage collector’s activity. A simple patch allowed us to prevent these allocations, and thus speed Reduced Memory Allocations with ocp-memprof

Tags: , , , , , , ,

Yes, ocp-memprof (s)can(f) !

A few months ago, a memory leak in the Scanf.fscanf function of OCaml’s standard library has been reported on the OCaml mailing list. The following “minimal” example reproduces this misbehavior: [code language=”fsharp” title=”(* in file scanf_leak.ml *)”] for i = 0 to 100_000 do let ic = open_in “some_file.txt” in Scanf.fscanf ic “%s” (fun _s Yes, ocp-memprof (s)can(f) !

Tags: , , , , , ,

Cumulus and ocp-memprof, a love story

In this blog post, we went on the hunt of memory leaks in Cumulus by using our memory profiler: ocp-memprof. Cumulus is a feed aggregator based on Eliom, a framework for programming web sites and client/server web applications, part of the Ocsigen Project. First, run and get the memory snapshots To test and run the Cumulus and ocp-memprof, a love story

Tags: , , , , , , ,

Private Release of Alt-Ergo 1.00

After the public release of Alt-Ergo 0.99.1 last December, it’s time to announce a new major private version (1.00) of our SMT solver. As usual: we freely provide a JavaScript version on Alt-Ergo’s website, we provide a private access to our internal repositories for academia users and our clients. Quick Evaluation A quick comparison between Private Release of Alt-Ergo 1.00

Tags: , , , ,

OCamlPro Highlights: May-June 2014

Here is a short report on some of our public activities in May and June 2014. Towards OPAM 1.2 After a lot of discussions and work on OPAM itself, we are now getting to a clear workflow for OCaml developpers and packagers: the preliminary document for OPAM 1.2 is available here. The idea is that OCamlPro Highlights: May-June 2014

Tags: , , , , , , , , , , , ,

Try Alt-Ergo in Your Browser

Recently, we worked on an online Javascript-based serverless version of the Alt-Ergo SMT solver. In what follows, we will explain the principle of this version of Alt-Ergo, show how it can be used on a realistic example and compare its performances with bytecode and native binaries of Alt-Ergo. Compilation “Try Alt-Ergo” is a Javascript-based version Try Alt-Ergo in Your Browser

Tags: , , , , , , ,

OCamlPro Highlights: April 2014

Here is a short report on some of our activities in April 2014, and a short analysis of OCaml evolution since its first release. OPAM Improvements We’re still working on release 1.2. It was decided to include quite a few new features in this release, which delayed it a little bit since we want to OCamlPro Highlights: April 2014

Tags: , , , , , , ,

The Generic Syntax Extension

OCaml 4.01 with its new feature to disambiguate constructors allows to do a nice trick: a simple and generic syntax extension that allows to define your own syntax without having to write complicated parsetree transformers. We propose an implementation in the form of a ppx rewriter. it does only a simple transformation: replace strings prefixed The Generic Syntax Extension

Tags: , ,

OCamlPro Highlights: Feb 2014

Here is a short report of some of our activities in February 2014 ! Displaying what OPAM is doing After releasing version 1.1.1, we have been very busy preparing the next big things for OPAM. We have also steadily been improving stability and usability, with a focus on friendly messages: for example, there is a OCamlPro Highlights: Feb 2014

Tags: , , , , , , , , ,

OCamlPro Highlights: Dec 2013 & Jan 2014

Here is a short report of some of our activities in last December and January ! A New Intel Backend for ocamlopt With the support of LexiFi, we started working on a new Intel backend for the ocamlopt native code compiler. Currently, there are four Intel backends in ocamlopt: amd64/emit.mlp, amd64/emit_nt.mlp, i386/emit.mlp and i386/emit_nt.mlp, i.e. OCamlPro Highlights: Dec 2013 & Jan 2014

Tags: , , , , , , , ,

OCamlPro Highlights: November 2013

New Team Members We are pleased to welcome three new members in our OCamlPro team since the beginning of November: Benjamin Canou started working at OCamlPro on the Richelieu project, an effort to bring better safety and performance to the Scilab language. He is in charge of a type inference algorithm that will serve both OCamlPro Highlights: November 2013

Tags: , , , , , , ,

OCamlPro Highlights, Sept-Oct 2013

Here is a short report of our activities in September-October 2013. OCamlPro at OCaml’2013 in Boston We were very happy to participate to OCaml’2013, in Boston. The event was a great success, with a lot of interesting talks and many participants. It was a nice opportunity for us to present some of our recent work: OCamlPro Highlights, Sept-Oct 2013

Tags: , , , , ,

Alt-Ergo @ OCamlPro: Two months later

As announced in a previous post, I joined OCamlPro at the beginning of September and I started working on Alt-Ergo. Here is a report presenting the tool and the work we have done during the two last months. Alt-Ergo at a Glance Alt-Ergo is an open source automatic theorem prover based on SMT technology. It Alt-Ergo @ OCamlPro: Two months later

Tags: ,

OCamlPro Highlights, August 2013

Here is a short report on the different projects we have been working on in August. News from OCamlPro Compiler Optimizations After our reports on better inlining have raised big expectations, we have been working hard on fixing the few remaining bugs. An enhanced alias/constant analysis was added, to provide the information needed to lift OCamlPro Highlights, August 2013

Tags: , , , , , , , ,

Better Inlining: Progress Report

As announced some time ago, I am working on a new intermediate language within the OCaml compiler to improve its inlining strategy. After some time of bug squashing, I prepared a testable version of the patchset, available either on Github (branch flambda_experiments), or through OPAM, in the following repository: [code language=”bash” gutter=”false”] opam repo add Better Inlining: Progress Report

Tags: , , ,

News from May and June

It is time to give a brief summary of our recent activities. As usual, our contributions were focused on three main objectives: (i) make the OCaml compiler faster and easier to use; (ii) make the OCaml developers more efficient by releasing new development tools and improving editor supports; and (iii) organize and participate to community News from May and June

Tags: , , , ,

April Monthly Report

This post aims at summarizing the activities of OCamlPro for the past month. As usual, we worked in three main areas: the OCaml toolchain, development tools for OCaml and R&D projects. The toolchain Our multi-runtime implementation of OCaml had gained stability. Luca fixed a lot of low-level bugs in the “master” branch of his OCaml April Monthly Report

Tags: , , , , ,

An Indentation Engine for OCaml

Since our last activity report we have released the first stable versions of two projects: OPAM, an installation manager for OCaml source packages, and ocp-indent, an indentation tool. We have already described the basics of OPAM in two precedent blog posts, so today we will focus on the release of ocp-indent. Indentation should be consistent An Indentation Engine for OCaml

Tags: , , ,

An Overview of our Current Activities

From the early days of OCamlPro, people have been curious about our plans; they were asking how we worked at OCamlPro and what we were doing exactly. Now that we have started releasing projects more regularly, these questions come again. They are very reasonable questions, and have resolved to be more public and communicate more An Overview of our Current Activities

Tags: ,

Beta-release of OPAM

OPAM is a source-based package manager for OCaml. It supports multiple simultaneous compiler installations, flexible package constraints, and a Git-friendly development workflow. I have recently announced the beta-release of OPAM on the caml-list, and this blog post introduces the basics to new OPAM users. Why OPAM We have decided to start writing a brand new Beta-release of OPAM

Tags: , ,