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

Rust 2018: NLL migrate mode => hard error #63565

Merged
merged 2 commits into from
Sep 6, 2019

Conversation

Centril
Copy link
Contributor

@Centril Centril commented Aug 14, 2019

As per decision on a language team meeting as described in #63565 (comment), we refuse to downgrade NLL errors, that AST borrowck accepts, into warnings and keep them as hard errors.

cc @rust-lang/lang
cc @rust-lang/wg-compiler-nll

@Centril
Copy link
Contributor Author

Centril commented Aug 14, 2019

@bors try

@bors
Copy link
Contributor

bors commented Aug 14, 2019

⌛ Trying commit 00d60a5 with merge 75eff02...

bors added a commit that referenced this pull request Aug 14, 2019
[DO NOT MERGE] NLL crater run 3: deny NLL warnings in migrate mode

Forward port of #60914.

r? @ghost

cc @rust-lang/lang
cc @rust-lang/wg-compiler-nll
@rust-highfive

This comment has been minimized.

@bors
Copy link
Contributor

bors commented Aug 14, 2019

☀️ Try build successful - checks-azure
Build commit: 75eff02

@Centril
Copy link
Contributor Author

Centril commented Aug 14, 2019

@craterbot run mode=check-only

@craterbot
Copy link
Collaborator

👌 Experiment pr-63565 created and queued.
🤖 Automatically detected try build 75eff02
🔍 You can check out the queue and this experiment's details.

ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more

@craterbot craterbot added the S-waiting-on-crater Status: Waiting on a crater run to be completed. label Aug 14, 2019
@craterbot
Copy link
Collaborator

🚧 Experiment pr-63565 is now running on agent aws-1.

ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more

@craterbot
Copy link
Collaborator

🎉 Experiment pr-63565 is completed!
📊 1622 regressed and 0 fixed (70078 total)
📰 Open the full report.

⚠️ If you notice any spurious failure please add them to the blacklist!
ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more

@craterbot craterbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-crater Status: Waiting on a crater run to be completed. labels Sep 4, 2019
@Mark-Simulacrum
Copy link
Member

I'll have a report ready soon

@Mark-Simulacrum
Copy link
Member

Details: https://gist.github.com/Mark-Simulacrum/001b622ba1ca080a4f8e8e02608a1586

Most regressions are from url v1.7.0 (latest is 2.1) and nalgebra v0.16.13 (latest 0.18.1), with more than 885 regressed reverse-deps for url and more than 244 for nalgebra.

borrow may still be in use when destructor runs

https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/galvanize_cli-0.0.1/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/bvh_anim-0.4.0/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/osprey-0.4.4/log.txt

cannot borrow ... as immutable because it is also borrowed as mutable

https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/osprey-0.4.4/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/LFalch.arkanoid/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/nano-work-server-0.1.7/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/cucumber-0.3.1/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/BenBergman.dome-sim/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/panini-0.0.0/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/capnp-gj-0.2.1/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/three-0.4.0/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/hegza.vcn-inference-rs/log.txt

cannot borrow ... as mutable, as it is behind a *const pointer

https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/GeoffClements.Storm/log.txt

borrowed data escapes outside of function

https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/httimple-0.1.7/log.txt

cannot use ... because it was mutably borrowed

https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/calculate-0.5.1/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/johshoff.find-tempo-rust-backend/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/ethowitz.life/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/mmueller.advent2016/log.txt

lifetime may not live long enough or parameter may not live long enough

https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/amethyst_tools-0.8.0/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/clipping-0.1.1/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/fred-1.1.0/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/trust-acme-0.1.0/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/Gopiandcode.html_gen/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/SiegeEngine.siege-example-client/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/fwcd.RustyGUI/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/sarahlim.parcheesi/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/stephenc.envsub/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/tigertoes.fe2o3/log.txt

+= (#27868 perhaps?)

https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/yggie.mach/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/akaze-0.1.3/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/10XGenomics.vartrix/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/LEARAX.red_rim/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/AuroransSolis.fractions_and_matrices/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/Jbat1Jumper.Twins/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/RustyVolley.RustyVolleySrc/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/SpinResearch.RustySecrets/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/achankf.game-project/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/akitsu-sanae.ysd/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/crazymerlyn.kilo-rs/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/eggmund.Prey/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/floriama.agents/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/koba-e964.rust-number-theory/log.txt

cannot move out of ... because it is borrowed

https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/rental-0.5.4/log.txt

assign to part of moved value

https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/async-ssh-0.1.2/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/abadi199.pustaka-rs/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/swindon-0.7.8/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/fernandobatels.blitz-money/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/jdelgadoalfonso.sshclient/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/nero-services.nero/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/swindon-rs.swindon/log.txt

borrow may still be in use when destructor runs

https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/finchers-json-0.6.0/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/leguichet-0.1.8/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/yara-0.1.0/log.txt
https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/ChrisPWill.login_api/log.txt

explicit lifetime required

https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/reg/espota-server-0.3.0/log.txt

borrowed data escapes outside of function

https://crater-reports.s3.amazonaws.com/pr-63565/try%2375eff020d0923c035c2fe220db4a0465cd847048/gh/lawliet89.pr_demon/log.txt

@Mark-Simulacrum
Copy link
Member

briefly discussed with @Centril on discord, results are that I will go file PRs against nalgebra, url, and rusttype of the appropriate versions as a hopefully patch-version bump and try to get those released, and then we'll do another crater run that'll hopefully be much smaller in result size

@Centril Centril added I-nominated T-lang Relevant to the language team, which will review and decide on the PR/issue. labels Sep 5, 2019
@Centril
Copy link
Contributor Author

Centril commented Sep 5, 2019

We discussed NLL migrate mode in today's language team meeting based on the data above (n.b. 122 of the crates were GitHub ones), the report provided by @Mark-Simulacrum in https://gist.github.com/Mark-Simulacrum/ff49698b6bffc5a40bf9c20ec255d619, etc.

We reached the following conclusions:

  • We should make NLL warnings hard errors on Rust 2018 in 1.39.
  • We should give folks fair warnings through dedicated post on blog.rust-lang.org. This post should include links to @pnkfelix's previous blog post, announce the time line, etc..
    • Not directly discussed in the meeting but worth noting / included in the report:
      • @Mark-Simulacrum is working on making patch releases for certain key crates to make cargo update smoother.
      • We can consider batching a series of emails asking folks to fix their stuff.
      • Other mitigations noted in Mark's report above.
  • We should make NLL warnings hard errors on Rust 2015 in 1.40.

I'll make the change for Rust 2018 in this PR.

@Centril Centril added relnotes Marks issues that should be documented in the release notes of the next release. and removed I-nominated labels Sep 5, 2019
@Centril Centril added this to the 1.39 milestone Sep 5, 2019
@Centril Centril changed the title [DO NOT MERGE] NLL crater run 3: deny NLL warnings in migrate mode [WIP] Turn NLL migrate mode into hard error on Rust 2018 Sep 5, 2019
@Centril Centril force-pushed the deny-nll-migrate-mode branch from 00d60a5 to 0554095 Compare September 6, 2019 09:06
@Centril Centril changed the title [WIP] Turn NLL migrate mode into hard error on Rust 2018 Rust 2018: NLL migrate mode => hard error Sep 6, 2019
@Centril
Copy link
Contributor Author

Centril commented Sep 6, 2019

Should be ready now.

r? @matthewjasper

@matthewjasper
Copy link
Contributor

@bors r+

@bors
Copy link
Contributor

bors commented Sep 6, 2019

📌 Commit 0554095 has been approved by matthewjasper

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Sep 6, 2019
@bors
Copy link
Contributor

bors commented Sep 6, 2019

⌛ Testing commit 0554095 with merge f0b1cd1ef0edf793ad6a009b82befea4b74271c9...

Centril added a commit to Centril/rust that referenced this pull request Sep 6, 2019
…tthewjasper

Rust 2018: NLL migrate mode => hard error

As per decision on a language team meeting as described in rust-lang#63565 (comment), we refuse to downgrade NLL errors, that AST borrowck accepts, into warnings and keep them as hard errors.

cc @rust-lang/lang
cc @rust-lang/wg-compiler-nll
@Centril
Copy link
Contributor Author

Centril commented Sep 6, 2019

@bors retry rolled up.

bors added a commit that referenced this pull request Sep 6, 2019
Rollup of 8 pull requests

Successful merges:

 - #63565 (Rust 2018: NLL migrate mode => hard error)
 - #63969 (Add missing examples for Option type)
 - #64067 (Remove no-prefer-dynamic from valgrind tests)
 - #64166 (Better way of conditioning the sanitizer builds)
 - #64189 (annotate-snippet emitter: Deal with multispans from macros, too)
 - #64202 (Fixed grammar/style in some error messages)
 - #64206 (annotate-snippet emitter: Update an issue number)
 - #64208 (it's more pythonic to use 'is not None' in python files)

Failed merges:

r? @ghost
@bors
Copy link
Contributor

bors commented Sep 6, 2019

⌛ Testing commit 0554095 with merge 6e19f3f...

@bors bors merged commit 0554095 into rust-lang:master Sep 6, 2019
@Centril Centril deleted the deny-nll-migrate-mode branch September 7, 2019 05:06
Centril added a commit to Centril/rust that referenced this pull request Sep 26, 2019
…hewjasper

 Rust 2015: No longer downgrade NLL errors

As per decision on a language team meeting as described in rust-lang#63565 (comment), in Rust 2015, we refuse to downgrade NLL errors, that AST borrowck accepts, into warnings and keep them as hard errors.

The remaining work to throw out AST borrowck and adjust some tests still remains after this PR.

Fixes rust-lang#38899
Fixes rust-lang#53432
Fixes rust-lang#45157
Fixes rust-lang#31567
Fixes rust-lang#27868
Fixes rust-lang#47366

r? @matthewjasper
Centril added a commit to Centril/rust that referenced this pull request Sep 26, 2019
…hewjasper

 Rust 2015: No longer downgrade NLL errors

As per decision on a language team meeting as described in rust-lang#63565 (comment), in Rust 2015, we refuse to downgrade NLL errors, that AST borrowck accepts, into warnings and keep them as hard errors.

The remaining work to throw out AST borrowck and adjust some tests still remains after this PR.

Fixes rust-lang#38899
Fixes rust-lang#53432
Fixes rust-lang#45157
Fixes rust-lang#31567
Fixes rust-lang#27868
Fixes rust-lang#47366

r? @matthewjasper
Centril added a commit to Centril/rust that referenced this pull request Sep 26, 2019
…hewjasper

 Rust 2015: No longer downgrade NLL errors

As per decision on a language team meeting as described in rust-lang#63565 (comment), in Rust 2015, we refuse to downgrade NLL errors, that AST borrowck accepts, into warnings and keep them as hard errors.

The remaining work to throw out AST borrowck and adjust some tests still remains after this PR.

Fixes rust-lang#38899
Fixes rust-lang#53432
Fixes rust-lang#45157
Fixes rust-lang#31567
Fixes rust-lang#27868
Fixes rust-lang#47366

r? @matthewjasper
Centril added a commit to Centril/rust that referenced this pull request Sep 26, 2019
…hewjasper

 Rust 2015: No longer downgrade NLL errors

As per decision on a language team meeting as described in rust-lang#63565 (comment), in Rust 2015, we refuse to downgrade NLL errors, that AST borrowck accepts, into warnings and keep them as hard errors.

The remaining work to throw out AST borrowck and adjust some tests still remains after this PR.

Fixes rust-lang#38899
Fixes rust-lang#53432
Fixes rust-lang#45157
Fixes rust-lang#31567
Fixes rust-lang#27868
Fixes rust-lang#47366

r? @matthewjasper
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Nov 11, 2019
Pkgsrc changes:
 * Remove patch which no longer applies (but what about RPATH?)
 * Adapt a few patches to changed files upstream.

Upstream changes:

Version 1.39.0 (2019-11-07)
===========================

Language
--------
- [You can now create `async` functions and blocks with `async fn`,
  `async move {}`, and `async {}` respectively, and you can now call
  `.await` on async expressions.][63209]
- [You can now use certain attributes on function, closure, and function
  pointer parameters.][64010] These attributes include `cfg`, `cfg_attr`,
  `allow`, `warn`, `deny`, `forbid` as well as inert helper attributes used
  by procedural macro attributes applied to items. e.g.
  ```rust
  fn len(
      #[cfg(windows)] slice: &[u16],
      #[cfg(not(windows))] slice: &[u8],
  ) -> usize {
      slice.len()
  }
  ```
- [You can now take shared references to bind-by-move patterns in the
  `if` guards of `match` arms.][63118] e.g.
  ```rust
  fn main() {
      let array: Box<[u8; 4]> = Box::new([1, 2, 3, 4]);

      match array {
          nums
  //      ---- `nums` is bound by move.
              if nums.iter().sum::<u8>() == 10
  //                 ^------ `.iter()` implicitly takes a reference to `nums`.
          => {
              drop(nums);
  //          ----------- Legal as `nums` was bound by move and so we have ownership.
          }
          _ => unreachable!(),
      }
  }
  ```

Compiler
--------
- [Added tier 3\* support for the `i686-unknown-uefi` target.][64334]
- [Added tier 3 support for the `sparc64-unknown-openbsd` target.][63595]
- [rustc will now trim code snippets in diagnostics to fit in your terminal.]
  [63402] **Note** Cargo currently doesn't use this feature. Refer to
  [cargo#7315][cargo/7315] to track this feature's progress.
- [You can now pass `--show-output` argument to test binaries to print the
  output of successful tests.][62600]

\* Refer to Rust's [platform support page][forge-platform-support] for more
information on Rust's tiered platform support.

Libraries
---------
- [`Vec::new` and `String::new` are now `const` functions.][64028]
- [`LinkedList::new` is now a `const` function.][63684]
- [`str::len`, `[T]::len` and `str::as_bytes` are now `const` functions.][63770]
- [The `abs`, `wrapping_abs`, and `overflowing_abs` numeric functions are
  now `const`.][63786]

Stabilized APIs
---------------
- [`Pin::into_inner`]
- [`Instant::checked_duration_since`]
- [`Instant::saturating_duration_since`]

Cargo
-----
- [You can now publish git dependencies if supplied with a `version`.]
  [cargo/7237]
- [The `--all` flag has been renamed to `--workspace`.][cargo/7241] Using
  `--all` is now deprecated.

Misc
----
- [You can now pass `-Clinker` to rustdoc to control the linker used
  for compiling doctests.][63834]

Compatibility Notes
-------------------
- [Code that was previously accepted by the old borrow checker, but rejected by
  the NLL borrow checker is now a hard error in Rust 2018.][63565] This was
  previously a warning, and will also become a hard error in the Rust 2015
  edition in the 1.40.0 release.
- [`rustdoc` now requires `rustc` to be installed and in the same directory to
  run tests.][63827] This should improve performance when running a large
  amount of doctests.
- [The `try!` macro will now issue a deprecation warning.][62672] It is
  recommended to use the `?` operator instead.
- [`asinh(-0.0)` now correctly returns `-0.0`.][63698] Previously this
  returned `0.0`.

[62600]: rust-lang/rust#62600
[62672]: rust-lang/rust#62672
[63118]: rust-lang/rust#63118
[63209]: rust-lang/rust#63209
[63402]: rust-lang/rust#63402
[63565]: rust-lang/rust#63565
[63595]: rust-lang/rust#63595
[63684]: rust-lang/rust#63684
[63698]: rust-lang/rust#63698
[63770]: rust-lang/rust#63770
[63786]: rust-lang/rust#63786
[63827]: rust-lang/rust#63827
[63834]: rust-lang/rust#63834
[63927]: rust-lang/rust#63927
[63933]: rust-lang/rust#63933
[63934]: rust-lang/rust#63934
[63938]: rust-lang/rust#63938
[63940]: rust-lang/rust#63940
[63941]: rust-lang/rust#63941
[63945]: rust-lang/rust#63945
[64010]: rust-lang/rust#64010
[64028]: rust-lang/rust#64028
[64334]: rust-lang/rust#64334
[cargo/7237]: rust-lang/cargo#7237
[cargo/7241]: rust-lang/cargo#7241
[cargo/7315]: rust-lang/cargo#7315
[`Pin::into_inner`]: https://doc.rust-lang.org/std/pin/struct.Pin.html#method.into_inner
[`Instant::checked_duration_since`]: https://doc.rust-lang.org/std/time/struct.Instant.html#method.checked_duration_since
[`Instant::saturating_duration_since`]: https://doc.rust-lang.org/std/time/struct.Instant.html#method.saturating_duration_since
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
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.

6 participants