OCaml Weekly News

Previous Week Up Next Week


Here is the latest OCaml Weekly News, for the week of December 17 to 31, 2019.

Sorry for the hiatus last week, I was away with no internet access. Happy new year!

Table of Contents

Internships at Be Sport (OCaml, Ocsigen)

Be Sport announced

Be Sport currently has several open internship positions for OCaml developers.

Keywords: OCaml, Ocsigen, Mobile app development, Web, Database, Sport, Social networks

Be Sport develops the first global platform dedicated to sport, in collaboration with prominent actors of sport in France and in the world. All our development is done in OCaml. Our Web and mobile apps (iOS, Android) are developed as a multi-tier app using the Ocsigen framework. Our premises are located in the center of Paris.

Please contact me for more information.

ocaml-lsp preview

Rudi Grinberg announced

I'm excited to announce ocaml-lsp. This project contains an implementation of an LSP server for the OCaml language. The current implementation piggy backs on the widely successful merlin tool to provide completion & type inference. In the future, we'd like to use all other essential tools such as ocamlformat, odoc, dune to provide more functionality in your editors.

For now, the project isn't yet available on opam as we're still polishing some rough edges in the release process. Nevertheless, I invite all brave souls who are ready to experiment to give this lsp server a try. Your feedback & contributions are most welcome :slight_smile:

UnixJunkie asked and Anton Kochkov replied

This project looks nice.

If I am an Emacs or Vi user, can I take advantage of an LSP server?

Or, is this only for some new editors like Atom or VScode?

@UnixJunkie of course! That's the whole point of this tooling.

For Vim you can choose between:

I am not an Emacs expert, but there is amazing LSP integration too:


Pau Ruiz Safont said

Neovim 0.5.0 (now pre-released) has native LSP support as well: https://github.com/neovim/neovim/pull/11336

Not sure how well integrated is it going to be with various plugins (example)

Anton Kochkov added

NeoVim 0.5.0 will also include the tree-sitter parser for syntax highlighting, which will allow way better coloring. And tree-sitter already has OCaml grammar, so implementing semantics-aware syntax highlighter will be easier. But I expect the support more or less ready for external contributions only in 0.6.0, sadly. Integrating the tool with something like GitHub Semantic (Haskell alert) will greatly improve OCaml experience on GitHub too, see the corresponding issue.

Pieter Goetschalckx said

The next step for Semantic support is documented here, but I'm working on some improvements of the tree-sitter parser first.

Carlos D'Agostino said

For Emacs there is also eglot: https://github.com/joaotavora/eglot – As the README says, it's quite minimalist compared to lsp-mode.

Reproducible builds with OCaml / opam and MirageOS

Hannes Mehnert announced

I wrote up recent developments about reproducible builds with opam – including some tooling https://hannes.nqsb.io/Posts/ReproducibleOPAM

Thanks to everyone involved in the effort to get OCaml and opam deterministic

The journey is not yet finished, we're in a pretty good shape, but further testing and tooling is needed to expose the information "is my library reproducible?" to OCaml developers.

I'm interested in feedback, please let us discuss this further here in case you're interested. :D

Anil Madhavapeddy added

An absolutely amazing cross-layer effort; well done on pushing all this through @hannes! I really enjoyed reading the minutes of the Paris summit last year: https://reproducible-builds.org/events/paris2018/report/#Toc11681_331763073

the OCaml Software Foundation

Continuing this thread, gasche announced

A small report on the actions that we launched since my initial posting.

(There was also some progress on the "enabling individual donations" front, maybe something will be possible in the next few months. Don't start holding your breath yet.)

  • We are funding the "Leafs" research project in Lisbon to develop teaching material for theoretical-computer-science courses (automata and stuff) in OCaml, with interactive visualization components, some of which will hopefully be integrated in the Learn-OCaml platform over the course of 2020/2021.
  • We provide funding for the Gallium/Cambium research team at INRIA Paris (France), an active place for OCaml-related fundamental research (some of the team members are also very active on the implementation front, for example Xavier Leroy, Damien Doligez, Florian @octachron Angeletti, and S├ębastien Hinderer).
  • We sponsor the SWERC programming contest for 2019-2020, and in return the contest added OCaml to the list of available languages. Most participants to these competitive-programming events use C++, but we talked to past and active participants who said they would be interested in using OCaml on some problems with more symbolic computation.
  • Over the course of the 4.10 release process, we are funding work by @kit-ty-kate to have a wide look at the ecosystem and improve compatibility with the upcoming release. (I believe that the upstream PR #9176 is a first result of this effort.)
  • In reaction to the Discourse thread Suggestions for OCaml documentation, we are planning to fund further work by @sanette to experiment with the HTML rendering of the OCaml manual, in coordination with @octachron to try to upstream improvements when reasonably possible.
  • We got in touch with the Owl project to sponsor a development sprint in 2020.

soupault: a static website generator based on HTML rewriting

Daniil Baturin announced

Made a 1.7.0 release.

First improvement is that you now can pipe the content of any element through any external program with preprocess_element widget (PR by Martin Karlsson). For example, insert inline SVG versions of all graphviz graphs from <pre class="language-graphviz"> and also highlight the Dot source itself with highlight (or any other tool of your choice):

  widget = 'preprocess_element'
  selector = 'pre.language-graphviz'
  command = 'dot -Tsvg'
  action = 'insert_after'

  after = "graphviz-svg"
  widget = "preprocess_element"
  selector = '*[class^="language-"]'
  command = 'highlight -O html -f --syntax=$(echo $ATTR_CLASS | sed -e "s/language-//")'
  action = "replace_content" # default


Two other improvements are multiple index "views" and default value option for custom index fields, like

  category = { selector = "span#category", default = "Misc" }

Release of owl-symbolic 0.1.0

jrzhao42 announced

We are please to release owl-symbolic 0.1.0. It fully supports defining a computation graph and running on accelerators (TPU/GPU) via ONNX specification. It also aims to support converting an Owl computation graph into symbolic representation and then to ONNX model. The module also has some cool features like converting a computation graph into LaTeX string, and then showing the result in a web UI, etc.

We implements a full neural network module atop of it (the interface of which is basically identical to that in Owl's core). It turns out that the design of owl-symbolic is so nice that the DNN module only has 179 LOC! You can easily define popular DNN architectures such as Inception, ResNet, VGG, etc. just like in Owl.

This is still an on-going project and a lot remains to be done. Despite its name, owl-symbolic does not do any useful computer algebra (CAS) stuff at the moment, but CAS is indeed on our TODO.

For more information, please check out the related section in Owl tutorial book.


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.