This blog post and the previous one about functor packs covers two RFCs currently developed by OCamlPro and Jane Street. We previously introduced functor packs, a new feature adding the possiblity to compile packs as functors, allowing the user to implement functors as multiple source files or even parameterized libraries. In this blog post, we … Rehabilitating packs using functors and recursivity, part 2.
OCamlPro has a long history of dedicated efforts to support the development of the OCaml compiler, through sponsorship or direct contributions from Flambda Team. An important one is the Flambda intermediate representation designed for optimizations, and in the future its next iteration Flambda 2. This work is funded by JaneStreet. Packs in the OCaml ecosystem … Rehabilitating Packs using Functors and Recursivity, part 1.
We are pleased to announce the minor release of opam 2.0.7. This new version contains backported small fixes: – Escape Windows paths on manpages [#4129 @AltGr @rjbou]– Fix opam installer opam file [#4058 @rjbou]– Fix various warnings [#4132 @rjbou @AltGr – fix #4100]– Fix dune 2.5.0 promote-install-files duplication [#4132 @rjbou] Note: To homogenise macOS name … opam 2.0.7 release
We are happy to announce the alpha release of Opam 2.1.0, one year and a half after Opam 2.0.0. Many new features made it in (see the complete changelog or release note for the details), but here are a few highlights of this release. Release highlights The two following features have been around for a … opam 2.1.0 alpha is here!
The Garbage Collector probably is OCaml’s greatest unsung hero. Its pragmatic approach allows us to allocate without much fear of efficiency loss. In a way, the fact that most OCaml hackers know little about it is a good sign: you want a runtime to gracefully do its job without having to mind it all the … An in-depth Look at OCaml’s new “Best-fit” Garbage Collector Strategy
We are happy to announce that our venerable “TryOCaml” service is being retired and replaced by a new, modern version based upon our work on Learn-OCaml. → Try it here ← The new interface provides an editor panel besides the familiar top-level, error and warning positions highlighting, the latest OCaml release (4.10.0), local storage of … New version of TryOCaml in beta!
OCamlPro was created to help OCaml and formal methods spread into the industry. We grew from 1 to 21 engineers, still strongly sharing this ambitious goal! The year 2019 at OCamlPro was very lively, with fantastic accomplishments all along! Let’s quickly review the past years’ works, first in the world of OCaml (flambda2 & compiler optimisations, … 2019 at OCamlPro
We are pleased to announce the minor release of opam 2.0.6. This new version contains some small backported fixes and build update: Don’t remove git cache objects that may be used [#3831 @AltGr] Don’t include .gitattributes in index.tar.gz [#3873 @dra27] Update FAQ uri [#3941 @dra27] Lock: add warning in case of missing locked file [#3939 … opam 2.0.6 release
Earlier, we dusted-off our Language and Stdlib cheatsheets, for teachers and students. With more time, we managed to design an Opam 2.0 cheat-sheet we are proud of. It is organized into two pages: The everyday average Opam use: Installation, Configuration, Switches, Allowed URL formats, Packages, Exploring, Package pinning, Working with local pins, Sharing a dev … The Opam 2.0 cheatsheet, with a new theme!
In our endeavour to encourage professional programmers to understand and use OCaml, OCamlPro will be giving two training sessions, in French, in our Paris offices: OCaml Beginner course for professional programmers (5-6 Nov) OCaml Expertise (7-8 Nov). The “Expert” OCaml course is for already experienced OCaml programmers to better understand advanced type system possibilities (objects, … OCaml expert and beginner training by OCamlPro (in French): Nov. 5-6 & 7-8
In 2011, we shared several cheat sheets for OCaml. Cheat sheets are helpful to refer to, as an overview of the documentation when you are programming, especially when you’re starting in a new language. They are meant to be printed and pinned on your wall, or to be kept in handy on a spare screen. … Updated Cheat Sheets: OCaml Language and OCaml Standard Library
The OCaml compiler team at OCamlPro is happy to present some of the work recently done jointly with JaneStreet’s team. A lot of work has been done towards a new framework for optimizations in the compiler, called Flambda2, aiming at solving the shortcomings that became apparent in the Flambda optimization framework (see below for more … OCamlPro’s compiler team work update
We are pleased to announce the minor release of opam 2.0.5. This new version contains build update and small fixes: Bump src_ext Dune to 1.6.3, allows compilation with OCaml 4.08.0. [#3887 @dra27] Support Dune 1.7.0 and later [#3888 @dra27 – fix #3870] Bump the ocaml_mccs lib-ext, to include latest changes [#3896 @AltGr] Fix cppo detection … opam 2.0.5 release
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 … opam 2.0.4 release
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. … opam 2.0.2 release
We are happy to announce the final release of opam 2.0.0. A few weeks ago, we released a last release candidate to be later promoted to 2.0.0, synchronised with the opam package repository upgrade. You are encouraged to update as soon as you see fit, to continue to get package updates: opam 2.0.0 supports the … opam 2.0.0 release and repository upgrade
We are happy to announce the opam 2.0.0 final release candidate! ? This release features a few bugfixes over Release Candidate 3. It will be promoted to 2.0.0 proper within a few weeks, when the official repository format switches from 1.2.0 to 2.0.0. After that date, updates to the 1.2.0 repository may become limited, as … opam 2.0.0 RC4-final is out!
We are pleased to announce the release of a second release candidate for OPAM 2.0.0. This new version brings us very close to a final 2.0.0 release, and in addition to many fixes, features big performance enhancements over the RC1. Among the new features, we have squeezed in full sandboxing of package commands for both … opam 2.0.0 Release Candidate 2 is out!
This time of the year is, just like Christmas time, a time for laughs and magic… although the magic we are talking about, in the OCaml community, is not exactly nice, nor beautiful. Let’s say that we are somehow akin to many religions: we know magic does exist , but that it is satanic and … OCaml JTRT
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
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
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”
Among the areas we wanted to improve on for opam 2.0 was the handling of switches. In opam 1.2, they are simply accessed by a name (the OCaml version by default), and are always stored into ~/.opam/<name>. This is fine, but can get a bit cumbersome when many switches are in presence, as there is … New opam features: local switches
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”
UPDATE (2017-02-14): A beta2 is online, which fixes issues and performance of the opam build command. Get the new binaries, or recompile the opam-devel package and replace the previous binary. We are pleased to announce that the beta release of opam 2.0 is now live! You can try it already, bootstrapping from a working 1.2 … Opam 2.0 Beta is out!
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
OPAM 1.2.2 has just been released. This fixes a few issues over 1.2.1 and brings a couple of improvements, in particular better use of the solver to keep the installation as up-to-date as possible even when the latest version of a package can not be installed. Upgrade from 1.2.1 (or earlier) See the normal installation … OPAM 1.2.2 Released
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) !
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