RustFest 2016 Comes to Berlin
RustFest is Europe’s first conference dedicated to the Rust programming language.
RustFest will be held in the Microsoft Atrium in Berlin, from September 17 to September 18 (2016). Microsoft, Mozilla, Ethcore, Aim, and QiTASC will act as sponsors.
Event holders will present workshops that organize a “RustBridge” for beginners in collaboration with the OpenTechSchool Berlin. There will be three topic rooms:
- Embedded- A playing field for Rust are embedded devices and the IoT. This room is dedicated to the embedded topic.
- Crypto and blockchain- This room focuses on implementations of crypto and blockchain technology.
- Low stack- In this room, attendees can build their own parser or their own language.
To learn more and sign up, head over to their site.
Subtyping in Rust and Clarke's Third Law
This is a talk about magic. In particular: Rust has subtyping, but it may not be in the place where you thought it was. My primary goal is to explain that metaphorical sleight-of-hand, in two parts. My secondary goal is to convey that most of the time you need not think about subtyping, except when doing particularly hairy data structure development where questions arise around “variance.”
Part 1 is dedicated to examples of Rust that might look like subtyping but are not. It will spend some time on how generics can be used for parametric polymorphism and how that differs from subtype polymorphism. However, most of the examples will be of things like coercions (e.g.
&[T]) and autoref/autoderef, which look very similar to subtyping, and thus require more scrutiny to differentiate them.
Part 2 is dedicated to where Rust does have subtyping: references and their lifetimes. I will describe how the partial ordering on references naturally yields a subtyping relationship. The existence of a subtyping relationship, combined with type-parametric polymorphism, implies that we sometimes* need to think about variance. I will explain the roles of covariance and invariance, putting particular focus on how the selection of covariance over invariance in some cases has caused soundness holes (or at least warts) in other languages such as Eiffel and Java.
*: “sometimes” here means either 1. when we are writing unsafe data structures or 2. when we are trying to understand certain compiler error messages. Not everyone falls into category 1, but I think everyone cares about category 2.
Felix Klock is a research engineer at Mozilla, where he works on the Rust compiler, runtime libraries, and language design. He previously worked on the ActionScript Virtual Machine for the Adobe Flash runtime. Felix obtained his PhD in Computer Science from Northeastern University, and is also one of the developers of the Larceny Scheme language runtime.