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

Unsized rvalues: implement boxed closure impls. (2nd try) #59500

Merged
merged 12 commits into from
Apr 5, 2019

Conversation

crlf0710
Copy link
Member

This is a rebase of S-blocked-closed PR #55431 to current master. LLVM has moved forward since then, so maybe we can check whether the new LLVM 8.0 version unblocked this work.

@rust-highfive
Copy link
Collaborator

r? @QuietMisdreavus

(rust_highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Mar 28, 2019
@crlf0710
Copy link
Member Author

I don't know if i have this permission:
@bors try

@bors
Copy link
Contributor

bors commented Mar 28, 2019

@crlf0710: 🔑 Insufficient privileges: not in try users

@crlf0710
Copy link
Member Author

r? @cramertj

@QuietMisdreavus
Copy link
Member

r? @rust-lang/compiler

I'll start the try build for you.

@bors try

@bors
Copy link
Contributor

bors commented Mar 28, 2019

⌛ Trying commit 3701ed0a3e5f68535ef49c80e1bfeb1175229d46 with merge 1867821893967fb2b71b2b79ac370fddf4de3b96...

@Centril
Copy link
Contributor

Centril commented Mar 28, 2019

r? @cramertj

@Centril Centril added T-lang Relevant to the language team, which will review and decide on the PR/issue. relnotes Marks issues that should be documented in the release notes of the next release. labels Mar 28, 2019
@Centril Centril added this to the 1.35 milestone Mar 28, 2019
@bors
Copy link
Contributor

bors commented Mar 28, 2019

☀️ Try build successful - checks-travis
Build commit: 1867821893967fb2b71b2b79ac370fddf4de3b96

@crlf0710
Copy link
Member Author

It seems bors try doesn't cover gnux32 arch? How can i run a test build that covers one?

@cramertj
Copy link
Member

cramertj commented Apr 1, 2019

I'm not sure if there's a way to do that-- maybe @alexcrichton or someone on @rust-lang/infra knows?

@kennytm
Copy link
Member

kennytm commented Apr 2, 2019

You could edit .travis.yml and change the "if" field for dist-various-2 to temporarily enable the the job in the CI.

@crlf0710 crlf0710 changed the title Unsized rvalues: implement boxed closure impls. (2nd try) [WIP]Unsized rvalues: implement boxed closure impls. (2nd try) Apr 2, 2019
@crlf0710
Copy link
Member Author

crlf0710 commented Apr 2, 2019

OK, temporarily enabled dist-various-2 let's see how it goes.

@rust-highfive
Copy link
Collaborator

The job dist-various-2 of your PR failed on Travis (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
travis_time:end:15be574b:start=1554171762172935692,finish=1554171837710779949,duration=75537844257
$ git checkout -qf FETCH_HEAD
travis_fold:end:git.checkout

Encrypted environment variables have been removed for security reasons.
See https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions
$ export SCCACHE_BUCKET=rust-lang-ci-sccache2
$ export SCCACHE_REGION=us-west-1
$ export GCP_CACHE_BUCKET=rust-lang-ci-cache
Setting environment variables from .travis.yml
---
[01:16:21]    Compiling alloc v0.0.0 (/checkout/src/liballoc)
[01:16:21]    Compiling rustc-demangle v0.1.10
[01:16:22]    Compiling panic_abort v0.0.0 (/checkout/src/libpanic_abort)
[01:16:27]    Compiling panic_unwind v0.0.0 (/checkout/src/libpanic_unwind)
[01:16:47] LLVM ERROR: Cannot emit physreg copy instruction
[01:16:47] error: Could not compile `std`.
[01:16:47] To learn more, run the command again with --verbose.
[01:16:47] command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "build" "--target" "x86_64-unknown-linux-gnux32" "-j" "4" "--release" "--locked" "--color" "always" "--features" "panic-unwind backtrace" "--manifest-path" "/checkout/src/libstd/Cargo.toml" "--message-format" "json"
[01:16:47] expected success, got: exit code: 101
[01:16:47] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap dist --target x86_64-fuchsia,aarch64-fuchsia,sparcv9-sun-solaris,wasm32-unknown-unknown,wasm32-unknown-wasi,x86_64-sun-solaris,x86_64-unknown-linux-gnux32,x86_64-unknown-cloudabi,x86_64-fortanix-unknown-sgx,nvptx64-nvidia-cuda
---
travis_time:end:01c1025f:start=1554176457629802505,finish=1554176457635754400,duration=5951895
travis_fold:end:after_failure.3
travis_fold:start:after_failure.4
travis_time:start:0022b992
$ ln -s . checkout && for CORE in obj/cores/core.*; do EXE=$(echo $CORE | sed 's|obj/cores/core\.[0-9]*\.!checkout!\(.*\)|\1|;y|!|/|'); if [ -f "$EXE" ]; then printf travis_fold":start:crashlog\n\033[31;1m%s\033[0m\n" "$CORE"; gdb --batch -q -c "$CORE" "$EXE" -iex 'set auto-load off' -iex 'dir src/' -iex 'set sysroot .' -ex bt -ex q; echo travis_fold":"end:crashlog; fi; done || true
travis_fold:end:after_failure.4
travis_fold:start:after_failure.5
travis_time:start:19cac544
travis_time:start:19cac544
$ cat ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers || true
cat: ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers: No such file or directory
travis_fold:end:after_failure.5
travis_fold:start:after_failure.6
travis_time:start:08482c55
$ dmesg | grep -i kill

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@crlf0710
Copy link
Member Author

crlf0710 commented Apr 2, 2019

:( it seems the bug is still there. I'll try to seek for some help or some hint for investigation, but i don't think this will be in time for 1.35.

@kennytm kennytm added S-blocked Status: Marked as blocked ❌ on something else such as an RFC or other implementation work. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Apr 2, 2019
@crlf0710
Copy link
Member Author

crlf0710 commented Apr 3, 2019

Blocked on #59674

@Centril Centril removed this from the 1.35 milestone Apr 3, 2019
@crlf0710
Copy link
Member Author

crlf0710 commented Apr 5, 2019

Also ping @pnkfelix for additional help.

@crlf0710
Copy link
Member Author

crlf0710 commented Apr 5, 2019

It seems there's a nll-compare-mode on this specific runner (x86_64-gnu-nopt). Let me see if i can update the expected output for this mode.

@crlf0710 crlf0710 changed the title Unsized rvalues: implement boxed closure impls. (2nd try) [WIP] Unsized rvalues: implement boxed closure impls. (2nd try) Apr 5, 2019
@crlf0710
Copy link
Member Author

crlf0710 commented Apr 5, 2019

Seems the test can pass now: https://travis-ci.com/rust-lang/rust/builds/107171751

@crlf0710 crlf0710 changed the title [WIP] Unsized rvalues: implement boxed closure impls. (2nd try) Unsized rvalues: implement boxed closure impls. (2nd try) Apr 5, 2019
@crlf0710
Copy link
Member Author

crlf0710 commented Apr 5, 2019

@cramertj Could you review the new changes and approve it again if there's no problem? Sorry for the inconvenience!

@cramertj
Copy link
Member

cramertj commented Apr 5, 2019

@bors r+

@bors
Copy link
Contributor

bors commented Apr 5, 2019

📌 Commit 812d89c has been approved by cramertj

Centril added a commit to Centril/rust that referenced this pull request Apr 5, 2019
…mertj

Unsized rvalues: implement boxed closure impls. (2nd try)

This is a rebase of S-blocked-closed PR rust-lang#55431 to current master. LLVM has moved forward since then, so maybe we can check whether the new LLVM 8.0 version unblocked this work.
@bors
Copy link
Contributor

bors commented Apr 5, 2019

⌛ Testing commit 812d89c with merge acd8dd6...

bors added a commit that referenced this pull request Apr 5, 2019
Unsized rvalues: implement boxed closure impls. (2nd try)

This is a rebase of S-blocked-closed PR #55431 to current master. LLVM has moved forward since then, so maybe we can check whether the new LLVM 8.0 version unblocked this work.
@bors
Copy link
Contributor

bors commented Apr 5, 2019

☀️ Test successful - checks-travis, status-appveyor
Approved by: cramertj
Pushing acd8dd6 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Apr 5, 2019
@bors bors merged commit 812d89c into rust-lang:master Apr 5, 2019
@crlf0710 crlf0710 deleted the boxed-closure-impls branch April 6, 2019 01:39
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request May 31, 2019
Version 1.35.0 (2019-05-23)
==========================

Language
--------
- [`FnOnce`, `FnMut`, and the `Fn` traits are now implemented for `Box<FnOnce>`,
  `Box<FnMut>`, and `Box<Fn>` respectively.][59500]
- [You can now coerce closures into unsafe function pointers.][59580] e.g.
  ```rust
  unsafe fn call_unsafe(func: unsafe fn()) {
      func()
  }

  pub fn main() {
      unsafe { call_unsafe(|| {}); }
  }
  ```


Compiler
--------
- [Added the `armv6-unknown-freebsd-gnueabihf` and
  `armv7-unknown-freebsd-gnueabihf` targets.][58080]
- [Added the `wasm32-unknown-wasi` target.][59464]


Libraries
---------
- [`Thread` will now show its ID in `Debug` output.][59460]
- [`StdinLock`, `StdoutLock`, and `StderrLock` now implement `AsRawFd`.][59512]
- [`alloc::System` now implements `Default`.][59451]
- [Expanded `Debug` output (`{:#?}`) for structs now has a trailing comma on the
  last field.][59076]
- [`char::{ToLowercase, ToUppercase}` now
  implement `ExactSizeIterator`.][58778]
- [All `NonZero` numeric types now implement `FromStr`.][58717]
- [Removed the `Read` trait bounds
  on the `BufReader::{get_ref, get_mut, into_inner}` methods.][58423]
- [You can now call the `dbg!` macro without any parameters to print the file
  and line where it is called.][57847]
- [In place ASCII case conversions are now up to 4× faster.][59283]
  e.g. `str::make_ascii_lowercase`
- [`hash_map::{OccupiedEntry, VacantEntry}` now implement `Sync`
  and `Send`.][58369]

Stabilized APIs
---------------
- [`f32::copysign`]
- [`f64::copysign`]
- [`RefCell::replace_with`]
- [`RefCell::map_split`]
- [`ptr::hash`]
- [`Range::contains`]
- [`RangeFrom::contains`]
- [`RangeTo::contains`]
- [`RangeInclusive::contains`]
- [`RangeToInclusive::contains`]
- [`Option::copied`]

Cargo
-----
- [You can now set `cargo:rustc-cdylib-link-arg` at build time to pass custom
  linker arguments when building a `cdylib`.][cargo/6298] Its usage is highly
  platform specific.

Misc
----
- [The Rust toolchain is now available natively for musl based distros.][58575]

[59460]: rust-lang/rust#59460
[59464]: rust-lang/rust#59464
[59500]: rust-lang/rust#59500
[59512]: rust-lang/rust#59512
[59580]: rust-lang/rust#59580
[59283]: rust-lang/rust#59283
[59451]: rust-lang/rust#59451
[59076]: rust-lang/rust#59076
[58778]: rust-lang/rust#58778
[58717]: rust-lang/rust#58717
[58369]: rust-lang/rust#58369
[58423]: rust-lang/rust#58423
[58080]: rust-lang/rust#58080
[57847]: rust-lang/rust#57847
[58575]: rust-lang/rust#58575
[cargo/6298]: rust-lang/cargo#6298
[`f32::copysign`]: https://doc.rust-lang.org/stable/std/primitive.f32.html#method.copysign
[`f64::copysign`]: https://doc.rust-lang.org/stable/std/primitive.f64.html#method.copysign
[`RefCell::replace_with`]: https://doc.rust-lang.org/stable/std/cell/struct.RefCell.html#method.replace_with
[`RefCell::map_split`]: https://doc.rust-lang.org/stable/std/cell/struct.RefCell.html#method.map_split
[`ptr::hash`]: https://doc.rust-lang.org/stable/std/ptr/fn.hash.html
[`Range::contains`]: https://doc.rust-lang.org/std/ops/struct.Range.html#method.contains
[`RangeFrom::contains`]: https://doc.rust-lang.org/std/ops/struct.RangeFrom.html#method.contains
[`RangeTo::contains`]: https://doc.rust-lang.org/std/ops/struct.RangeTo.html#method.contains
[`RangeInclusive::contains`]: https://doc.rust-lang.org/std/ops/struct.RangeInclusive.html#method.contains
[`RangeToInclusive::contains`]: https://doc.rust-lang.org/std/ops/struct.RangeToInclusive.html#method.contains
[`Option::copied`]: https://doc.rust-lang.org/std/option/enum.Option.html#method.copied
@Centril Centril mentioned this pull request Jul 25, 2019
5 tasks
@ollpu ollpu mentioned this pull request Oct 26, 2021
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. relnotes Marks issues that should be documented in the release notes of the next release. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-lang Relevant to the language team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants