It’s the ever-exciting week of the International Conference on Functional Programming again in Sweden, and this time OCaml Labs has a variety of talks, tutorials and keynotes to deliver throughout the week. This post summarises all them so you can navigate your way to the right session. Remember that once you register for a particular day at ICFP, you can move between workshops and tutorials as you please.
Quick links to the below in date order:
- Talk on Coeffects, a Calculus of Context-dependent Computation, Monday 1st September, 16:30-17:20, ICFP Day 1.
- Talk on Modular Implicits, Thu 4th September, 14:25-14:50, ML Workshop.
- Talk on Module Aliases, Thu 4th September, 09:35-10:00, ML Workshop.
- Talk on Metaprogramming in the Mirage OS, Thu 4th September, 14:50-15:10, ML Workshop.
- Keynote talk on Unikernels, Fri 5th September, 09:00-10:00, Haskell Symposium.
- Talk on Multicore OCaml, Fri 5th September, 09:10-10:00, OCaml Workshop.
- Tutorial on OCaml and JavaScript Programming, Fri 5th September, 09:00-12:00, CUFP Tutorial Day 2.
- Talk on 0install binary distribution, Fri 5th September, 10:25-10:50, OCaml Workshop.
- Talk on Transport Layer Security in OCaml, Fri 5th September, 10:50-11:20, OCaml Workshop.
- Talk/Demo on the OCaml Platform, Fri 5th September, 12:00-12:30, OCaml Workshop.
- Poster and Demo of the Irmin branch-consistent store, Fri 5th September, 15:10-16:30, OCaml/ML Workshop.
- Social Events
Language and Compiler Improvements
The first round of talks are about improvements to the core OCaml language and runtime.
» Modular implicits
Leo White and Frederic Bour have been taking inspiration from Scala implicits and Modular Type Classes by Dreyer et al, and will describe the design and implementation of a system for ad-hoc polymorphism in OCaml based on passing implicit module parameters to functions based on their module type.
This provides a concise way to write functions to print or manipulate values generically, while maintaining the ML spirit of explicit modularity. You can actually get get a taste of this new feature ahead of the talk, thanks to a new facility in OCaml: we can compile any OPAM switch directly into an interactive JavaScript notebook thanks to iocamljs by Andy Ray.
» Multicore OCaml
Currently, threading in OCaml is only supported by means of a global lock, allowing at most one thread to run OCaml code at any time. Stephen Dolan, Leo White and Anil Madhavapeddy have been building on the early design of a multicore OCaml runtime that they started in January, and now have a (early) prototype of a runtime design that is capable of shared memory parallelism.
- Abstract
- Date: 09:10-10:00, OCaml Workshop, Fri Sept 5th
» Type-level Module Aliases
Leo White has been working with Jacques Garrigue on adding support for module aliases into OCaml. This significantly improves the compilation speed and executable binary sizes when using large libraries such as Core/Async.
- Abstract
- Better Namespaces through Module Aliases
- Date: 0935-1000, ML Workshop, Thu Sep 4th.
» Coeffects: A Calculus of Context-dependent Computation
Alan Mycroft has been working with Tomas Petricek and Dominic Orchard on defining a broader notion of context than just variables in scope. Tomas will be presenting a research paper on developing a generalized coeffect system with annotations indexed by a correct shape.
- Paper
- Date: 16:30-17:20, ICFP Day 1, Mon Sep 1st.
Mirage OS 2.0
We released Mirage OS 2.0 in July, and there will be several talks diving into some of the new features you may have read on the blog.
» Unikernels Keynote at Haskell Symposium
Since MirageOS is a unikernel written entirely in OCaml, it makes perfect sense to describe it in detail to our friends over at the Haskell Symposium and reflect on some of the design implications between Haskell type-classes and OCaml functors and metaprogramming. Anil Madhavapeddy will be doing just that in a Friday morning keynote at the Haskell Symposium.
- Haskell Symposium Program
- Date: 0900-1000, Haskell Symposium, Fri Sep 5th.
» Transport Layer Security in OCaml
Hannes Menhert and David Kaloper have been working hard on integrating a pure OCaml Transport Layer Security stack into Mirage OS. They’ll talk about the design principles underlying the library, and reflect on the next steps to build a TLS stack that we can rely on not to been more insecure than telnet.
- Abstract
- Date: 10:25-11:20, OCaml Workshop, Fri Sep 5th.
Hannes will also continue his travels and deliver a couple of talks the week after ICFP on the same topic in Denmark, so you can still see it if you happen to miss this week’s presentation:
- 9th Sep at 15:00, IT University of Copenhagen (2A08), details
- 11th Sep Aarhus University, same talk (time and room TBA)
» Irmin: a Branch-consistent Distributed Library Database
Irmin is an OCaml library to persist and synchronize distributed data structures both on-disk and in-memory. It enables a style of programming very similar to the Git workflow, where distributed nodes fork, fetch, merge and push data between each other. The general idea is that you want every active node to get a local (partial) copy of a global database and always be very explicit about how and when data is shared and migrated.
This has been a big collaborative effort lead by Thomas Gazagnaire, and includes contributions from Amir Chaudhry, Anil Madhavapeddy, Richard Mortier, David Scott, David Sheets, Gregory Tsipenyuk, Jon Crowcroft. We’ll be demonstrating Irmin in action, so please come along if you’ve got any interesting applications you would like to talk to us about.
» Metaprogramming with ML modules in the MirageOS
Mirage OS lets the programmer build modular operating system components using a combination of OCaml functors and generative metaprogramming. This ensures portability across both Unix binaries and Xen unikernels, while preserving a usable developer workflow.
The core Mirage OS team of Anil Madhavapeddy, Thomas Gazagnaire, David Scott and Richard Mortier will be talking about the details of the functor combinators that make all this possible, and doing a live demonstration of it running on a tiny ARM board!
- Abstract
- Date: 14:50-15:10, ML Workshop, Thu Sep 4th 2014.
» CUFP OCaml Language Tutorial
Leo White and Jeremy Yallop (with much helpful assistance from Daniel Buenzli) will be giving a rather different OCaml tutorial from the usual fare: they are taking you on a journey of building a variant of the popular 2048 game in pure OCaml, and compiling it to JavaScript using the js_of_ocaml compiler. This is a very pragmatic introduction to using statically typed functional programming combined with efficient compilation to JavaScript.
In this tutorial, we will first introduce the basics of OCaml using an interactive environment running in a web browser, as well as a local install of OCaml using the OPAM package manager. We will also explore how to compile OCaml to JavaScript using the js_of_ocaml tool.
The tutorial is focused around writing the 2048 logic, which will then be compiled with js_of_ocaml and linked together with a frontend based on (a pre-release version of) Useri, React, Gg and Vg, thanks to Daniel Buenzli. There’ll also be appearances from OPAM, IOCaml, Qcheck and OUnit.
- Tutorial Code
- Task Sheet
- Date: 09:00-12:00, CUFP Tutorial Day 2, Fri Sep 5th 2014.
There will also be a limited supply of special edition OCaml-branded USB sticks for the first tutorial attendees, so get here early for your exclusive swag!
» The OCaml Platform
The group here has been working hard all summer to pull together an integrated demonstration of the new generation of OCaml tools being built around the increasingly popular OPAM package manager. Anil Madhavapeddy will demonstrate all of these pieces in the OCaml Workshop, with guest appearances of work from Amir Chaudhry, Daniel Buenzli, Jeremie Diminio, Thomas Gazagnaire, Louis Gesbert, Thomas Leonard, David Sheets, Mark Shinwell, Christophe Troestler, Leo White and Jeremy Yallop.
The OCaml Platform combines the OCaml compiler toolchain with a coherent set of tools for build, documentation, testing and IDE integration. The project is a collaborative effort across the OCaml community, tied together by the OCaml Labs group in Cambridge and with other major contributors.
- Abstract
- Platform Blog
- Date: 12:00-12:30, OCaml Workshop, Fri Sep 5th 2014.
» The 0install Binary Installation System
Thomas Leonard will also be delivering a separate talk about cross-platform binary installation via his 0install library, which works on a variety of platforms ranging from Windows, Linux and MacOS X. He recently rewrote it in OCaml from Python, and will be sharing his experiences on how this went as a new OCaml user, as well as deliver an introduction to 0install.
- Abstract
- Date: 10:25-10:50, OCaml Workshop, Fri Sep 5th 2014.
» Service and Socialising
Heidi Howard and Leonhard Markert are acting as student volunteers at this years ICFP, and assisting with videoing various workshops such as CUFP Tutorials, Haskell Symposium, the Workshop on Functional High-Performance Computing and the ML Family Workshop. Follow their live blogging on the Systems Research Group SysBlog and leave comments about any sessions you’d like to know more about!
Anil Madhavapeddy is the ICFP industrial relations chair and will be hosting an Industrial Reception on Thursday 4th September in the Museum of World Culture starting from 7pm. There will be wine, food and some inspirational talks from the ICFP sponsors that not only make the conference possible, but provide an avenue for the academic work to make its way out into industry (grad students that are job hunting: this is where you get to chat to folk hiring FP talent).
This list hasn’t been exhaustive, and only covers the activities of my group in OCaml Labs and the Systems Research Group at Cambridge. There are numerous other talks from the Cambridge Computer Lab during the week, but the artistic highlight will be on Saturday evening following the CUFP talks: Sam Aaron will be doing a live musical performance sometime after 8pm at 3vaningen. Sounds like a perfect way to wind down after what’s gearing to up to be an intense ICFP 2014. I look forward to seeing old friends and making new ones in Gothenburg soon!