OCaml Weekly News

Previous Week Up Next Week

Hello

Here is the latest OCaml Weekly News, for the week of July 02 to 09, 2019.

Table of Contents

ppx_show: a show deriver based of ppxlib (works on 4.08.0)

Thierry Martinez announced

I am pleased to announce that ppx_show is now available in opam. ppx_show reimplements the show plugin provided by ppx_deriving as a ppxlib plugin. In particular, ppx_show is available with OCaml 4.08.0 (and is available on all OCaml versions compatible with ppxlib, starting from 4.04.1).

https://gitlab.inria.fr/tmartine/ppx_show/

See @arbipher's related question.

Library for GUI?

Deep in this thread, sanette announced

In the last few years I have been developing a GUI for (and in) ocaml, as a hobby project. Finally, I have made the current state of this thing (called "bogue") available on github, see

https://github.com/sanette/bogue

Just in case some of you are interested in having a look. Comments welcome, of course.

sanette later added

I just made a video to show some of bogue's features:

https://youtu.be/isFLxnDooL8

XMPP room (muc) for OCaml

Orbifx announced

I'm not aware of any other XMPP rooms for OCaml, so I've made one:

<xmpp:ocaml@conference.orbitalfox.eu?join>

Come join if you want to hang out with OCamlers.

Ideas & thoughts are welcome!

obus 1.2.0

Freyr666 announced

I'm pleased to announce a new obus release.

What is obus

A pure OCaml implementation of the D-Bus IPC protocol, heavily used in Freedesktop/linux world [1].

Notable changes

  • obus is being transitioned to ocaml-community
  • switched to dune
  • camlp4 parts were replaced with menhir
  • camlp4 syntax extension was replaced with the ppx-based ones

This release shouldn't break anything (safe for the syntax extension).

Special thanks to @steinuil and @pukkamustard for doing most of the "dunification" work.

Thoughts about the future

So after pondering on obus refactoring I came to the following ideas, which I would like to discuss:

  1. IDL, an intermediate language used for the D-Bus interfaces' description doesn't worth the effort and is better to be dropped.

    D-Bus uses XML for such a purpose and there is no merit in having an additional language doing the same (with minor improvements like not being XML-abomination and the ability to define numeric types as OCaml variants). It makes sense to generate OCaml files from the XML directly and don't use any obus-specific additional language.

  2. ppx syntax extensions could also be dropped since they don't do much stuff. Also I haven't seen anybody using them, but I could be wrong.

    So it's better to either improve it (maybe turn IDL language into simple ppx annotations) or drop it completely. Personally, I like the idea of not using ppx because they are slowing things down making the project lag behind ocaml releases, and making things fragile in general.

  3. obus should be split into proper subpackages, like obus, obus-network-manager, obus-notifications etc

So since it's a community project from now on, it would be great to hear what obus users and contributors are thinking about all forementioned. cast @diml @talex5 @perry @johnelse

[1] https://www.freedesktop.org/wiki/Software/dbus/

PSA: ocaml/opam2 docker images updated to 4.08.0 release

Anil Madhavapeddy announced

Another update: the base distributions of the ocaml/opam2 images have also been updated to support Fedora 30, Alpine 3.10, OpenSUSE Leap 42.1 and also the impending Debian 10 (Buster) release. We have also deprecated Fedora 27/28, Ubuntu 14.04 and Alpine 3.8 in favour of the newer releases. The 4.09 switches also reflect the recently released 4.09+beta1 snapshot.

There have been a few requests for 'slimmer' images that use up less disk-space. The reason the existing ones are so big is that each container has multiple precompiled compilers (either multiple major releases, or feature variants such as flambda or afl). This is really useful for continuous integration, but is less ideal if you just want a quick OCaml compiler container to build some software on your QubesOS laptop.

In order to accommodate both usecases, I'm going to resurrect the ocaml/opam containers for the "slim" usecase. The containers in ocaml/opam are currently deprecated while we did the opam2 release, but now that is out of the way we can remove the opam1 containers. Over the next few months, we'll have ocaml/opam containers with minimally sized toolchains for production compilation use, and the ocaml/opam2 containers will continue to be maintained unchanged for CI use.

As always, more feedback or usecases welcome to help guide the evolution of this infrastructure.

Other OCaml News

From the ocamlcore planet blog

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.