Skip to content

Conversation

matthiaskrgr
Copy link
Member

Successful merges:

Failed merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

sunfishcode and others added 28 commits January 26, 2022 16:27
Following up on rust-lang#88564, this adds documentation explaining why
`BorrowedFd::to_owned` returns another `BorrowedFd` rather than an
`OwnedFd`. And similar for `BorrowedHandle` and `BorrowedSocket`.
This change weakens the descriptions of the
`{as,into,from}_raw_{fd,handle,socket}` descriptions from saying that
they *do* express ownership relations to say that they are *typically used*
in ways that express ownership relations. This needed needed since, for
example, std's own [`RawFd`] implements `{As,From,Into}Fd` without any of
the ownership relationships.

This adds proper `# Safety` comments to `from_raw_{fd,handle,socket}`,
adds the requirement that raw handles be not opened with the
`FILE_FLAG_OVERLAPPED` flag, and merges the `OwnedHandle::from_raw_handle`
comment into the main `FromRawHandle::from_raw_handle` comment.

And, this changes `HandleOrNull` and `HandleOrInvalid` to not implement
`FromRawHandle`, since they are intended for limited use in FFI situations,
and not for generic use, and they have constraints that are stronger than
the those of `FromRawHandle`.

[`RawFd`]: https://doc.rust-lang.org/stable/std/os/unix/io/type.RawFd.html
This function is documented in more detail in the `FromRawSocket` trait.
Also, rename `BorrowedHandle::borrow_raw_handle` and
`BorrowedSocket::borrow_raw_socket` to `BorrowedHandle::borrow_raw` and
`BorrowedSocket::borrow_raw`.

This is just a minor rename to reduce redundancy in the user code calling
these functions, and to eliminate an inessential difference between
`BorrowedFd` code and `BorrowedHandle`/`BorrowedSocket` code.

While here, add a simple test exercising `BorrowedFd::borrow_raw_fd`.
Add `rustc_middle::ty::suggest_constraining_type_params` that suggests
adding multiple constraints.

`suggest_constraining_type_param` now just forwards params to this new
function.
Previously we've only suggested adding `Copy` bounds when the type being
moved/copied is a type parameter (generic). With this commit we also
suggest adding bounds when a type
- Can be copy
- All predicates that need to be satisfied for that are based on type
  params

i.e. we will suggest `T: Copy` for `Option<T>`, but won't suggest
anything for `Option<String>`.

Future work: it would be nice to also suggest adding `.clone()` calls
Modify the tier 3 non-ARM targets to show the standard library will no longer build for these and there is no work being done to change that.
adds more archs for openbsd: arm, mips64, powerpc, powerpc64, and riscv64.
update char signess for openbsd

it adds more archs support for openbsd: arm, mips64, powerpc, powerpc64, and riscv64.
…rrowedfd-toowned, r=joshtriplett

Add documentation about `BorrowedFd::to_owned`.

Following up on rust-lang#88564, this adds documentation explaining why
`BorrowedFd::to_owned` returns another `BorrowedFd` rather than an
`OwnedFd`. And similar for `BorrowedHandle` and `BorrowedSocket`.

r? ```@joshtriplett```
…joshtriplett

Update the documentation for `{As,Into,From}Raw{Fd,Handle,Socket}`.

This change weakens the descriptions of the
`{as,into,from}_raw_{fd,handle,socket}` descriptions from saying that
they *do* express ownership relations to say that they are *typically used*
in ways that express ownership relations. This is needed since, for
example, std's own [`RawFd`] implements `{As,From,Into}Fd` without any of
the ownership relationships.

This adds proper `# Safety` comments to `from_raw_{fd,handle,socket}`,
adds the requirement that raw handles be not opened with the
`FILE_FLAG_OVERLAPPED` flag, and merges the `OwnedHandle::from_raw_handle`
comment into the main `FromRawHandle::from_raw_handle` comment.

And, this changes `HandleOrNull` and `HandleOrInvalid` to not implement
`FromRawHandle`, since they are intended for limited use in FFI situations,
and not for generic use, and they have constraints that are stronger than
the those of `FromRawHandle`.

[`RawFd`]: https://doc.rust-lang.org/stable/std/os/unix/io/type.RawFd.html
…, r=joshtriplett

Rename `BorrowedFd::borrow_raw_fd` to `BorrowedFd::borrow_raw`.

Also, rename `BorrowedHandle::borrow_raw_handle` and
`BorrowedSocket::borrow_raw_socket` to `BorrowedHandle::borrow_raw` and
`BorrowedSocket::borrow_raw`.

This is just a minor rename to reduce redundancy in the user code calling
these functions, and to eliminate an inessential difference between
`BorrowedFd` code and `BorrowedHandle`/`BorrowedSocket` code.

While here, add a simple test exercising `BorrowedFd::borrow_raw_fd`.

r? ```@joshtriplett```
…ebank

Adt copy suggestions

Previously we've only suggested adding `Copy` bounds when the type being moved/copied is a type parameter (generic). With this PR we also suggest adding bounds when a type
- Can be copy
- All predicates that need to be satisfied for that are based on type params

i.e. we will suggest `T: Copy` for `Option<T>`, but won't suggest anything for `Option<String>`.

An example:
```rust
fn duplicate<T>(t: Option<T>) -> (Option<T>, Option<T>) {
    (t, t)
}
```
New error (current compiler doesn't provide `help`:):
```text
error[E0382]: use of moved value: `t`
 --> t.rs:2:9
  |
1 | fn duplicate<T>(t: Option<T>) -> (Option<T>, Option<T>) {
  |                 - move occurs because `t` has type `Option<T>`, which does not implement the `Copy` trait
2 |     (t, t)
  |      -  ^ value used here after move
  |      |
  |      value moved here
  |
help: consider restricting type parameter `T`
  |
1 | fn duplicate<T: Copy>(t: Option<T>) -> (Option<T>, Option<T>) {
  |               ++++++
```

Fixes rust-lang#93623
r? ```````@estebank```````
```````@rustbot``````` label +A-diagnostics +A-suggestion-diagnostics +C-enhancement

----

I'm not at all sure if this is the right implementation for this kind of suggestion, but it seems to work :')
Documentation was missed when demoting Windows XP to no_std only

After a quick discussion on rust-lang#81250 which removed special casing for mutexes added [here](rust-lang@10b103a) to support Windows XP, we can't say that the standard library can build for it.

This change modifies the tier 3 non-ARM targets to show the standard library will no longer build for these and there is no work being done to change that.
Miri/CTFE: properly treat overflow in (signed) division/rem as UB

To my surprise, it looks like LLVM treats overflow of signed div/rem as UB. From what I can tell, MIR `Div`/`Rem` directly lowers to the corresponding LLVM operation, so to make that correct we also have to consider these overflows UB in the CTFE/Miri interpreter engine.

r? ``````@oli-obk``````
…lacrum

Remove num_cpus dependency from bootstrap, build-manifest and rustc_s…

…ession

`std::threads::available_parallelism` was stabilized in rust 1.59.

r? ```@Mark-Simulacrum```
@rustbot rustbot added T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. rollup A PR which is a rollup labels Mar 2, 2022
@matthiaskrgr
Copy link
Member Author

@bors r+ rollup=never p=8

@bors
Copy link
Collaborator

bors commented Mar 2, 2022

📌 Commit c4e9c10 has been approved by matthiaskrgr

@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 Mar 2, 2022
@bors
Copy link
Collaborator

bors commented Mar 2, 2022

⌛ Testing commit c4e9c10 with merge 88d45fdab8adba3235104da395b694f9cc32c61a...

@bors bors mentioned this pull request Mar 2, 2022
@bors
Copy link
Collaborator

bors commented Mar 2, 2022

💔 Test failed - checks-actions

@bors bors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Mar 2, 2022
@matthiaskrgr
Copy link
Member Author

  Documenting std v0.0.0 (D:\a\rust\rust\library\std)
error: unresolved link to `AsFd::as_fd`
  --> library\std\src\os\fd\raw.rs:37:60
   |
37 |     /// However, borrowing is not strictly required. See [`AsFd::as_fd`]
   |                                                            ^^^^^^^^^^^ no item named `AsFd` in scope
   |
   = note: `-D rustdoc::broken-intra-doc-links` implied by `-D warnings`

error: could not document `std`

@rust-log-analyzer
Copy link
Collaborator

The job dist-x86_64-mingw failed! Check out the build log: (web) (plain)

Click to see the possible cause of the failure (guessed by this bot)
[RUSTC-TIMING] addr2line test:false 0.255
[RUSTC-TIMING] object test:false 3.562
[RUSTC-TIMING] profiler_builtins test:false 0.034
 Documenting std v0.0.0 (D:\a\rust\rust\library\std)
error: unresolved link to `AsFd::as_fd`
   |
   |
37 |     /// However, borrowing is not strictly required. See [`AsFd::as_fd`]
   |                                                            ^^^^^^^^^^^ no item named `AsFd` in scope
   |
   = note: `-D rustdoc::broken-intra-doc-links` implied by `-D warnings`
error: could not document `std`

Caused by:
Caused by:
  process didn't exit successfully: `D:\a\rust\rust\build\bootstrap/debug/rustdoc --edition=2021 --crate-type dylib --crate-type rlib --crate-name std library\std\src\lib.rs --target x86_64-pc-windows-gnu -o D:\a\rust\rust\build\x86_64-pc-windows-gnu\stage2-std\x86_64-pc-windows-gnu\doc --cfg "feature=\"addr2line\"" --cfg "feature=\"backtrace\"" --cfg "feature=\"compiler-builtins-c\"" --cfg "feature=\"gimli-symbolize\"" --cfg "feature=\"miniz_oxide\"" --cfg "feature=\"object\"" --cfg "feature=\"panic_unwind\"" --cfg "feature=\"profiler\"" --cfg "feature=\"profiler_builtins\"" --cfg "feature=\"std_detect_dlsym_getauxval\"" --cfg "feature=\"std_detect_file_io\"" --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --markdown-css rust.css --markdown-no-toc -Z unstable-options --resource-suffix 1.61.0 --index-page D:\a\rust\rust\src/doc/index.md -C metadata=16867a9251fcee32 -L dependency=D:\a\rust\rust\build\x86_64-pc-windows-gnu\stage2-std\x86_64-pc-windows-gnu\release\deps -L dependency=D:\a\rust\rust\build\x86_64-pc-windows-gnu\stage2-std\release\deps --extern addr2line=D:\a\rust\rust\build\x86_64-pc-windows-gnu\stage2-std\x86_64-pc-windows-gnu\release\deps\libaddr2line-c8e928b026598ac7.rmeta --extern alloc=D:\a\rust\rust\build\x86_64-pc-windows-gnu\stage2-std\x86_64-pc-windows-gnu\release\deps\liballoc-385410f0849a1d11.rmeta --extern cfg_if=D:\a\rust\rust\build\x86_64-pc-windows-gnu\stage2-std\x86_64-pc-windows-gnu\release\deps\libcfg_if-6f4d807841d303f3.rmeta --extern compiler_builtins=D:\a\rust\rust\build\x86_64-pc-windows-gnu\stage2-std\x86_64-pc-windows-gnu\release\deps\libcompiler_builtins-eed50df227ffc974.rmeta --extern core=D:\a\rust\rust\build\x86_64-pc-windows-gnu\stage2-std\x86_64-pc-windows-gnu\release\deps\libcore-99865d124c8f140c.rmeta --extern hashbrown=D:\a\rust\rust\build\x86_64-pc-windows-gnu\stage2-std\x86_64-pc-windows-gnu\release\deps\libhashbrown-88b90100689228d6.rmeta --extern libc=D:\a\rust\rust\build\x86_64-pc-windows-gnu\stage2-std\x86_64-pc-windows-gnu\release\deps\liblibc-bb1e110541a70193.rmeta --extern miniz_oxide=D:\a\rust\rust\build\x86_64-pc-windows-gnu\stage2-std\x86_64-pc-windows-gnu\release\deps\libminiz_oxide-523289423919470a.rmeta --extern object=D:\a\rust\rust\build\x86_64-pc-windows-gnu\stage2-std\x86_64-pc-windows-gnu\release\deps\libobject-c4a49781f901edf6.rmeta --extern panic_abort=D:\a\rust\rust\build\x86_64-pc-windows-gnu\stage2-std\x86_64-pc-windows-gnu\release\deps\libpanic_abort-26c5d07f5b79e0b3.rmeta --extern panic_unwind=D:\a\rust\rust\build\x86_64-pc-windows-gnu\stage2-std\x86_64-pc-windows-gnu\release\deps\libpanic_unwind-744e4354237bab60.rmeta --extern profiler_builtins=D:\a\rust\rust\build\x86_64-pc-windows-gnu\stage2-std\x86_64-pc-windows-gnu\release\deps\libprofiler_builtins-ceccaa053358f654.rmeta --extern rustc_demangle=D:\a\rust\rust\build\x86_64-pc-windows-gnu\stage2-std\x86_64-pc-windows-gnu\release\deps\librustc_demangle-0c64e966a4d7238d.rmeta --extern std_detect=D:\a\rust\rust\build\x86_64-pc-windows-gnu\stage2-std\x86_64-pc-windows-gnu\release\deps\libstd_detect-682a5b9a2a39c639.rmeta --extern unwind=D:\a\rust\rust\build\x86_64-pc-windows-gnu\stage2-std\x86_64-pc-windows-gnu\release\deps\libunwind-2e940403077eea31.rmeta -Csymbol-mangling-version=legacy -Zunstable-options -Dwarnings -Wrustdoc::invalid_codeblock_attributes --crate-version "1.61.0-nightly
  (88d45fdab
  2022-03-02)" "-Zcrate-attr=doc(html_root_url=\"https://doc.rust-lang.org/nightly/\")" --cfg backtrace_in_libstd` (exit code: 1)

@matthiaskrgr matthiaskrgr deleted the rollup-tafbmbm branch March 11, 2022 15:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
rollup A PR which is a rollup S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants