rustproof
play

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


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

  2. What is RustProof? § Formally verifies user program correctness § Used for “mission-critical” applications Why RustProof? § Testing and inspection aren’t exhaustive § Zero runtime cost

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

  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

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

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

  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”

  8. Process and Schedule Planning Requirements Risk Management Design Research Implementation Testing External Applications GitHub Travis Slack Backups

  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 Prioritized extensive system tests to cover functionality structures New unstable version broke system testing Specified older version of nightly, began looking into other designs Staying up to date with rapid changes in Weekly check-in with team members, and regular status project updates

  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

  11. Questions?

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend