Previous week Up Next week


Here is the latest OCaml Weekly News, for the week of September 15 to 22, 2015.

  1. Quick Check like testing for OCaml?
  2. fmt 0.7.0
  3. The OCaml MOOC starts in one month
  4. OCaml 2015 talks
  5. Faster byte code
  6. Other OCaml News

Quick Check like testing for OCaml?


Continuing the thread from last week, Yaron Minsky announced:
Core_kernel has a recently added quickcheck library. Carl Eastlund, who is the
main author, is finishing up a blog post describing it, but you can start with
the documentation in this file:
Gabriel Scherer then said and Carl Eastlund replied:
> This is very nice.
> I hope the library will also get shrinking support, because it not so easy
> to do, and important in practice.

Glad you like it.  Our Quickcheck implementation is new and its design is
still somewhat of an experiment, so I can't claim it's a mature library as
originally asked for in this thread, but of course we appreciate feedback
from early adopters.  As Yaron said, I'm writing up a blog post that will
go into more detail about it.

We just had an intern, Daniel Spencer, implement shrinking.  That will make
its way to the public release shortly.
Simon Cruanes then asked and Carl Eastlund replied:
> I am working on adding shrinking into qtest
> (, and I'm curious about what
> design choices you did. Haskell literate mentions
> shrink: 'a -> 'a list
> to shrink values, but on large counter-examples like large lists, it
> might be very slow. I'm trying to use iterators to generate shrunk(?)
> values lazily.
> Also, do Core users write random generators or shrinking functions
> themselves, or do you have a deriver for them? I assume you use "with
> sexp" to display counter-examples.

Currently generators and shrinkers (and observers, which generate functions --
the analog to CoArbitrary in Haskell) are all written manually. I do intend to
add syntax for them, but that's been pending on a few other updates,
especially our switch from camlp4 to ppx syntax extensions. We do print
counterexamples using s-expressions, as you say.

Our shrinkers use the type ('a -> 'a Sequence.t), where Sequence.t is a lazy,
unmemoized sequence type in Core.

fmt 0.7.0


Daniel Bünzli announced:
I'd like to announce the first release of fmt which should be available shortly in opam. 

Quickly, the Format module is a good tool for pleasant printf debugging,
installing custom printers for your types in the toplevel or rendering text
for command line tools. However the API is terrible and very verbose.

Fmt simply provides you a few combinators and shortcuts to quickly devise your
own pretty-printers and dump the data structures of the standard library.

Here's the blurb:

  Fmt exposes combinators to devise `Format` pretty-printing functions.

  Fmt depends only on the OCaml standard library. The optional Fmt_tty 
  library that allows to setup formatters for terminal color output depends 
  on the Unix library. Fmt is distributed under the BSD3 license.

Home page:
API docs:

Thanks to Gabriel Radanne for his feedback and patches.

The OCaml MOOC starts in one month


Roberto Di Cosmo announced:
The "Introduction to Functional Programming in OCaml" MOOC announced in July
will start in a month, on October 19th.

We are quite happy to see that there are now almost 1500 registrations for the
course, and we would like to ask for a little help in disseminating the course
even further, as it is well known that a large user base makes the learning
process more effective in a MOOC.

To help in this dissemination, an online version of the synthetic flyer
distributed at ICFP with all the course information is now available: you can
print it and post it on any billboard you may see fit

All the information on the course, including a teaser video, is also available

The course is in english, but we are investigating the possibility of having
subtitles in multiple languages on the platform used for the MOOC.
There are 43 video sequences, with durations ranging from 4 minutes to 15
minutes. Contact me if you are willing to help in translating the subtitles in
other languages (use the Subject : OCaml MOOC subtitles), and we'll see if
there is the needed critical mass to set up this process.

And if any of you, experienced OCamlers, wants to register to lend a hand in
the forums every now and then, do not hesitate!

OCaml 2015 talks


Runhang Li announced:
Videos of OCaml Workshop 2015 are finally available. [1]

Video chair explained to me the reason:

> I am not aware of videos in the Haskell Symposium that have bad
> audio---please send me a link if you know of one, so I can have a look and see
> what might have gone wrong.
> I am aware that some of the videos in the Haskell Implementors' Workshop
> have bad audio, and that's because the speakers were not speaking in the 
> microphone. I think for next time we could try to arrange wireless
> microphones for groups that want to be recorded, but that somewhat depends on
> what’s available at the venue and the budget we have to work within.
> As for the OCaml workshop---that was pretty much entirely my fault as I was
> busy with the recording upstairs and forgot to plug in the microphone into the
> camera. 
> Unfortunately, the student volunteer didn't notice this either, so we have a
> lot of ambient noise from the room. When I play around with the sound
> setttings on the 
> video I can get it to levels where one can follow what is being said, but I
> need to figure out how to save this in the audio track. So I still have hope
> that we'll at 
> least get something to work with. My sincerest apologies to the OCaml
> community! I myself am quite interested in watching these talks as I was at
> the HS for 
> pretty much the whole day, so I didn't get to see any of them either.

I hope everyone is happy with this result.


Faster byte code


Runhang Li asked and Gabriel Scherer explained:
> Xavier; you mentioned during the state of ocaml 2015 talk that there
> was a 30% faster bytecode runtime coming.  Is there any more
> information on this?  I found this part of the talk difficult to
> follow on youtube.
> I am mainly interested if there will be a change in the bytecode
> runtime, or if it is related to the compiler.

I believe the change that was described is the now-merged

  GPR#226: Compiling the run-time system at higher levels of C optimization

From the experiments reported by Xavier, I have the impression that
most gains are about the way the C compiler optimizes the bytecode
dispatch loop, so these would be specific to running bytecode-compiled
programs. Native programs should also benefit by linking to a
better-optimized runtime system, but no noticeable gains have been
observed on these so far -- probably because a lot of the runtime code
is memory-access-bound and harder to optimize.

Note that we don't have much performance numbers for now, so extra
data points are welcome: if you have a program spending a noticeable
time in specific parts of the runtime system, you might see a gain.

Other OCaml News

From the ocamlcore planet blog:
Thanks to Alp Mestan, we now include in the OCaml Weekly News the links to the
recent posts from the ocamlcore planet blog at

Amir Chaudhry: Governance of

OCamlCore Forge Projects: time

Old cwn

If you happen to miss a CWN, you can send me a message and I'll mail it to you, or go take a look at the archive or the RSS feed of the archives.

If you also wish to receive it every week by mail, you may subscribe online.

Alan Schmitt