Previous week Up Next week


Here is the latest OCaml Weekly News, for the week of February 27 to March 06, 2018.

  1. gRPC implementation in OCaml
  2. ezgzip 0.2.0
  3. Experimented Developer/Lead Tech at Geneanet in Paris
  4. dune (jbuilder) 1.0+beta18
  5. Tezos Foundation is funding "Learn OCaml" at Inria
  6. GCP client package
  7. Caqti 0.9.0 release - Compatibility layer for database clients
  8. aws-s3.2.0
  9. Ocaml Github Pull Requests

gRPC implementation in OCaml


Continuing this thread, Anton Lavrik said:
I am the author of piqi-ocaml. There are no plans for suppoting grpc. I do plan
however to add support for Protobuf3 (currently piqi-ocaml supports only
Protobuf2) which grpc relies on, and support for some kind of stubs generation
for services. This way it would be usable for grpc serialization.

Those who want full grpc support would need to implement grpc protocol in OCaml,
but this is strictly outside of the current piqi-ocaml project scope.

ezgzip 0.2.0


Hezekiah Carty announced:
ezgzip provides a simple interface focused on `string -> string` zlib and gzip

Documentation is available [here](

An example illustrating how to gzip compress and then decompress a string:
open Rresult

let () =
  let original = "Hello world" in
  let compressed = Ezgzip.compress original in
  let decompressed = R.get_ok (Ezgzip.decompress compressed) in
  assert (original = decompressed)

This library currently uses the zlib bindings provided by
[camlzip]( The gzip header/footer code
is based on the [upstream
Hezekiah Carty later said:
I'm rather embarrassed to say that there is a bug in 0.2.0 which broke
compatibility with the `gzip`/`gunzip` command line tools. The problem was
symmetric so ezgzip could read its own output but other tools could not.

Version 0.2.1 fixes that. There is a
[PR]( in now to add the new
version to the opam repository. My sincere apologies to anyone who may have been
effected by this.

Experimented Developer/Lead Tech at Geneanet in Paris


Clément announced:
Just to let you know, I work for Geneanet, we develop a software called Geneweb
( with OCaml. We all know a bit about
functional programing but none of us are experts or even confirmed. We’re
looking for someone to come and give us a hand and become an OCaml Experimented
Dev/Tech Lead. We’re based in Paris and are looking ideally for someone who can
speak French.

Here is a (French) [Job Description](

If that caught your attention do not hesitate to send me a PM :slight_smile:

dune (jbuilder) 1.0+beta18


Rudi Grinberg announced:
On behalf of the dune development team, I’d like to announce the 18 beta.

This release brings a number of new features, but I'd like to highlight the one
feature that towers above the rest. Given a module definition that contains only
type declarations, you will able to write these type definitions in an .mli
file, while _omitting_ the customary implementation file - BUT only after
listing these so called *mli only* modules in the
`modules_without_implementation` field. We are awaiting your praise.

Apart from this, we've also changed the default to a far more quiet progress
bar. To get back the old output use the `--display=short` option. You may set
this option for all of your dune projects in the newly introduce dune config
file. Refer to the manual for details.

As usual, the change log is replicated for your convenience:

1.0+beta18 (25/02/2018)

- Fix generation of the implicit alias module with 4.02. With 4.02 it
  must have an implementation while with OCaml >= 4.03 it can be an
  interface only module (#549)

- Let the parser distinguish quoted strings from atoms.  This makes
  possible to use "${v}" to concatenate the list of values provided by
  a split-variable.  Concatenating split-variables with text is also
  now required to be quoted.

- Split calls to ocamldep. Before ocamldep would be called once per
  `library`/`executables` stanza. Now it is called once per file

- Make sure to not pass `-I <stdlib-dir>` to the compiler. It is
  useless and it causes problems in some cases (#488)

- Don't stop on the first error. Before, jbuilder would stop its
  execution after an error was encountered. Now it continues until
  all branches have been explored (#477)

- Add supprot for a user configuration file (#490)

- Add more display modes and change the default display of
  Jbuilder. The mode can be set from the command line or from the
  configuration file (#490)

- Allow to set the concurency level (`-j N`) from the configuration
  file (#491)

- Store artifacts for libraries and executables in separate
  directories. This ensure that Two libraries defined in the same
  directory can't see each other unless one of them depend on the
  other (#472)

- **Better support for mli/rei only modules (#490)**

- Fix support for byte-code only architectures (#510, fixes #330)

- Fix a regression in `external-lib-deps` introduced in 1.0+beta17
  (#512, fixes #485)

- `@doc` alias will now build only documentation for public libraries. A new
  `@doc-private` alias has been added to build documentation for private

- Refactor internal library management. It should now be possible to
  run `jbuilder build @lint` in Base for instance (#516)

- Fix invalid warning about non-existent direcotry (#536, fixes #534)

Tezos Foundation is funding "Learn OCaml" at Inria


Perry E. Metzger announced:
Interesting news. Excerpt:

> The further development and long-term success of Tezos requires a solid
education of future developers. The Tezos Foundation is therefore committed to
advance training of OCaml – the language on which the Tezos Protocol is based.
For this purpose, the Foundation supports the project «Learn OCaml» at Inria,
the French National Institute for computer science and applied mathematics. This
is the first phase of a multi-year project and collaborative relationship.

Full news release:

GCP client package


Nadeem Bitar asked:
Is anyone aware of an OCaml client package for the [google cloud
Andre Nathan replied:
I’m not aware of one, but [gapi-ocaml](
could be a starting point.

Caqti 0.9.0 release - Compatibility layer for database clients


Petter A. Urkedal announced:
I made another bugfix release (0.11.1). This only contains one fix, but I think
it was important enough, since it could lead to a dead-lock in case there were
problems with the database connection.

(On a minor note, I also have a PR to disable testing via opam due to issues
with internal dependencies. I expect to re-enable it for the next release.)



Anders Fugmann announced:
It is my pleasure to announce aws-s3 2.0.0

aws-s3 implements operations to manipulate objects in Amazons Simple Storage
Service (S3). Operations include: get, put, delete, delete_multi and ls. The
library also includes functions to get machine role and security token
(credentials) through AWS Identity and Access Management service (IAM).

Chages for this release:
- The library has been split into two libraries:
  * `aws-s3-async` for use with the Janestreets async for concurrency 
  * `aws-s3-lwt` for use with lwt for concurrency 
 - The Api has changed slightly, most significantly `put` now returns the Md5 of
   the object uploaded
- Improved error handling and retry logic
- Fix a but in `multi_delete `

The complete list of changes can be found here[1]

aws-s3 is available though opam and from github[2]



Ocaml Github Pull Requests

Gabriel Scherer and the editor compiled this list:
Here is a sneak peek at some potential future features of the Ocaml
compiler, discussed by their implementers in these Github Pull Requests.

- Add Stdlib.Float module

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