Opening Keynote

by Aaron Turon and Niko Matsakis

Aaron Turon and Nika Matsakis photo by: [@eigenrick](https://twitter.com/eigenrick)
  • 175 new features since 1.0

New features underway

  • Specialization
  • impl Trait
  • The ? operator
  • Macro 1.1 offers custom derive

Compiler internals redesigned

  • Mir in orbit
  • Dynamic drop flags
  • Incremental comp
  • Error messages

Challenges in the Rust survey

  • 1 in 4 Learning curve (First 3 weeks is rough)
  • 1 in 7 More libraries
  • 1 in 9 “Maturity”
  • 1 in 19 IDEs
  • 1 in 20 Compiler Perf

Speed and reliability are core values of rust, but for 2017, productivity should as well.

Potential areas for new/improved libs

Rust on the server

  • Futures for async I/O
  • Tokio for protocols
  • Middleware ecosystem

Parallelism & Concurrency

  • Deliver on Rust’s potential

Serialization

  • Stable serde

Rust numerics/ML

  • Establish foundations?

serde is pronounced serdy not serd.

Discoverability

A tricky balance:

Make it easy to find the “best”
… but allow newcomers to take root
… but incentivize the right things

Tools

  • rustup
  • NDK support
  • Emscripten/wasm
  • cargo
  • Private/shared
  • Build system integration
  • rustfmt
  • Strike team for the format
  • The bike shed of bike sheds

Racer for code completion in editors.


The Illustrated Adventure Survival Guide

by Liz Baillie

Adventure Survival Guide photo by [@QEDunham](https://twitter.com/QEDunham)
  • Classes vs Traits
  • Error handling
  • Stack & Heap

Integrating Rust and VLC

by Geoffroy Couprie

Integrating Rust and VLC photo by [@nathanaeljones](https://twitter.com/eigenrick)

VLC has C code and is now using Rust to replace the C code.

Autotools with Rust.


The RustPlay Classifier

by Suchin Gururangan and Colin O’Brien

The RustPlay Classifier

Technical Debt in Data Science

  • Siloed teams
  • Pipeline junkgles
  • Unscalable Experiments
  • …and all the normal engineering tech debt

“A mature system might end up being (at most) 5% learning code.”

Service oriented Machine Learning

  • Data Collection
  • Data Inventory
  • Feature Extraction
  • Model Generation
  • Prediction

Vagga: a containerization tool without daemons
Rayon: A data parallelism library for Rust


Using Generics Effectively

by Without Boats

Using Generics Effectively

How will I know when it’s a good idea to use a Trait or an Enum?

A Pattern Language Book

“Design patterns are a sign your language itsn’t powerful enough.”

Patterns don’t have to be template of classes.


Back to the Futures

by Alex Crichton

Back to the Futures

What’s a Future?

  • DB query
  • RPC Request
  • Timeouts
  • CPU Intensive Work
  • Socket Readiness

The fastest server

  • mio is state of the art
  • Primarily using state machines
  • Avoids unnecessary allocation/synchronization
  • Futures must “compile down” to the same code

Zero-cost futures

  • No allocations in combinators
  • No synchronization in combinators
  • One dynamic dispatch per event
  • One allocation per connection

Tokio: Asynchronous I/O for Rust

Back to the Futures

A Modern Editor in Rust

by Raph Levien

The Xi Editor: A modern editor with a backend written in Rust

A Modern Editor in Rust

Main goal: performance

How to make a fast editor:

  • Use a fast language
  • Exploit multicore parallelism
  • Use advanced algorithms and data structures
  • Ropes
  • Minimal incremental algorithms
  • Asynchrony
  • Don’t block slow operations

Operation Transformation

  • Request to plugin is async
  • User may edit while plugin is thinking
  • Transform results from plugin

Xi-rope internals

  • Rope is a specialization of a generic tree
  • Parametrized on Leaf and NodeInfo
  • 3 different specializations of generic tree
  • Rope (Leaf = String)
  • Line breaks (Lead = vec of line breaks offsets)
  • Rich text spans (Leaf = vec of spans; interval)

Xi-rpc today

  • JSON-RPC
  • Why?
  • JSON implementations are fast
  • An easy dep to satisfy
  • Threaded design
  • Separate thread blocking on input
  • Inter-thread communication with channels
  • Arc<Mutex<>> to acquire state.

RFC: In Order to Form a More Perfect union

by Josh Triplett

RFCs

Linux Kernal Virtual Machine
/dev/kvm

Floppy drive, vm security issue.

Unions

  • Multi storage variables
  • Different types
  • Overlapping types

Rust RFC

  • Community process
  • Lightweight but not to light
  • Shepard
  • Rust team makes approval decisions

#[repr(C)] struct

Crater takes a proposed change to the language, loads the entire cargo env base, and checks for breakage.

Improvements through the RFC process by way of multiple person interaction.


Closing Keynote - Systems Programming with Rust

by Julia Evans

Systems Programming photo by [@TedMielczarek](https://twitter.com/TedMielczarek)

Rules of programming experiments

  • it doesn’t have to be good
  • it doesn’t have to work
  • you have to learn something
Systems Programming photo by [_lizbaillie](https://twitter.com/_lizbaillie)

libdrawf

  • no idea how it works
  • terrible API
  • slow
  • linker problems

Gimli: A lazy, zero-copy parser for the DWARF debugging format


RustConf 2016 Conclusion

The year the Rust conferences started! The overall vibe was excellent. Everyone was just excited to be there. For me personally the hallway track was very different then the conferences I’m used to. I’m used to hallway chat about apps and gems and web development. The general chatter here was system performance which is out of my normal space. So I learned a lot. As well as sat in on conversations I considered a little over my head.

The workshops on Friday were great as well. I participated in the Intermediate workshop. Although I really wish I could have grabbed some pieces of both the intermediate and advanced. I have a pretty good grasp on lifetimes, but do frequently run in to problems with lifetimes and structs. Where as in the intermediate I had a good concept of Traits but run into problems with generics. So both workshops had a little something I wanted but decided to go to the intermediate workshop and was not disapointed. Check out some of my notes.