RustProof Drew Gohman, Matthew OBrien, Bradley Rasmussen, Sami - - PowerPoint PPT Presentation

rustproof
SMART_READER_LITE
LIVE PREVIEW

RustProof Drew Gohman, Matthew OBrien, Bradley Rasmussen, Sami - - PowerPoint PPT Presentation

RustProof Drew Gohman, Matthew OBrien, Bradley Rasmussen, Sami Sahli, Michael Salter, Vincent Schuster, Matthew Slocum Sponsored by Aaron Tomb and Jamey Sharp What is RustProof? Formally verifies user program correctness Used for


slide-1
SLIDE 1

RustProof

Drew Gohman, Matthew O’Brien, Bradley Rasmussen, Sami Sahli, Michael Salter, Vincent Schuster, Matthew Slocum Sponsored by Aaron Tomb and Jamey Sharp

slide-2
SLIDE 2

What is RustProof?

§ Formally verifies user program correctness § Used for “mission-critical” applications § Testing and inspection aren’t exhaustive § Zero runtime cost

Why RustProof?

slide-3
SLIDE 3

Demo

http://viewpure.com/6AONwoGaquw?start=0&end=0

slide-4
SLIDE 4

Constraints and Assumptions

Constraints

§ Had to be a compiler plugin § Had to use an unstable version of Rust (nightly)

Assumptions

§ No platform-specific problems § We could find a working library of Rust bindings to Z3 § Documentaion about Rust nightlies was complete § Reporting through compiler would be simple

slide-5
SLIDE 5

Features

Accept user attributes on functions Construct verification condition(s) Pass verification condition(s) to a solver Return output from solver, including counterexamples Integer arithmetic Assertions Conditionals Boolean arithmetic … Can’t function without all of these in place Could be added incrementally

slide-6
SLIDE 6

Deliverables

§ Requirements specification document § Risk management plan § Software architecture design document § Work breakdown list § RustProof usage documentation § RustProof

slide-7
SLIDE 7

Team Roles

Member Role Drew Gohman IT, backups, GitHub Matthew O’Brien Workflow Bradley Rasmussen Backup team lead Sami Sahli Team lead Michael Salter Requirements Vincent Schuster Risk management Matthew Slocum Rust “master genius”

slide-8
SLIDE 8

Process and Schedule

Planning Requirements Risk Management Design Research Testing Implementation External Applications GitHub Travis Slack Backups

slide-9
SLIDE 9

Problems and Contingencies

Issue Mitigation Brand new language Individual research and specific team member focus Linear workflow Break into pieces where possible, and group coding on major components Unit tests required overly-complicated structures Prioritized extensive system tests to cover functionality New unstable version broke system testing Specified older version of nightly, began looking into

  • ther designs

Staying up to date with rapid changes in project Weekly check-in with team members, and regular status updates

slide-10
SLIDE 10

Lessons Learned

Working on top of an evolving language is hard § Features are not sufficiently documented § Language prone to change § Completely unsupported dependencies Finding resources in open source § Googling works ok, until it doesn’t § Reading documentation, then the source code § Contacting Rust community and developers Team dynamics, coding styles, and how to compromise § Communicating problems without code shaming § Establish code style guidelines early and stick to them § Choosing battles over design choices

slide-11
SLIDE 11

Questions?