Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clarify some of the language around marking traits safe/unsafe. #268

Merged
merged 1 commit into from
May 11, 2021

Conversation

yaymukund
Copy link
Contributor

@yaymukund yaymukund commented May 11, 2021

Send and Sync are marked unsafe because thread safety is a fundamental property that unsafe code can't
possibly hope to defend against in the way it could defend against a buggy Ord implementation.

When I initially read this, I thought it was strange you'd want to mark Send and Sync as unsafe if "unsafe code can't possibly hope to defend against [thread safety]".

Here, I've attempted to clarify.

Comment on lines +130 to +136
`Send` and `Sync` are marked unsafe because thread safety is a *fundamental
property* that unsafe code can't possibly hope to defend against in the way it
could defend against a buggy `Ord` implementation. Similarly, `GlobalAllocator`
is keeping accounts of all the memory in the program and other things like
`Box` or `Vec` build on top of it. If it does something weird (giving the same
chunk of memory to another request when it is still in use), there's no chance
to detect that and do anything about it.
Copy link
Contributor Author

@yaymukund yaymukund May 11, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This second paragraph is unchanged, I just split it out for readability.

Copy link
Member

@JohnTitor JohnTitor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice improvement, thanks!

@JohnTitor JohnTitor merged commit 55de6fa into rust-lang:master May 11, 2021
@yaymukund yaymukund deleted the clarify-trait-safety-language branch May 11, 2021 15:32
GuillaumeGomez added a commit to GuillaumeGomez/rust that referenced this pull request May 12, 2021
Update books

## nomicon

4 commits in 8551afbb2ca6f5ea37fe58380318b209785e4e02..55de6fa3c1f331774da19472c9ee57d2ae9eb039
2021-04-01 21:58:50 +0900 to 2021-05-12 00:31:01 +0900
- Clarify some of the language around marking traits safe/unsafe. (rust-lang/nomicon#268)
- Use pointer 'add' instead of 'offset' (rust-lang/nomicon#265)
- Adjust Vec to build on stable Rust (rust-lang/nomicon#223)
- Update link to c++ atomic ordering docs (rust-lang/nomicon#264)

## reference

3 commits in d23f9da8469617e6c81121d9fd123443df70595d..5aa457bf1b54bd2cd5d4cf49797f29299bdf89a7
2021-04-28 11:16:44 -0700 to 2021-05-05 08:39:22 -0700
- Explicitly state result of compound assignment (rust-lang/reference#1013)
- Adjust the definition of `target_family` (rust-lang/reference#1006)
- Fix typo in `Traits` (rust-lang/reference#1012)

## book

2 commits in 50dd06cb71beb27fdc0eebade5509cdcc1f821ed..55a26488ddefc8433e73a2e8352d70f7a5c7fc2b
2021-04-23 13:21:54 -0500 to 2021-05-09 12:03:18 -0500
- Past-tensify "lead" -> "led" (rust-lang/book#2717)
- Merge pull request rust-lang/book#2718 from rust-lang/update-rustc

## rust-by-example

2 commits in e0a721f5202e6d9bec0aff99f10e44480c0da9e7..5f8c6da200ada77760a2fe1096938ef58151c9a6
2021-04-27 09:32:15 -0300 to 2021-04-29 08:08:01 -0300
- Fix Typo in LRBE section; closes rust-lang/rust-by-example#1434 (rust-lang/rust-by-example#1437)
- Add some tests to cargo/test.md. Partially addresses rust-lang/rust-by-example#1304 (rust-lang/rust-by-example#1438)

## rustc-dev-guide

3 commits in e72b43a64925ce053dc7830e21c1a57ba00499bd..1e6c7fbda4c45e85adf63ff3f82fa9c870b1447f
2021-04-27 12:35:37 -0700 to 2021-05-10 13:38:24 +0900
- Unified CPU Requirements (rust-lang/rustc-dev-guide#1126)
- add 'waiting-for-review' incantation to main contrib page (rust-lang/rustc-dev-guide#1124)
- Link to Zulip search for finding the most recent check-in (rust-lang/rustc-dev-guide#1118)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants