Skip to content

Commit 4827cee

Browse files
committed
Auto merge of rust-lang#103745 - matthiaskrgr:rollup-hipjva8, r=matthiaskrgr
Rollup of 8 pull requests Successful merges: - rust-lang#100006 (Make `core::mem::copy` const) - rust-lang#102659 (1.65.0 release notes) - rust-lang#103124 (Add tests for autoderef on block tail) - rust-lang#103253 (rustdoc: add test case for masked blanket impl) - rust-lang#103715 (use consistent terminology) - rust-lang#103722 (Fix z-indexes of code example feature and cleanup its CSS) - rust-lang#103726 (Avoid unnecessary `&str` to `String` conversions) - rust-lang#103737 (rustdoc: use CSS margin/padding shorthand when all are being set) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2 parents 15ee24a + 9c5e61c commit 4827cee

File tree

23 files changed

+295
-52
lines changed

23 files changed

+295
-52
lines changed

RELEASES.md

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,106 @@
1+
Version 1.65.0 (2022-11-03)
2+
==========================
3+
4+
Language
5+
--------
6+
- [Error on `as` casts of enums with `#[non_exhaustive]` variants](https://github.com/rust-lang/rust/pull/92744/)
7+
- [Stabilize `let else`](https://github.com/rust-lang/rust/pull/93628/)
8+
- [Stabilize generic associated types (GATs)](https://github.com/rust-lang/rust/pull/96709/)
9+
- [Add lints `let_underscore_drop`, `let_underscore_lock`, and `let_underscore_must_use` from Clippy](https://github.com/rust-lang/rust/pull/97739/)
10+
- [Stabilize `break`ing from arbitrary labeled blocks ("label-break-value")](https://github.com/rust-lang/rust/pull/99332/)
11+
- [Uninitialized integers, floats, and raw pointers are now considered immediate UB](https://github.com/rust-lang/rust/pull/98919/).
12+
Usage of `MaybeUninit` is the correct way to work with uninitialized memory.
13+
- [Stabilize raw-dylib for Windows x86_64, aarch64, and thumbv7a](https://github.com/rust-lang/rust/pull/99916/)
14+
- [Do not allow `Drop` impl on foreign ADTs](https://github.com/rust-lang/rust/pull/99576/)
15+
16+
Compiler
17+
--------
18+
- [Stabilize -Csplit-debuginfo on Linux](https://github.com/rust-lang/rust/pull/98051/)
19+
- [Use niche-filling optimization even when multiple variants have data](https://github.com/rust-lang/rust/pull/94075/)
20+
- [Associated type projections are now verified to be well-formed prior to resolving the underlying type](https://github.com/rust-lang/rust/pull/99217/#issuecomment-1209365630)
21+
- [Stringify non-shorthand visibility correctly](https://github.com/rust-lang/rust/pull/100350/)
22+
- [Normalize struct field types when unsizing](https://github.com/rust-lang/rust/pull/101831/)
23+
- [Update to LLVM 15](https://github.com/rust-lang/rust/pull/99464/)
24+
- [Fix aarch64 call abi to correctly zeroext when needed](https://github.com/rust-lang/rust/pull/97800/)
25+
- [debuginfo: Generalize C++-like encoding for enums](https://github.com/rust-lang/rust/pull/98393/)
26+
- [Add `special_module_name` lint](https://github.com/rust-lang/rust/pull/94467/)
27+
- [Add support for generating unique profraw files by default when using `-C instrument-coverage`](https://github.com/rust-lang/rust/pull/100384/)
28+
- [Allow dynamic linking for iOS/tvOS targets](https://github.com/rust-lang/rust/pull/100636/)
29+
30+
New targets:
31+
32+
- [Add armv4t-none-eabi as a tier 3 target](https://github.com/rust-lang/rust/pull/100244/)
33+
- [Add powerpc64-unknown-openbsd and riscv64-unknown-openbsd as tier 3 targets](https://github.com/rust-lang/rust/pull/101025/)
34+
- Refer to Rust's [platform support page][platform-support-doc] for more
35+
information on Rust's tiered platform support.
36+
37+
Libraries
38+
---------
39+
40+
- [Don't generate `PartialEq::ne` in derive(PartialEq)](https://github.com/rust-lang/rust/pull/98655/)
41+
- [Windows RNG: Use `BCRYPT_RNG_ALG_HANDLE` by default](https://github.com/rust-lang/rust/pull/101325/)
42+
- [Forbid mixing `System` with direct system allocator calls](https://github.com/rust-lang/rust/pull/101394/)
43+
- [Document no support for writing to non-blocking stdio/stderr](https://github.com/rust-lang/rust/pull/101416/)
44+
- [`std::layout::Layout` size must not overflow `isize::MAX` when rounded up to `align`](https://github.com/rust-lang/rust/pull/95295)
45+
This also changes the safety conditions on `Layout::from_size_align_unchecked`.
46+
47+
Stabilized APIs
48+
---------------
49+
50+
- [`std::backtrace::Backtrace`](https://doc.rust-lang.org/stable/std/backtrace/struct.Backtrace.html)
51+
- [`Bound::as_ref`](https://doc.rust-lang.org/stable/std/ops/enum.Bound.html#method.as_ref)
52+
- [`std::io::read_to_string`](https://doc.rust-lang.org/stable/std/io/fn.read_to_string.html)
53+
- [`<*const T>::cast_mut`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.cast_mut)
54+
- [`<*mut T>::cast_const`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.cast_const)
55+
56+
These APIs are now stable in const contexts:
57+
58+
- [`<*const T>::offset_from`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from)
59+
- [`<*mut T>::offset_from`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from)
60+
61+
Cargo
62+
-----
63+
64+
- [Apply GitHub fast path even for partial hashes](https://github.com/rust-lang/cargo/pull/10807/)
65+
- [Do not add home bin path to PATH if it's already there](https://github.com/rust-lang/cargo/pull/11023/)
66+
- [Take priority into account within the pending queue](https://github.com/rust-lang/cargo/pull/11032/).
67+
This slightly optimizes job scheduling by Cargo, with typically small improvements on larger crate graph builds.
68+
69+
Compatibility Notes
70+
-------------------
71+
72+
- [`std::layout::Layout` size must not overflow `isize::MAX` when rounded up to `align`](https://github.com/rust-lang/rust/pull/95295).
73+
This also changes the safety conditions on `Layout::from_size_align_unchecked`.
74+
- [`PollFn` now only implements `Unpin` if the closure is `Unpin`](https://github.com/rust-lang/rust/pull/102737).
75+
This is a possible breaking change if users were relying on the blanket unpin implementation.
76+
See discussion on the PR for details of why this change was made.
77+
- [Drop ExactSizeIterator impl from std::char::EscapeAscii](https://github.com/rust-lang/rust/pull/99880)
78+
This is a backwards-incompatible change to the standard library's surface
79+
area, but is unlikely to affect real world usage.
80+
- [Do not consider a single repeated lifetime eligible for elision in the return type](https://github.com/rust-lang/rust/pull/103450)
81+
This behavior was unintentionally changed in 1.64.0, and this release reverts that change by making this an error again.
82+
- [Reenable disabled early syntax gates as future-incompatibility lints](https://github.com/rust-lang/rust/pull/99935/)
83+
- [Update the minimum external LLVM to 13](https://github.com/rust-lang/rust/pull/100460/)
84+
- [Don't duplicate file descriptors into stdio fds](https://github.com/rust-lang/rust/pull/101426/)
85+
- [Sunset RLS](https://github.com/rust-lang/rust/pull/100863/)
86+
- [Deny usage of `#![cfg_attr(..., crate_type = ...)]` to set the crate type](https://github.com/rust-lang/rust/pull/99784/)
87+
This strengthens the forward compatibility lint deprecated_cfg_attr_crate_type_name to deny.
88+
- [`llvm-has-rust-patches` allows setting the build system to treat the LLVM as having Rust-specific patches](https://github.com/rust-lang/rust/pull/101072)
89+
This option may need to be set for distributions that are building Rust with a patched LLVM via `llvm-config`, not the built-in LLVM.
90+
91+
Internal Changes
92+
----------------
93+
94+
These changes do not affect any public interfaces of Rust, but they represent
95+
significant improvements to the performance or internals of rustc and related
96+
tools.
97+
98+
- [Add `x.sh` and `x.ps1` shell scripts](https://github.com/rust-lang/rust/pull/99992/)
99+
- [compiletest: use target cfg instead of hard-coded tables](https://github.com/rust-lang/rust/pull/100260/)
100+
- [Use object instead of LLVM for reading bitcode from rlibs](https://github.com/rust-lang/rust/pull/98100/)
101+
- [Enable MIR inlining for optimized compilations](https://github.com/rust-lang/rust/pull/91743)
102+
This provides a 3-10% improvement in compiletimes for real world crates. See [perf results](https://perf.rust-lang.org/compare.html?start=aedf78e56b2279cc869962feac5153b6ba7001ed&end=0075bb4fad68e64b6d1be06bf2db366c30bc75e1&stat=instructions:u).
103+
1104
Version 1.64.0 (2022-09-22)
2105
===========================
3106

compiler/rustc_mir_build/src/thir/pattern/check_match.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,7 @@ impl<'p, 'tcx> MatchVisitor<'_, 'p, 'tcx> {
507507
_ => "aren't",
508508
},
509509
),
510-
" else { todo!() }".to_string(),
510+
" else { todo!() }",
511511
Applicability::HasPlaceholders,
512512
);
513513
}

compiler/rustc_resolve/src/late/diagnostics.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -784,10 +784,7 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
784784
return false;
785785
}
786786
err.code(rustc_errors::error_code!(E0411));
787-
err.span_label(
788-
span,
789-
"`Self` is only available in impls, traits, and type definitions".to_string(),
790-
);
787+
err.span_label(span, "`Self` is only available in impls, traits, and type definitions");
791788
if let Some(item_kind) = self.diagnostic_metadata.current_item {
792789
err.span_label(
793790
item_kind.ident.span,

compiler/rustc_trait_selection/src/traits/const_evaluatable.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -192,12 +192,12 @@ pub fn is_const_evaluatable<'tcx>(
192192
}
193193
let concrete = infcx.const_eval_resolve(param_env, uv, Some(span));
194194
match concrete {
195-
Err(ErrorHandled::TooGeneric) => {
196-
Err(NotConstEvaluatable::Error(infcx.tcx.sess.delay_span_bug(
197-
span,
198-
format!("Missing value for constant, but no error reported?"),
199-
)))
200-
}
195+
Err(ErrorHandled::TooGeneric) => Err(NotConstEvaluatable::Error(
196+
infcx
197+
.tcx
198+
.sess
199+
.delay_span_bug(span, "Missing value for constant, but no error reported?"),
200+
)),
201201
Err(ErrorHandled::Linted) => {
202202
let reported = infcx
203203
.tcx

library/core/src/async_iter/async_iter.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::ops::DerefMut;
22
use crate::pin::Pin;
33
use crate::task::{Context, Poll};
44

5-
/// An interface for dealing with asynchronous iterators.
5+
/// A trait for dealing with asynchronous iterators.
66
///
77
/// This is the main async iterator trait. For more about the concept of async iterators
88
/// generally, please see the [module-level documentation]. In particular, you

library/core/src/iter/traits/iterator.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use super::super::{
1414

1515
fn _assert_is_object_safe(_: &dyn Iterator<Item = ()>) {}
1616

17-
/// An interface for dealing with iterators.
17+
/// A trait for dealing with iterators.
1818
///
1919
/// This is the main iterator trait. For more about the concept of iterators
2020
/// generally, please see the [module-level documentation]. In particular, you

library/core/src/mem/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1004,7 +1004,7 @@ pub fn drop<T>(_x: T) {}
10041004
/// ```
10051005
#[inline]
10061006
#[unstable(feature = "mem_copy_fn", issue = "98262")]
1007-
pub fn copy<T: Copy>(x: &T) -> T {
1007+
pub const fn copy<T: Copy>(x: &T) -> T {
10081008
*x
10091009
}
10101010

src/librustdoc/html/highlight.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,12 @@ pub(crate) fn render_source_with_highlighting(
7272
line_numbers: Buffer,
7373
href_context: HrefContext<'_, '_, '_>,
7474
decoration_info: DecorationInfo,
75+
extra: Option<&str>,
7576
) {
7677
write_header(out, "", Some(line_numbers), Tooltip::None);
78+
if let Some(extra) = extra {
79+
out.push_str(extra);
80+
}
7781
write_code(out, src, Some(href_context), Some(decoration_info));
7882
write_footer(out, None);
7983
}

src/librustdoc/html/render/mod.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2869,10 +2869,6 @@ fn render_call_locations(w: &mut Buffer, cx: &mut Context<'_>, item: &clean::Ite
28692869
write!(w, r#"<span class="prev">&pr;</span> <span class="next">&sc;</span>"#);
28702870
}
28712871

2872-
if needs_expansion {
2873-
write!(w, r#"<span class="expand">&varr;</span>"#);
2874-
}
2875-
28762872
// Look for the example file in the source map if it exists, otherwise return a dummy span
28772873
let file_span = (|| {
28782874
let source_map = tcx.sess.source_map();
@@ -2906,7 +2902,7 @@ fn render_call_locations(w: &mut Buffer, cx: &mut Context<'_>, item: &clean::Ite
29062902
cx,
29072903
&root_path,
29082904
highlight::DecorationInfo(decoration_info),
2909-
sources::SourceContext::Embedded { offset: line_min },
2905+
sources::SourceContext::Embedded { offset: line_min, needs_expansion },
29102906
);
29112907
write!(w, "</div></div>");
29122908

src/librustdoc/html/sources.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ where
258258

259259
pub(crate) enum SourceContext {
260260
Standalone,
261-
Embedded { offset: usize },
261+
Embedded { offset: usize, needs_expansion: bool },
262262
}
263263

264264
/// Wrapper struct to render the source code of a file. This will do things like
@@ -274,14 +274,18 @@ pub(crate) fn print_src(
274274
) {
275275
let lines = s.lines().count();
276276
let mut line_numbers = Buffer::empty_from(buf);
277+
let extra;
277278
line_numbers.write_str("<pre class=\"src-line-numbers\">");
278279
match source_context {
279280
SourceContext::Standalone => {
281+
extra = None;
280282
for line in 1..=lines {
281283
writeln!(line_numbers, "<span id=\"{0}\">{0}</span>", line)
282284
}
283285
}
284-
SourceContext::Embedded { offset } => {
286+
SourceContext::Embedded { offset, needs_expansion } => {
287+
extra =
288+
if needs_expansion { Some(r#"<span class="expand">&varr;</span>"#) } else { None };
285289
for line in 1..=lines {
286290
writeln!(line_numbers, "<span>{0}</span>", line + offset)
287291
}
@@ -297,5 +301,6 @@ pub(crate) fn print_src(
297301
line_numbers,
298302
highlight::HrefContext { context, file_span, root_path, current_href },
299303
decoration_info,
304+
extra,
300305
);
301306
}

0 commit comments

Comments
 (0)