Skip to content

Conversation

m-ou-se
Copy link
Member

@m-ou-se m-ou-se commented Dec 30, 2020

Successful merges:

Failed merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

pierwill and others added 30 commits December 17, 2020 11:39
Previously, `os.remove` would always give a FileNotFound error the first
time you called it, causing bootstrap to make unnecessary copies. This
now only calls `remove()` if the file exists, avoiding the unnecessary
error.
Add `Iterator::intersperse`

This is a rebase of rust-lang#75784. I'm hoping to push this past the finish line!

cc `@jonas-schievink`
…jyn514

Edit rustc_ast::ast::FieldPat docs

Punctuation fixes.
…mulacrum

Don't give an error when creating a file for the first time

Previously, `os.remove` would always give a FileNotFound error the first
time you called it, causing bootstrap to make unnecessary copies. This
now only calls `remove()` if the file exists, avoiding the unnecessary
error.

This is a pretty small cleanup but I think it's useful. Taken from rust-lang#79540.
Some Promotion Refactoring

Clean up promotion a bit:
* factor out some common code
* more exhaustive matches

This *should* not break anything... the only potentially-breaking change is that `BorrowKind::Shallow | BorrowKind::Unique` are now rejected for internal references.

r? ``@oli-obk``
…r=m-ou-se

Do not create dangling &T in Weak<T>::drop

Since at this point all strong pointers have been dropped, the wrapped `T` has also been dropped. As such, creating a `&T` to the dropped place is negligent at best (language UB at worst). Since we have `Layout::for_value_raw` now, use that instead of `Layout::for_value` to avoid creating the `&T`.

This does have implications for custom (potentially thin) DSTs, though much less severe than those discussed in rust-lang#80407. Specifically, one of two things has to be true:

- It has to be possible to use a `*const T` to a dropped (potentially custom, potentially thin) unsized tailed object to determine the layout (size/align) of the object. This is what is currently implemented (though with `&T` instead of `&T`). The validity of reading some location after it has been dropped is an open question IIUC (rust-lang/unsafe-code-guidelines#188) (except when the whole type is `Copy`, per `drop_in_place`'s docs).
  In this design, custom DSTs would get a `*mut T` and use that to return layout, and must be able to do so while in the "zombie" (post-drop, pre-free) state.
- `RcBox`/`ArcInner` compute and store layout eagerly, so that they don't have to ask the type for its layout after dropping it.

Importantly, this is already true today, as you can construct `Rc<DST>`, create a `Weak<DST>`, and drop the `Rc` before the `Weak`. This PR is a strict improvement over the status quo, and the above question about potentially thin DSTs will need to be resolved by any custom DST proposal.
Miri: make size/align_of_val work for dangling raw ptrs

This is needed for rust-lang#80365 (comment).

r? `@oli-obk`
@rustbot rustbot added the rollup A PR which is a rollup label Dec 30, 2020
@m-ou-se
Copy link
Member Author

m-ou-se commented Dec 30, 2020

@bors r+ p=9 rollup=never

@bors
Copy link
Collaborator

bors commented Dec 30, 2020

📌 Commit 8998e31 has been approved by m-ou-se

@bors bors added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Dec 30, 2020
@bors
Copy link
Collaborator

bors commented Dec 30, 2020

⌛ Testing commit 8998e31 with merge 9775ffe...

@bors
Copy link
Collaborator

bors commented Dec 31, 2020

☀️ Test successful - checks-actions
Approved by: m-ou-se
Pushing 9775ffe to master...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
merged-by-bors This PR was explicitly merged by bors. rollup A PR which is a rollup S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.