OCamlPro’s Liquidity-lang demo at JFLA2018 – a smart-contract design language

As a tradition, we took part in this year’s Journées Francophones des Langages Applicatifs (JFLA 2018) that was chaired by LRI’s Sylvie Boldo and hosted in Banyuls the last week of January. That was a nice opportunity to present a live demo of a multisignature smart-contract entirely written in the #Liquidity language designed at OCamlPro, OCamlPro’s Liquidity-lang demo at JFLA2018 – a smart-contract design language

Tags: , , , ,

2017 at OCamlPro

Since 2017 is just over, now is probably the best time to review what happened during this hectic year at OCamlPro… Here are our big 2017 achievements, in the world of blockchains (the Liquidity smart contract language, Tezos and the Tezos ICO, etc.), of OCaml (with OPAM 2, flambda 2 etc.), and of formal methods 2017 at OCamlPro

Tags: , , , , , , ,

New opam features: more expressive dependencies

This blog will cover yet another aspect of the improvements opam 2.0 has over opam 1.2. It may be a little more technical than previous issues, as it covers a feature directed specifically at packagers and repository maintainers, and regarding the package definition format. Specifying dependencies in opam 1.2 Opam 1.2 already has an advanced New opam features: more expressive dependencies

New opam features: “opam install DIR”

After the opam build feature was announced followed a lot of discussions, mainly having to do with its interface, and misleading name. The base features it offered, though, were still widely asked for: a way to work directly with the project in the current directory, assuming it contains definitions for one or more packages a New opam features: “opam install DIR”

EzSudoku

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

ASM.OCaml

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: , , , ,