Skip to content

Commit 69f9c33

Browse files
committed
Auto merge of rust-lang#105563 - pietroalbini:pa-stable-1.66.0, r=pietroalbini
[stable] Prepare 1.66.0 release This PR prepares the artifacts for the 1.66.0 release. The following PRs have been backported: * rust-lang#104782 * rust-lang#105023 * rust-lang#104558 * rust-lang#104610 * rust-lang#103989 * rust-lang#104650 * rust-lang#105539 * rust-lang#105477 r? `@ghost`
2 parents 0040709 + c9aa73c commit 69f9c33

File tree

21 files changed

+347
-49
lines changed

21 files changed

+347
-49
lines changed

.github/workflows/ci.yml

+13
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,9 @@ jobs:
9696
- name: install sccache
9797
run: src/ci/scripts/install-sccache.sh
9898
if: success() && !env.SKIP_JOB
99+
- name: select Xcode
100+
run: src/ci/scripts/select-xcode.sh
101+
if: success() && !env.SKIP_JOB
99102
- name: install clang
100103
run: src/ci/scripts/install-clang.sh
101104
if: success() && !env.SKIP_JOB
@@ -301,6 +304,7 @@ jobs:
301304
RUST_CONFIGURE_ARGS: "--enable-full-tools --enable-sanitizers --enable-profiler --set rust.jemalloc --set llvm.ninja=false"
302305
RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
303306
MACOSX_DEPLOYMENT_TARGET: 10.7
307+
SELECT_XCODE: /Applications/Xcode_13.4.1.app
304308
NO_LLVM_ASSERTIONS: 1
305309
NO_DEBUG_ASSERTIONS: 1
306310
NO_OVERFLOW_CHECKS: 1
@@ -312,6 +316,7 @@ jobs:
312316
RUST_CONFIGURE_ARGS: "--enable-sanitizers --enable-profiler --set rust.jemalloc --set llvm.ninja=false"
313317
RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
314318
MACOSX_DEPLOYMENT_TARGET: 10.7
319+
SELECT_XCODE: /Applications/Xcode_13.4.1.app
315320
NO_LLVM_ASSERTIONS: 1
316321
NO_DEBUG_ASSERTIONS: 1
317322
NO_OVERFLOW_CHECKS: 1
@@ -322,6 +327,7 @@ jobs:
322327
RUST_CONFIGURE_ARGS: "--enable-extended --enable-profiler --set rust.jemalloc --set llvm.ninja=false"
323328
RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
324329
MACOSX_DEPLOYMENT_TARGET: 10.7
330+
SELECT_XCODE: /Applications/Xcode_13.4.1.app
325331
NO_LLVM_ASSERTIONS: 1
326332
NO_DEBUG_ASSERTIONS: 1
327333
NO_OVERFLOW_CHECKS: 1
@@ -353,6 +359,7 @@ jobs:
353359
SCRIPT: "./x.py dist bootstrap --include-default-paths --stage 2"
354360
RUST_CONFIGURE_ARGS: "--build=x86_64-apple-darwin --host=aarch64-apple-darwin --target=aarch64-apple-darwin --enable-full-tools --enable-sanitizers --enable-profiler --disable-docs --set rust.jemalloc --set llvm.ninja=false"
355361
RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
362+
SELECT_XCODE: /Applications/Xcode_13.4.1.app
356363
USE_XCODE_CLANG: 1
357364
MACOSX_DEPLOYMENT_TARGET: 11.0
358365
MACOSX_STD_DEPLOYMENT_TARGET: 11.0
@@ -503,6 +510,9 @@ jobs:
503510
- name: install sccache
504511
run: src/ci/scripts/install-sccache.sh
505512
if: success() && !env.SKIP_JOB
513+
- name: select Xcode
514+
run: src/ci/scripts/select-xcode.sh
515+
if: success() && !env.SKIP_JOB
506516
- name: install clang
507517
run: src/ci/scripts/install-clang.sh
508518
if: success() && !env.SKIP_JOB
@@ -615,6 +625,9 @@ jobs:
615625
- name: install sccache
616626
run: src/ci/scripts/install-sccache.sh
617627
if: success() && !env.SKIP_JOB
628+
- name: select Xcode
629+
run: src/ci/scripts/select-xcode.sh
630+
if: success() && !env.SKIP_JOB
618631
- name: install clang
619632
run: src/ci/scripts/install-clang.sh
620633
if: success() && !env.SKIP_JOB

RELEASES.md

+197
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,200 @@
1+
Version 1.66.0 (2022-12-15)
2+
==========================
3+
4+
Language
5+
--------
6+
- [Permit specifying explicit discriminants on all `repr(Int)` enums](https://github.com/rust-lang/rust/pull/95710/)
7+
```rust
8+
#[repr(u8)]
9+
enum Foo {
10+
A(u8) = 0,
11+
B(i8) = 1,
12+
C(bool) = 42,
13+
}
14+
```
15+
- [Allow transmutes between the same type differing only in lifetimes](https://github.com/rust-lang/rust/pull/101520/)
16+
- [Change constant evaluation errors from a deny-by-default lint to a hard error](https://github.com/rust-lang/rust/pull/102091/)
17+
- [Trigger `must_use` on `impl Trait` for supertraits](https://github.com/rust-lang/rust/pull/102287/)
18+
This makes `impl ExactSizeIterator` respect the existing `#[must_use]` annotation on `Iterator`.
19+
- [Allow `..X` and `..=X` in patterns](https://github.com/rust-lang/rust/pull/102275/)
20+
- [Uplift `clippy::for_loops_over_fallibles` lint into rustc](https://github.com/rust-lang/rust/pull/99696/)
21+
- [Stabilize `sym` operands in inline assembly](https://github.com/rust-lang/rust/pull/103168/)
22+
- [Update to Unicode 15](https://github.com/rust-lang/rust/pull/101912/)
23+
- [Opaque types no longer imply lifetime bounds](https://github.com/rust-lang/rust/pull/95474/)
24+
This is a soundness fix which may break code that was erroneously relying on this behavior.
25+
26+
Compiler
27+
--------
28+
- [Add armv5te-none-eabi and thumbv5te-none-eabi tier 3 targets](https://github.com/rust-lang/rust/pull/101329/)
29+
- Refer to Rust's [platform support page][platform-support-doc] for more
30+
information on Rust's tiered platform support.
31+
- [Add support for linking against macOS universal libraries](https://github.com/rust-lang/rust/pull/98736)
32+
33+
Libraries
34+
---------
35+
- [Fix `#[derive(Default)]` on a generic `#[default]` enum adding unnecessary `Default` bounds](https://github.com/rust-lang/rust/pull/101040/)
36+
- [Update to Unicode 15](https://github.com/rust-lang/rust/pull/101821/)
37+
38+
Stabilized APIs
39+
---------------
40+
41+
- [`proc_macro::Span::source_text`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.source_text)
42+
- [`uX::{checked_add_signed, overflowing_add_signed, saturating_add_signed, wrapping_add_signed}`](https://doc.rust-lang.org/stable/std/primitive.u8.html#method.checked_add_signed)
43+
- [`iX::{checked_add_unsigned, overflowing_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}`](https://doc.rust-lang.org/stable/std/primitive.i8.html#method.checked_add_unsigned)
44+
- [`iX::{checked_sub_unsigned, overflowing_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}`](https://doc.rust-lang.org/stable/std/primitive.i8.html#method.checked_sub_unsigned)
45+
- [`BTreeSet::{first, last, pop_first, pop_last}`](https://doc.rust-lang.org/stable/std/collections/struct.BTreeSet.html#method.first)
46+
- [`BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}`](https://doc.rust-lang.org/stable/std/collections/struct.BTreeMap.html#method.first_key_value)
47+
- [Add `AsFd` implementations for stdio lock types on WASI.](https://github.com/rust-lang/rust/pull/101768/)
48+
- [`impl TryFrom<Vec<T>> for Box<[T; N]>`](https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#impl-TryFrom%3CVec%3CT%2C%20Global%3E%3E-for-Box%3C%5BT%3B%20N%5D%2C%20Global%3E)
49+
- [`core::hint::black_box`](https://doc.rust-lang.org/stable/std/hint/fn.black_box.html)
50+
- [`Duration::try_from_secs_{f32,f64}`](https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.try_from_secs_f32)
51+
- [`Option::unzip`](https://doc.rust-lang.org/stable/std/option/enum.Option.html#method.unzip)
52+
- [`std::os::fd`](https://doc.rust-lang.org/stable/std/os/fd/index.html)
53+
54+
55+
Rustdoc
56+
-------
57+
58+
- [Add Rustdoc warning for invalid HTML tags in the documentation](https://github.com/rust-lang/rust/pull/101720/)
59+
60+
Cargo
61+
-----
62+
63+
- [Added `cargo remove` to remove dependencies from Cargo.toml](https://doc.rust-lang.org/nightly/cargo/commands/cargo-remove.html)
64+
- [`cargo publish` now waits for the new version to be downloadable before exiting](https://github.com/rust-lang/cargo/pull/11062)
65+
66+
See [detailed release notes](https://github.com/rust-lang/cargo/blob/master/CHANGELOG.md#cargo-166-2022-12-15) for more.
67+
68+
Compatibility Notes
69+
-------------------
70+
71+
- [Only apply `ProceduralMasquerade` hack to older versions of `rental`](https://github.com/rust-lang/rust/pull/94063/)
72+
- [Don't export `__heap_base` and `__data_end` on wasm32-wasi.](https://github.com/rust-lang/rust/pull/102385/)
73+
- [Don't export `__wasm_init_memory` on WebAssembly.](https://github.com/rust-lang/rust/pull/102426/)
74+
- [Only export `__tls_*` on wasm32-unknown-unknown.](https://github.com/rust-lang/rust/pull/102440/)
75+
- [Don't link to `libresolv` in libstd on Darwin](https://github.com/rust-lang/rust/pull/102766/)
76+
- [Update libstd's libc to 0.2.135 (to make `libstd` no longer pull in `libiconv.dylib` on Darwin)](https://github.com/rust-lang/rust/pull/103277/)
77+
- [Opaque types no longer imply lifetime bounds](https://github.com/rust-lang/rust/pull/95474/)
78+
This is a soundness fix which may break code that was erroneously relying on this behavior.
79+
- [Make `order_dependent_trait_objects` show up in future-breakage reports](https://github.com/rust-lang/rust/pull/102635/)
80+
- [Change std::process::Command spawning to default to inheriting the parent's signal mask](https://github.com/rust-lang/rust/pull/101077/)
81+
82+
Internal Changes
83+
----------------
84+
85+
These changes do not affect any public interfaces of Rust, but they represent
86+
significant improvements to the performance or internals of rustc and related
87+
tools.
88+
89+
- [Enable BOLT for LLVM compilation](https://github.com/rust-lang/rust/pull/94381/)
90+
- [Enable LTO for rustc_driver.so](https://github.com/rust-lang/rust/pull/101403/)
91+
92+
Version 1.65.0 (2022-11-03)
93+
==========================
94+
95+
Language
96+
--------
97+
- [Error on `as` casts of enums with `#[non_exhaustive]` variants](https://github.com/rust-lang/rust/pull/92744/)
98+
- [Stabilize `let else`](https://github.com/rust-lang/rust/pull/93628/)
99+
- [Stabilize generic associated types (GATs)](https://github.com/rust-lang/rust/pull/96709/)
100+
- [Add lints `let_underscore_drop` and `let_underscore_lock` from Clippy](https://github.com/rust-lang/rust/pull/97739/)
101+
- [Stabilize `break`ing from arbitrary labeled blocks ("label-break-value")](https://github.com/rust-lang/rust/pull/99332/)
102+
- [Uninitialized integers, floats, and raw pointers are now considered immediate UB](https://github.com/rust-lang/rust/pull/98919/).
103+
Usage of `MaybeUninit` is the correct way to work with uninitialized memory.
104+
- [Stabilize raw-dylib for Windows x86_64, aarch64, and thumbv7a](https://github.com/rust-lang/rust/pull/99916/)
105+
- [Do not allow `Drop` impl on foreign ADTs](https://github.com/rust-lang/rust/pull/99576/)
106+
107+
Compiler
108+
--------
109+
- [Stabilize -Csplit-debuginfo on Linux](https://github.com/rust-lang/rust/pull/98051/)
110+
- [Use niche-filling optimization even when multiple variants have data](https://github.com/rust-lang/rust/pull/94075/)
111+
- [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)
112+
- [Stringify non-shorthand visibility correctly](https://github.com/rust-lang/rust/pull/100350/)
113+
- [Normalize struct field types when unsizing](https://github.com/rust-lang/rust/pull/101831/)
114+
- [Update to LLVM 15](https://github.com/rust-lang/rust/pull/99464/)
115+
- [Fix aarch64 call abi to correctly zeroext when needed](https://github.com/rust-lang/rust/pull/97800/)
116+
- [debuginfo: Generalize C++-like encoding for enums](https://github.com/rust-lang/rust/pull/98393/)
117+
- [Add `special_module_name` lint](https://github.com/rust-lang/rust/pull/94467/)
118+
- [Add support for generating unique profraw files by default when using `-C instrument-coverage`](https://github.com/rust-lang/rust/pull/100384/)
119+
- [Allow dynamic linking for iOS/tvOS targets](https://github.com/rust-lang/rust/pull/100636/)
120+
121+
New targets:
122+
123+
- [Add armv4t-none-eabi as a tier 3 target](https://github.com/rust-lang/rust/pull/100244/)
124+
- [Add powerpc64-unknown-openbsd and riscv64-unknown-openbsd as tier 3 targets](https://github.com/rust-lang/rust/pull/101025/)
125+
- Refer to Rust's [platform support page][platform-support-doc] for more
126+
information on Rust's tiered platform support.
127+
128+
Libraries
129+
---------
130+
131+
- [Don't generate `PartialEq::ne` in derive(PartialEq)](https://github.com/rust-lang/rust/pull/98655/)
132+
- [Windows RNG: Use `BCRYPT_RNG_ALG_HANDLE` by default](https://github.com/rust-lang/rust/pull/101325/)
133+
- [Forbid mixing `System` with direct system allocator calls](https://github.com/rust-lang/rust/pull/101394/)
134+
- [Document no support for writing to non-blocking stdio/stderr](https://github.com/rust-lang/rust/pull/101416/)
135+
- [`std::layout::Layout` size must not overflow `isize::MAX` when rounded up to `align`](https://github.com/rust-lang/rust/pull/95295)
136+
This also changes the safety conditions on `Layout::from_size_align_unchecked`.
137+
138+
Stabilized APIs
139+
---------------
140+
141+
- [`std::backtrace::Backtrace`](https://doc.rust-lang.org/stable/std/backtrace/struct.Backtrace.html)
142+
- [`Bound::as_ref`](https://doc.rust-lang.org/stable/std/ops/enum.Bound.html#method.as_ref)
143+
- [`std::io::read_to_string`](https://doc.rust-lang.org/stable/std/io/fn.read_to_string.html)
144+
- [`<*const T>::cast_mut`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.cast_mut)
145+
- [`<*mut T>::cast_const`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.cast_const)
146+
147+
These APIs are now stable in const contexts:
148+
149+
- [`<*const T>::offset_from`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from)
150+
- [`<*mut T>::offset_from`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from)
151+
152+
Cargo
153+
-----
154+
155+
- [Apply GitHub fast path even for partial hashes](https://github.com/rust-lang/cargo/pull/10807/)
156+
- [Do not add home bin path to PATH if it's already there](https://github.com/rust-lang/cargo/pull/11023/)
157+
- [Take priority into account within the pending queue](https://github.com/rust-lang/cargo/pull/11032/).
158+
This slightly optimizes job scheduling by Cargo, with typically small improvements on larger crate graph builds.
159+
160+
Compatibility Notes
161+
-------------------
162+
163+
- [`std::layout::Layout` size must not overflow `isize::MAX` when rounded up to `align`](https://github.com/rust-lang/rust/pull/95295).
164+
This also changes the safety conditions on `Layout::from_size_align_unchecked`.
165+
- [`PollFn` now only implements `Unpin` if the closure is `Unpin`](https://github.com/rust-lang/rust/pull/102737).
166+
This is a possible breaking change if users were relying on the blanket unpin implementation.
167+
See discussion on the PR for details of why this change was made.
168+
- [Drop ExactSizeIterator impl from std::char::EscapeAscii](https://github.com/rust-lang/rust/pull/99880)
169+
This is a backwards-incompatible change to the standard library's surface
170+
area, but is unlikely to affect real world usage.
171+
- [Do not consider a single repeated lifetime eligible for elision in the return type](https://github.com/rust-lang/rust/pull/103450)
172+
This behavior was unintentionally changed in 1.64.0, and this release reverts that change by making this an error again.
173+
- [Reenable disabled early syntax gates as future-incompatibility lints](https://github.com/rust-lang/rust/pull/99935/)
174+
- [Update the minimum external LLVM to 13](https://github.com/rust-lang/rust/pull/100460/)
175+
- [Don't duplicate file descriptors into stdio fds](https://github.com/rust-lang/rust/pull/101426/)
176+
- [Sunset RLS](https://github.com/rust-lang/rust/pull/100863/)
177+
- [Deny usage of `#![cfg_attr(..., crate_type = ...)]` to set the crate type](https://github.com/rust-lang/rust/pull/99784/)
178+
This strengthens the forward compatibility lint deprecated_cfg_attr_crate_type_name to deny.
179+
- [`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)
180+
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.
181+
- Combining three or more languages (e.g. Objective C, C++ and Rust) into one binary may hit linker limitations when using `lld`. For more information, see [issue 102754][102754].
182+
183+
[102754]: https://github.com/rust-lang/rust/issues/102754
184+
185+
Internal Changes
186+
----------------
187+
188+
These changes do not affect any public interfaces of Rust, but they represent
189+
significant improvements to the performance or internals of rustc and related
190+
tools.
191+
192+
- [Add `x.sh` and `x.ps1` shell scripts](https://github.com/rust-lang/rust/pull/99992/)
193+
- [compiletest: use target cfg instead of hard-coded tables](https://github.com/rust-lang/rust/pull/100260/)
194+
- [Use object instead of LLVM for reading bitcode from rlibs](https://github.com/rust-lang/rust/pull/98100/)
195+
- [Enable MIR inlining for optimized compilations](https://github.com/rust-lang/rust/pull/91743)
196+
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).
197+
1198
Version 1.64.0 (2022-09-22)
2199
===========================
3200

compiler/rustc_middle/src/middle/limits.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ pub fn provide(providers: &mut ty::query::Providers) {
3838
tcx.hir().krate_attrs(),
3939
tcx.sess,
4040
sym::const_eval_limit,
41-
1_000_000,
41+
2_000_000,
4242
),
4343
}
4444
}

compiler/rustc_passes/src/reachable.rs

+11
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,17 @@ impl<'tcx> Visitor<'tcx> for ReachableContext<'tcx> {
116116

117117
intravisit::walk_expr(self, expr)
118118
}
119+
120+
fn visit_inline_asm(&mut self, asm: &'tcx hir::InlineAsm<'tcx>, id: hir::HirId) {
121+
for (op, _) in asm.operands {
122+
if let hir::InlineAsmOperand::SymStatic { def_id, .. } = op {
123+
if let Some(def_id) = def_id.as_local() {
124+
self.reachable_symbols.insert(def_id);
125+
}
126+
}
127+
}
128+
intravisit::walk_inline_asm(self, asm, id);
129+
}
119130
}
120131

121132
impl<'tcx> ReachableContext<'tcx> {

compiler/rustc_trait_selection/src/traits/project.rs

-15
Original file line numberDiff line numberDiff line change
@@ -565,21 +565,6 @@ impl<'a, 'b, 'tcx> TypeFolder<'tcx> for AssocTypeNormalizer<'a, 'b, 'tcx> {
565565
.flatten()
566566
.unwrap_or_else(|| ty.super_fold_with(self).into())
567567
};
568-
// For cases like #95134 we would like to catch overflows early
569-
// otherwise they slip away and cause ICE.
570-
let recursion_limit = self.tcx().recursion_limit();
571-
if !recursion_limit.value_within_limit(self.depth)
572-
// HACK: Don't overflow when running cargo doc see #100991
573-
&& !self.tcx().sess.opts.actually_rustdoc
574-
{
575-
let obligation = Obligation::with_depth(
576-
self.cause.clone(),
577-
recursion_limit.0,
578-
self.param_env,
579-
ty,
580-
);
581-
self.selcx.infcx().err_ctxt().report_overflow_error(&obligation, true);
582-
}
583568
debug!(
584569
?self.depth,
585570
?ty,

library/panic_unwind/src/lib.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ cfg_if::cfg_if! {
4242
// L4Re is unix family but does not yet support unwinding.
4343
#[path = "dummy.rs"]
4444
mod real_imp;
45-
} else if #[cfg(target_env = "msvc")] {
45+
} else if #[cfg(all(target_env = "msvc", not(target_arch = "arm")))] {
46+
// LLVM does not support unwinding on 32 bit ARM msvc (thumbv7a-pc-windows-msvc)
4647
#[path = "seh.rs"]
4748
mod real_imp;
4849
} else if #[cfg(any(

0 commit comments

Comments
 (0)