/unsafe-code-guidelines

Home for the Unsafe Code Guidelines working group.

Apache License 2.0Apache-2.0

Travis-CI Status UCG Book

UCG WG - Rust's Unsafe Code Guidelines Working Group

The goal of the UCG WG is to produce the Unsafe Code Guidelines Reference: a "guide" for writing unsafe code that "recommends" what kinds of things unsafe code can and cannot do. It is largely a work-in-progress right now.

Unless we state otherwise, the information in the guide is mostly a "recommendation" and still subject to change. The main goal for the WG in 2019 is to RFC parts of the guide into the language specification, and move those parts into the Rust Language Reference proper.

note: the instructions to build the UCG reference book are in the .travis.yml file.

Process

A more complete description of our process is available in the process.md file. Briefly:

  • active discussion area: At any given time, the UCG working group is focused on one particular area of discussion. The current area is Validity Invariants -- read that link for more background and information. You can find the active discussion threads here.
  • communication channels: Most of the discussion takes place here in GitHub issues. Many of us do also hang out on Zulip's wg-unsafe-code-guidelines stream. There is rust-lang org team called WG-unsafe-code-guidelines that is commonly cc'd when curious situations arise. Send a private message to @nikomatsakis on internals or Zulip if you would like to be added (note: membership does not imply any particular decision-making power).
  • meetings: Every Thursday at 12:15 UTC-4 (16:15 UTC), we hold a brief non-technical meeting on Zulip to triage issues, PRs, assign work, etc. Everybody is welcome to attend.

Ideas for future "areas of discussion" are represented as issues labeled with the "proposed discussion topic" label. Feel free to open more such issues if you have a question that doesn't match any of the existing issues!

We follow the Rust's Code of Conduct. Any concerns should be addressed to the moderation team immediately.

See also

The Rustonomicon is a draft document discussing unsafe code. It is intended to be brought into agreement with the content here. It represents an organized effort to explain how to write Rust code, rather than a reference.

The nikomatsakis/rust-memory-model was a previous effort and contains a lot of good links and information.