My Experience With Tarides at ICFP 2023!

by Shakthi Kannan on Feb 21st, 2024

ICFP 2024 will be upon us sooner than you might think! The call for papers closes on the 28th of February, and I wish everyone submitting good luck. Hopefully I will see you around Milan this upcoming September (at the OCaml Workshop, of course!) and to stave off your ICFP cravings until then, enjoy my account of last year's conference.

The 28th ACM SIGPLAN International Conference on Functional Programming (ICFP) was held in Seattle, WA, US between 4-9 September 2023. Tarides was a silver sponsor for the conference and the Programming Languages Mentoring Workshop (PLMW). In this post, I want to share my personal experience at the conference.

Exploring Conference Activities

On the first workshop day, I attended the Functional High-Performance and Numerical Computing (FHPNC) workshop organised by Gabriele Keller (Utrecht University) and Sam Westrick (Carnegie Mellon). The workshop has been part of ICFP since 2021, and there were several interesting talks on deep learning, efficient GPU implementation, performance versus correctness, and Multicore parallelisation.

The conference proceedings began in earnest on the second day, with the keynote speech delivered by Dr Anil Madhavapeddy on "Programming for the Planet". Using satellite and ground sensing data to assess the globe’s health, combined with maps and illustrations, Anil explained the interplay between functional programming and biodiversity. The OCaml libraries used in the Geographic Information Systems (GIS) applications are geocaml and carboncredits

A slide from Anil's presentation showing a satellite view of a forest with some highlighted green areas. On the left, a toolbar indicates different sliders that the user can press to get different views of the satellite image. Views include: pixel pairings, project area, leakage area, and trajectories. 'Project area' is currently active. Image credit: Patrick Ferris

In the afternoon, I attended the second keynote by Andreas Rossberg on "As low-level as possible, but no lower", where he explained the history of the WebAssembly (Wasm) project, the current development efforts, and their future roadmap. It was interesting to discover the use and impact of OCaml in the Wasm project.

I was doing Tarides booth activity on all three days at the conference, and it was good to have met many students and faculty interested in working with OCaml. There were a number of industry folks who learnt about Tarides, and the work we do with the OCaml compiler, platform and ecosystem. As always, we had swag consisting of t-shirts, brochures, tags, and socks for the participants. We did see an interest in OCaml Scientific Computing and SpaceOS from people who visited our booth.

On the fourth day, I participated in the Tutorial on porting Lwt applications to OCaml 5 and Eio organised by Thomas Leonard and Jonathan Ludlam. Eio provides easy-to-read code, handy troubleshooting diagnostics, and solid performance. You can use an intermediate Lwt_eio compatibility package to ensure that the transition is smooth before completely switching to Eio. The Lwt to Eio tutorial is available to help you port an OCaml 4 program to OCaml 5 and Eio.

The OCaml Workshop

On the last day of the conference, I attended the sessions at the OCaml workshop. Thomas Leonard gave a wonderful overview on Eio 1.0 - Effects-based IO for OCaml 5. Eio provides an effects-based direct-style IO for OCaml 5, which has Multicore support and uses lock-free data structures and modular programming. An experience report in migrating from OCaml 4 to 5 was also shared along with benchmark results for comparison.

Olivier Nicole and Fabrice Buroro shared their knowledge in the Runtime Detection of Data Races in OCaml with ThreadSanitizer talk. With parallel code, it is challenging to detect data race bugs. The ThreadSanitizer library provides the instrumentation and tooling to reliably detect such data races at runtime. A blog post on using ThreadSanitizer in OCaml is also available on the Tarides website.

The Building a lock-free STM for OCaml talk was presented by Vesa Karvonen. This talk introduced the kcas library which provides an efficient, lock-free, and composable software transactional memory for OCaml. Vesa started with the anatomy of a transaction and then explained kcas' agnostic scheduling, interfaces, atomic guarantees, and performance optimisation of the implementation. The presentation slides are available online.

A slide from Vesa's presentation showing a diagram of the 'Verify' process.

Thibaut Mattio presented The state of the OCaml Platform 2023 reflecting the progress made since the release of opam 1.0. The Dune project has become the primary build system tool for the OCaml ecosystem. He mentioned the development efforts and support for the OCaml Language Server Protocol (LSP). Thibaut also shared the now adopted OCaml Platform Roadmap and plan for the coming years, expressing our wish to continue the engagement with the community for feedback and to work closely with the Platform tool maintainers and industrial users of OCaml.

There were of course many other incredibly interesting presentations at ICFP. I recommend checking out the entire program for the OCaml workshop, as well Anil Madhavapeddy's keynote on using functional programming to help the planet, and Andreas Rossberg's keynote on Wasm. It's especially interesting to note the role that OCaml plays in both of these important projects.

Until Next Time!

Since the big announcement of Multicore OCaml at ICFP 2022 in Ljubljana, Slovenia, we have observed a growing interest in OCaml, and we hope to continue this momentum to reach out to the larger community. We encourage you to review the tutorials, presentations, and libraries for yourself. Reach out to us on OCaml Discuss with your feedback and questions, or contact us directly on our website. You can also follow us on X and LinkedIN.

I would like to thank Tarides for sponsoring my travel, and I look forward to seeing you in Milan, Italy for ICFP 2024!