Week 50: what's everyone hacking on this week?

I’m off to the Caml Consortium meeting in Paris to discuss the state of OCaml with the bigger industrial users!

Meanwhile, safe-string continues to improve, but more work is needed: http://obi.ocamllabs.io/triage.html Help welcome :slight_smile:

I should be ready to publish the https://github.com/avsm/ocaml-yaml bindings this week – if anyone wants to try them earlier with their projects ahead of a release, let me know :slight_smile:


At the 4th MirageOS hack retreat ending last week I worked on my ocaml-ssh-agent protocol implementation. This week I want to polish it some more, write some documentation, and hopefully make a release. Unfortunately I am no longer on holidays so I have less time for hacking on my (OCaml) projects :frowning:


After two weeks of playing with GADTs, today, I published my proof-of-concept compiler localization plugin (babilim) together with its companion compiler patch(GPR#1523) which handle the internationalization of the compiler error and warning messages. Currently, there is only a bad French translation available, but anyone willing to try its hand at another translation is more than welcome. In particular, it would be nice to check that the exposed message chunks are coarse enough to enable transtlation outside of the indo-european language family . Unfortunately, at this point, I cannot guaranteed that this work will not be in vain.


After an hour or three at the pub I managed to write tests and uncover some (embarrasing) bugs that I then fixed \o/ Surprisingly productive!


That is extremely cool, well done!

After a hectic (code-wise) week in Marrakesh for the MirageOS retreat, and after spending the weekend trying to catch up with the lost sleep, I’m now back in the trenches, trying to beat the many new ideas into existence (and shape).

A quick trip report (in terms of code):

  • I came to Marrakesh hoping to persuade someone else to write a Qubes-compatible password manager using my mirage-framebuffer library. When that utterly selfish quest for (feedback from) users did not seem to go so well, I started work on a library to enable said someone else to do write such an application without having to deal with cryptography and serialization. Maker and I had also had a fun night working on an example cmdliner-application using the library. The results are available here: https://github.com/cfcs/passmenage - I maintain hope that someone will take up the mantle and write the graphical application, but sadly both mirage-framebuffer and notty are lacking widget libraries, so there’s still some work to be done in this regard. Halfdan started working on sprites for a set of UI widgets that we can hopefully start using in the new year.

  • I took some time to track down a few bugs in mirage-framebuffer, most notably window resizing on the QubesOS target now works, after a lot of debugging and some helpful ideas from @yomimono .

  • Talking to Holger Levsen I was inspired to try to add handling of user-supplied rulesets to @talex5’s qubes-mirage-firewall. Again @yomimono came to the rescue :muscle: and walked me through the API jungle required to use mirage-block, and fixed a bug, so I got a basic prototype working using yojson to parse the rules. We also discussed various syntax/grammars, and hopefully we can over the next few weeks come up with something that will resemble an existing firewall system and make the users’ eyes bleed less. Having the rules specified outside of the code will enable binary distribution of the firewall, making it available to more users, and the Reproducible Builds project to cover it in their work. I intend to work more on that the coming weeks and hope to have a much nicer patchset in time for the 34th CCC at the end of the year.

  • I also had good discussions with Christiano and @reynir regarding awa-ssh and ocaml-ssh-agent and am enthusiastic about bringing that to the Qubes users in the form of a drop-in replacement for qubes-app-split-ssh in the coming year.

  • Lastly I finally got around to setting up Solo5 (with some help from @hannes), and I found my conversations with the authors (who were present) enlightening. Once I had a better understanding of the architecture and the scope of the project we talked a great deal about security, about various memory-corruption attacks & their mitigation, and I am excited about the prospect of a hardened deployment target for security-critical unikernels in the upcoming year.

It was a really nice and very productive event for me, receiving tons of good tips and participating in great conversations, and I’m eager to read about the experiences of other attendees. It was great to see old friends again, make new friends, and to put some faces to yet more github handles and email addresses. :slight_smile:

  1. Waiting review on extending OCaml’s open PR (is my implementation this bad?).
  2. Start working empty variants again. Discuss the possibility of empty record with yallop.
  3. Clean up some unfinished works before end of this year

Managed to implement most of the webassembly cmm backend. I still need to do more extensive testing, but it’s looking quite promising so far (famous last words). Note that this is only cmm, and does not involve linking, GC, or any other C based code. So there is still enough work beyond this. I’m also very new at this, so would love to have feedback.

And finally managed to release ocaml-gist: Ocaml-gist 0.0.1


I just released a candidate for Logarion which can generate static websites.

Announced here: Logarion - static website generation