Antonio Verardi, Flavien Raynaud - How to write Rust instead of C, and get away with it yes, it's a
Channel: EuroPython Conference
Date: 2018-08-22

How to write Rust instead of C, and get away with it (yes, it's a Python talk)
[EuroPython 2018 - Talk - 2018-07-25 - Lammermuir]
[Edinburgh, UK]

By Antonio Verardi, Flavien Raynaud

Have you ever tried optimizing a super-slow Python application and thought: “Oh! I wish I could just write this bit it in Rust”? Well, turns out you can!
We will show you how Rust is a better alternative than C to make your programs lightning fast, and how to get away with it; without your users even noticing.

As Infrastructure Engineers at Yelp, the challenge we face everyday is: scale. Yelp is mostly a Python shop and while this is great for development velocity, our work often revolves around making Python applications run faster. Until now, we have been using different techniques: faster interpreters, or, more often, C code.

Given its safety guarantees, performance and promise of better tooling than C, we decided we had to give Rust a try. The initial results helped reinforce that there was a lot of opportunity for Rust to play an important role in our production code.

Yelp heavily relies on the Apache Avro (https://avro.apache.org/) serialization format for its internal infrastructure. During the talk, we will show how we implemented an Avro serialization/deserialization library in Rust, how we were able to call it from Python (and in theory from any other language) with very little code, using tools such as cbindgen (https://github.com/eqrion/cbindgen/), CFFI (https://cffi.readthedocs.io/en/latest/) and Milksnake (https://github.com/getsentry/milksnake/).

This talk would outline how easy it is to write performant code in a language like Rust and call it from Python applications without users even realizing it, making this a great solution for production services.



License: This video is licensed under the CC BY-NC-SA 3.0 license: https://creativecommons.org/licenses/by-nc-sa/3.0/
Please see our speaker release agreement for details: https://ep2018.europython.eu/en/speaker-release-agreement/