Spring is an exciting time of year in the lab as we traditionally host a lot of visitors, hold interesting events, and it provides a great opportunity to get collaborators to meet and discuss their ideas and project plans.
This week marked the start of our steady stream of visitors to the lab, and it was great to welcome both new and well-known faces to Cambridge. It’s been interesting introducing new interns to the existing group, and watching ideas develop and consolidate over time. It’s been a busy few weeks of new projects starting, new releases and updates to existing infrastructure, and our 13th compiler hacking event at the Old Library in Pembroke College provided the perfect venue and opportunity to discuss these ideas.
Progress with the internship projects is moving forward nicely, with Enguerrand close to a Ctypes-TLS implementation, Romain working hard on MrMime and the deceptively complicated world of parsing email, and Olivier deep in the compiler with his macros.
- The libtls-like interface for ocaml-tls is now almost complete, the final steps being testing the binding against various software from the OpenBSD project. Building on the Ctypes project, [Enguerrand] is planning to further improve the Reason developer experience by focussing on its interoperability with C. Exploiting the pre-existing support within OCaml via Ctypes, he hopes to extend Reason by generating OCaml bindings which will be available in the editor, with Merlin support.
- Working with email, specifically multipart and metadata, to ensure any implementation is compliant with old and new standards, proves to be a long and complicated process, and Romain has been working hard battling RFCs and bugs. He now has a prototype to test the implementation of Mr Mime and “real world email”, and is working on pretty-printing.
- Olivier is developing the modular macros work initiated by Jeremy Yallop and Leo White. Macros retain the benefits of abstraction, eliminate interpretive overhead, and are fully integrated into the OCaml language itself, ensuring generated code is well-typed. Olivier has helped to implement module lifting which allows the use of compiled external modules in static code, and is currently working on the next step of quoting and splicing the code.
- Philip Dexter from Binghamton University joins our growing group of interns for 3 months, to work on a reasoning system for approximate computations in OCaml. The system builds on the theory work at Binghampton, and will offer static error bounds and confidence intervals for computations for which a programmer can tolerate approximation. Philip is focussing on improving energy optimisation, running unikernels on small ARM devices with MirageOS.
- Outreachy: wiredsis (also known as Gina) is taking part in the Outreachy program this year, and is getting stuck into OCaml, and the Mirage implementation of Syslog. She writes excellent blog posts on her experiences, and expect to see more over the summer.
More details of their implementations, and demos will be available towards the end of their internship programs.
Our internships are possible thanks to a combination of research and industrial funding. Romain is funded through the EU FP7 User Centric Networking project (grant no. 611001).
Releases and Updates
- Native code support for multicore is here! There is a PR under review to push the multicore branch up to 4.02.2 to allow for installation of your favourite packages from [OPAM]. The goal is to benchmark this new 4.02.2 multicore version with the standard version.
- Ctypes 0.6 release with async FFI support and improved cross compilation.
- Daniel Bünzli provided us with a mass-release and update extravaganza last week, including the
fpath- all designed to work together to package and distribute OCaml software more easily and efficiently. He also released new updates for
logs, much to the delight of the community. Daniel is in Cambridge this month to work on a number of things, including Windows support for
bos, and upgrades to the Unicode libraries to the new Uchar.t type introduced in 4.03 to align with the upcoming 9.0.0 release. Check the changelogs for new feature updates for rresult, fmt and logs.
- Frederic Bour also joined us for a couple of days to talk about the recent improvements and implementations for Merlin, including the Atom integration for Reason. He’s currently working on porting Merlin to OCaml 4.03. He also demonstrated his library for an interactive text interface using Emacs, which allows you to move on from printf-debugging and replay specific parts of the program’s trace.
- testing ocaml-migrate-parsetree with `ppx_deriving_crowbar`
- Windows Unicode Support - A Bug-Fix 12 Years in the Making
- Fuzzing for CI Workflows
- Testing Your Own Fork With OCaml's GitHub CI
- Platforms, Packaging, Progress
- Merlin 3.0.0 on Windows
- A New Implementation of Git
- Major Releases of Cohttp, Conduit, DNS and TCP/IP Libraries
- OCaml 4.05.0 Released
- Intel Hyper-Threading Bug Uncovered by OCaml Developers