Shipping a stable compiler every six weeks RustFest Barcelona, - - PowerPoint PPT Presentation

shipping a stable compiler every six weeks
SMART_READER_LITE
LIVE PREVIEW

Shipping a stable compiler every six weeks RustFest Barcelona, - - PowerPoint PPT Presentation

Shipping a stable compiler every six weeks RustFest Barcelona, November 10th 2019 Pietro Albini Rust Infrastructure team co-lead Rust Release and crates.io teams member Rust Security Response WG member github.com/pietroalbini


slide-1
SLIDE 1

Shipping a stable compiler every six weeks

RustFest Barcelona, November 10th 2019

slide-2
SLIDE 2

Pietro Albini

Rust Infrastructure team co-lead Rust Release and crates.io teams member Rust Security Response WG member github.com/pietroalbini www.pietroalbini.org

slide-3
SLIDE 3

Rust 1.39.0 is out!

Released on November 7th, 2019.

slide-4
SLIDE 4

Rust 1.38.0

Released on September 26th, 2019. 114,458 lines added and 91,886 lines removed. 5 regressions reported after the release (2 of them broke valid code).

slide-5
SLIDE 5

Rust 1.37.0

Released on August 15th, 2019. 83,009 lines added, and 56,658 lines removed. 3 regressions reported after the release (all of them broke valid code).

slide-6
SLIDE 6

Rust 1.36.0

Released on July 4th, 2019. 69,881 lines added, and 66,425 lines removed. 4 regressions reported after the release (2 of them broke valid code).

slide-7
SLIDE 7

Why do we have this schedule? How do we prevent regressions?

slide-8
SLIDE 8

Why do we have this schedule?

slide-9
SLIDE 9

It's unusual in the compiler world.

Python 18 months C/C++ (GCC) 1 year Python* 1 year PHP 1 year Java 6 months C/C++ (clang) 6 months JS (Chrome) 6 weeks JS (Firefox) 6 weeks Rust 6 weeks JS (Firefox)* 4 weeks *: new schedule, planned to be used in the near future

slide-10
SLIDE 10

No pressure to ship.

slide-11
SLIDE 11
slide-12
SLIDE 12

Long release cycles don't work for us.

slide-13
SLIDE 13
slide-14
SLIDE 14
slide-15
SLIDE 15
slide-16
SLIDE 16

Thankfully it ended well.

Congrats to everyone involved in Rust 2018!

slide-17
SLIDE 17

How do we prevent regressions?

slide-18
SLIDE 18

The compiler's test suite.

slide-19
SLIDE 19

Using the compiler in the compiler itself.

slide-20
SLIDE 20

Bug reports from users.

slide-21
SLIDE 21

We can't ask people to manually test beta.

slide-22
SLIDE 22

Idea! Let's test our users' code ourselves.

slide-23
SLIDE 23

Crater

slide-24
SLIDE 24

+

More than 75,000 projects tested, from crates.io and GitHub

slide-25
SLIDE 25

Run cargo test on every project with two compiler builds.

slide-26
SLIDE 26
slide-27
SLIDE 27
slide-28
SLIDE 28
slide-29
SLIDE 29

Crater is not perfect...

slide-30
SLIDE 30

Crater is not perfect... ...today it works great though!

slide-31
SLIDE 31

Let's recap!

Fast release cycles allow us not to worry about deadlines. Crater is the tool allowing us to do that without breaking the world.

slide-32
SLIDE 32

Thanks!