Skip to content

Don't eagerly convert principal to string - #108162

Merged
bors merged 1 commit into
rust-lang:masterfrom
clubby789:issue-108155
Feb 18, 2023
Merged

Don't eagerly convert principal to string#108162
bors merged 1 commit into
rust-lang:masterfrom
clubby789:issue-108155

Conversation

@clubby789

@clubby789clubby789 commented Feb 17, 2023

Copy link
Copy Markdown
Contributor

Fixes#108155

I haven't yet been able to reproduce the ICE in a minimal example unfortunately. Added a test

@clubby789
clubby789 marked this pull request as ready for review February 17, 2023 14:33
@rustbot

Copy link
Copy Markdown
Collaborator

r? @nagisa

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

@rustbotrustbot added 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. labels Feb 17, 2023
#[diag(lint_supertrait_as_deref_target)]
pub struct SupertraitAsDerefTarget<'a> {
pub t: Ty<'a>,
pub target_principal: String,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now I wonder whether it ever makes sense to store a String in a lint diagnostic or whether it would make more sense for the derive to error when it sees a String. Might be worth trying out and seeing what happens.

pub struct SupertraitAsDerefTarget<'a> {
pub t: Ty<'a>,
pub target_principal: String,
// pub target_principal: Binder<'a, ExistentialTraitRef<'b>>,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

commented out code, on my master 😰

@NoratriebNoratrieb left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

r? Nilstrieb

r=me after CI is green

@rustbotrustbot assigned Noratrieb and unassigned nagisaFeb 17, 2023
Comment threadcompiler/rustc_middle/src/ty/sty.rs
@Noratrieb

Copy link
Copy Markdown
Member

@bors r+ rollup

@bors

bors commented Feb 17, 2023

Copy link
Copy Markdown
Collaborator

📌 Commit eebd31c has been approved by Nilstrieb

It is now in the queue for this repository.

@borsbors 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 Feb 17, 2023
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 18, 2023
…iaskrgr
Rollup of 6 pull requests
Successful merges:
- rust-lang#108031 (Don't recover lifetimes/labels containing emojis as character literals)
- rust-lang#108046 (Don't allow evaluating queries that were fed in a previous compiler run)
- rust-lang#108162 (Don't eagerly convert principal to string)
- rust-lang#108186 (Deny non-lifetime bound vars in `for<..> ||` closure binders)
- rust-lang#108197 (Update cargo)
- rust-lang#108205 (link to llvm changes that prompted the special cases)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit 7f9d9de into rust-lang:masterFeb 18, 2023
@rustbotrustbot added this to the 1.69.0 milestone Feb 18, 2023
@tmiaskotmiasko added the stable-nominated Nominated for backporting to the compiler in the stable channel. label Mar 10, 2023
@apiraino

apiraino commented Mar 15, 2023

Copy link
Copy Markdown
Contributor

@tmiasko just to be sure I understand your intent: the stable backport nomination is intended as a theoretical 1.68.1 - correct? Otherwise I guess it would land automatically in the next beta then stable 1.69.0

@Noratrieb

Copy link
Copy Markdown
Member

Yes, if a 1.68.1 happens (which is quite likely with the Windows rustc Incident) it would be included if the nomination is accepted.

@wesleywiserwesleywiser added the stable-accepted Accepted for backporting to the compiler in the stable channel. label Mar 16, 2023
@wesleywiser

Copy link
Copy Markdown
Member

This was approved for stable backport in today's compiler team meeting.

@Mark-SimulacrumMark-Simulacrum removed the stable-nominated Nominated for backporting to the compiler in the stable channel. label Mar 19, 2023
bors added a commit to rust-lang-ci/rust that referenced this pull request Mar 20, 2023
…Simulacrum
[stable] 1.68.1 release
This packages up a set of release notes, version bump, and backports of:
* Don't eagerly convert principal to string rust-lang#108162
* Revert "enable ThinLTO for rustc on x86_64-pc-windows-msvc dist builds" rust-lang#109094
* Create dirs for build_triple rust-lang#109111
* Fix linker detection for clang with prefix rust-lang#109156
* ci: use apt install --download-only for solaris debs rust-lang#108951
The last of those is not yet stable-accepted but I expect it to be, we will drop it and rebuild artifacts if we don't actually approve it.
r? `@Mark-Simulacrum`
@Mark-SimulacrumMark-Simulacrum modified the milestones: 1.69.0, 1.68.1Mar 22, 2023
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Apr 8, 2023
Pkgsrc changes:
* Adjust patches (add & remove) and cargo checksums to new versions.
* It's conceivable that the workaround for LLVM based NetBSD works
even less in this version (ref. PKGSRC_HAVE_LIBCPP not having a
corresponding patch anymore).
Upstream changes:
Version 1.68.2 (2023-03-28)
===========================
- [Update the GitHub RSA host key bundled within Cargo]
(rust-lang/cargo#11883).
The key was [rotated by GitHub]
(https://github.blog/2023-03-23-we-updated-our-rsa-ssh-host-key/)
on 2023-03-24 after the old one leaked.
- [Mark the old GitHub RSA host key as revoked]
(rust-lang/cargo#11889).
This will prevent Cargo from accepting the leaked key even when
trusted by the system.
- [Add support for `@revoked` and a better error message for
`@cert-authority` in Cargo's SSH host key verification]
(rust-lang/cargo#11635)
Version 1.68.1 (2023-03-23)
===========================
- [Fix miscompilation in produced Windows MSVC artifacts]
(rust-lang/rust#109094)
This was introduced by enabling ThinLTO for the distributed rustc
which led to miscompilations in the resulting binary. Currently
this is believed to be limited to the -Zdylib-lto flag used for
rustc compilation, rather than a general bug in ThinLTO, so only
rustc artifacts should be affected.
- [Fix --enable-local-rust builds]
(rust-lang/rust#109111)
- [Treat `$prefix-clang` as `clang` in linker detection code]
(rust-lang/rust#109156)
- [Fix panic in compiler code]
(rust-lang/rust#108162)
Version 1.68.0 (2023-03-09)
===========================
Language
--------
- [Stabilize default_alloc_error_handler]
(rust-lang/rust#102318)
This allows usage of `alloc` on stable without requiring the
definition of a handler for allocation failure. Defining custom
handlers is still unstable.
- [Stabilize `efiapi` calling convention.]
(rust-lang/rust#105795)
- [Remove implicit promotion for types with drop glue]
(rust-lang/rust#105085)
Compiler
--------
- [Change `bindings_with_variant_name` to deny-by-default]
(rust-lang/rust#104154)
- [Allow .. to be parsed as let initializer]
(rust-lang/rust#105701)
- [Add `armv7-sony-vita-newlibeabihf` as a tier 3 target]
(rust-lang/rust#105712)
- [Always check alignment during compile-time const evaluation]
(rust-lang/rust#104616)
- [Disable "split dwarf inlining" by default.]
(rust-lang/rust#106709)
- [Add vendor to Fuchsia's target triple]
(rust-lang/rust#106429)
- [Enable sanitizers for s390x-linux]
(rust-lang/rust#107127)
Libraries
---------
- [Loosen the bound on the Debug implementation of Weak.]
(rust-lang/rust#90291)
- [Make `std::task::Context` !Send and !Sync]
(rust-lang/rust#95985)
- [PhantomData layout guarantees]
(rust-lang/rust#104081)
- [Don't derive Debug for `OnceWith` & `RepeatWith`]
(rust-lang/rust#104163)
- [Implement DerefMut for PathBuf]
(rust-lang/rust#105018)
- [Add O(1) `Vec -> VecDeque` conversion guarantee]
(rust-lang/rust#105128)
- [Leak amplification for peek_mut() to ensure BinaryHeap's invariant
is always met]
(rust-lang/rust#105851)
Stabilized APIs
---------------
- [`{core,std}::pin::pin!`]
(https://doc.rust-lang.org/stable/std/pin/macro.pin.html)
- [`impl From<bool> for {f32,f64}`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#impl-From%3Cbool%3E-for-f32)
- [`std::path::MAIN_SEPARATOR_STR`]
(https://doc.rust-lang.org/stable/std/path/constant.MAIN_SEPARATOR_STR.html)
- [`impl DerefMut for PathBuf`]
(https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#impl-DerefMut-for-PathBuf)
These APIs are now stable in const contexts:
- [`VecDeque::new`]
(https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.new)
Cargo
-----
- [Stabilize sparse registry support for crates.io]
(rust-lang/cargo#11224)
- [`cargo build --verbose` tells you more about why it recompiles.]
(rust-lang/cargo#11407)
- [Show progress of crates.io index update even `net.git-fetch-with-cli`
option enabled]
(rust-lang/cargo#11579)
Misc
----
Compatibility Notes
-------------------
- [Add `SEMICOLON_IN_EXPRESSIONS_FROM_MACROS` to future-incompat report]
(rust-lang/rust#103418)
- [Only specify `--target` by default for `-Zgcc-ld=lld` on wasm]
(rust-lang/rust#101792)
- [Bump `IMPLIED_BOUNDS_ENTAILMENT` to Deny + ReportNow]
(rust-lang/rust#106465)
- [`std::task::Context` no longer implements Send and Sync]
(rust-lang/rust#95985)
nternal Changes
----------------
These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.
- [Encode spans relative to the enclosing item]
(rust-lang/rust#84762)
- [Don't normalize in AstConv]
(rust-lang/rust#101947)
- [Find the right lower bound region in the scenario of partial order relations]
(rust-lang/rust#104765)
- [Fix impl block in const expr]
(rust-lang/rust#104889)
- [Check ADT fields for copy implementations considering regions]
(rust-lang/rust#105102)
- [rustdoc: simplify JS search routine by not messing with lev distance]
(rust-lang/rust#105796)
- [Enable ThinLTO for rustc on `x86_64-pc-windows-msvc`]
(rust-lang/rust#103591)
- [Enable ThinLTO for rustc on `x86_64-apple-darwin`]
(rust-lang/rust#103647)
Version 1.67.0 (2023-01-26)
==========================
Language
--------
- [Make `Sized` predicates coinductive, allowing cycles.]
(rust-lang/rust#100386)
- [`#[must_use]` annotations on `async fn` also affect the
`Future::Output`.] (rust-lang/rust#100633)
- [Elaborate supertrait obligations when deducing closure signatures.]
(rust-lang/rust#101834)
- [Invalid literals are no longer an error under `cfg(FALSE)`.]
(rust-lang/rust#102944)
- [Unreserve braced enum variants in value namespace.]
(rust-lang/rust#103578)
Compiler
--------
- [Enable varargs support for calling conventions other than `C`
or `cdecl`.] (rust-lang/rust#97971)
- [Add new MIR constant propagation based on dataflow analysis.]
(rust-lang/rust#101168)
- [Optimize field ordering by grouping m\*2^n-sized fields with
equivalently aligned ones.] (rust-lang/rust#102750)
- [Stabilize native library modifier `verbatim`.]
(rust-lang/rust#104360)
Added and removed targets:
- [Add a tier 3 target for PowerPC on AIX]
(rust-lang/rust#102293), `powerpc64-ibm-aix`.
- [Add a tier 3 target for the Sony PlayStation 1]
(rust-lang/rust#102689), `mipsel-sony-psx`.
- [Add tier 3 `no_std` targets for the QNX Neutrino RTOS]
(rust-lang/rust#102701),
`aarch64-unknown-nto-qnx710` and `x86_64-pc-nto-qnx710`.
- [Remove tier 3 `linuxkernel` targets]
(rust-lang/rust#104015) (not used by the
actual kernel).
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
Libraries
---------
- [Merge `crossbeam-channel` into `std::sync::mpsc`.]
(rust-lang/rust#93563)
- [Fix inconsistent rounding of 0.5 when formatted to 0 decimal places.]
(rust-lang/rust#102935)
- [Derive `Eq` and `Hash` for `ControlFlow`.]
(rust-lang/rust#103084)
- [Don't build `compiler_builtins` with `-C panic=abort`.]
(rust-lang/rust#103786)
Stabilized APIs
---------------
- [`{integer}::checked_ilog`]
(https://doc.rust-lang.org/stable/std/primitive.i32.html#method.checked_ilog)
- [`{integer}::checked_ilog2`]
(https://doc.rust-lang.org/stable/std/primitive.i32.html#method.checked_ilog2)
- [`{integer}::checked_ilog10`]
(https://doc.rust-lang.org/stable/std/primitive.i32.html#method.checked_ilog10)
- [`{integer}::ilog`]
(https://doc.rust-lang.org/stable/std/primitive.i32.html#method.ilog)
- [`{integer}::ilog2`]
(https://doc.rust-lang.org/stable/std/primitive.i32.html#method.ilog2)
- [`{integer}::ilog10`]
(https://doc.rust-lang.org/stable/std/primitive.i32.html#method.ilog10)
- [`NonZeroU*::ilog2`]
(https://doc.rust-lang.org/stable/std/num/struct.NonZeroU32.html#method.ilog2)
- [`NonZeroU*::ilog10`]
(https://doc.rust-lang.org/stable/std/num/struct.NonZeroU32.html#method.ilog10)
- [`NonZero*::BITS`]
(https://doc.rust-lang.org/stable/std/num/struct.NonZeroU32.html#associatedconstant.BITS)
These APIs are now stable in const contexts:
- [`char::from_u32`]
(https://doc.rust-lang.org/stable/std/primitive.char.html#method.from_u32)
- [`char::from_digit`]
(https://doc.rust-lang.org/stable/std/primitive.char.html#method.from_digit)
- [`char::to_digit`]
(https://doc.rust-lang.org/stable/std/primitive.char.html#method.to_digit)
- [`core::char::from_u32`]
(https://doc.rust-lang.org/stable/core/char/fn.from_u32.html)
- [`core::char::from_digit`]
(https://doc.rust-lang.org/stable/core/char/fn.from_digit.html)
Compatibility Notes
-------------------
- [The layout of `repr(Rust)` types now groups m\*2^n-sized fields
with equivalently aligned ones.]
(rust-lang/rust#102750) This is intended
to be an optimization, but it is also known to increase type
sizes in a few cases for the placement of enum tags. As a reminder,
the layout of `repr(Rust)` types is an implementation detail,
subject to change.
- [0.5 now rounds to 0 when formatted to 0 decimal places.]
(rust-lang/rust#102935)
This makes it consistent with the rest of floating point formatting that
rounds ties toward even digits.
- [Chains of `&&` and `||` will now drop temporaries from their
sub-expressions in evaluation order, left-to-right.]
(rust-lang/rust#103293) Previously, it
was "twisted" such that the _first_ expression dropped its
temporaries _last_, after all of the other expressions dropped
in order.
- [Underscore suffixes on string literals are now a hard error.]
(rust-lang/rust#103914)
This has been a future-compatibility warning since 1.20.0.
- [Stop passing `-export-dynamic` to `wasm-ld`.]
(rust-lang/rust#105405)
- [`main` is now mangled as `__main_void` on `wasm32-wasi`.]
(rust-lang/rust#105468)
- [Cargo now emits an error if there are multiple registries in
the configuration with the same index URL.]
(rust-lang/cargo#10592)
Internal Changes
----------------
These changes do not affect any public interfaces of Rust, but they
represent significant improvements to the performance or internals
of rustc and related tools.
- [Rewrite LLVM's archive writer in Rust.]
(rust-lang/rust#97485)
msk pushed a commit to msk/pkgsrc that referenced this pull request May 11, 2026
Pkgsrc changes:
* Adjust patches (add & remove) and cargo checksums to new versions.
* It's conceivable that the workaround for LLVM based NetBSD works
even less in this version (ref. PKGSRC_HAVE_LIBCPP not having a
corresponding patch anymore).
Upstream changes:
Version 1.68.2 (2023-03-28)
===========================
- [Update the GitHub RSA host key bundled within Cargo]
(rust-lang/cargo#11883).
The key was [rotated by GitHub]
(https://github.blog/2023-03-23-we-updated-our-rsa-ssh-host-key/)
on 2023-03-24 after the old one leaked.
- [Mark the old GitHub RSA host key as revoked]
(rust-lang/cargo#11889).
This will prevent Cargo from accepting the leaked key even when
trusted by the system.
- [Add support for `@revoked` and a better error message for
`@cert-authority` in Cargo's SSH host key verification]
(rust-lang/cargo#11635)
Version 1.68.1 (2023-03-23)
===========================
- [Fix miscompilation in produced Windows MSVC artifacts]
(rust-lang/rust#109094)
This was introduced by enabling ThinLTO for the distributed rustc
which led to miscompilations in the resulting binary. Currently
this is believed to be limited to the -Zdylib-lto flag used for
rustc compilation, rather than a general bug in ThinLTO, so only
rustc artifacts should be affected.
- [Fix --enable-local-rust builds]
(rust-lang/rust#109111)
- [Treat `$prefix-clang` as `clang` in linker detection code]
(rust-lang/rust#109156)
- [Fix panic in compiler code]
(rust-lang/rust#108162)
Version 1.68.0 (2023-03-09)
===========================
Language
--------
- [Stabilize default_alloc_error_handler]
(rust-lang/rust#102318)
This allows usage of `alloc` on stable without requiring the
definition of a handler for allocation failure. Defining custom
handlers is still unstable.
- [Stabilize `efiapi` calling convention.]
(rust-lang/rust#105795)
- [Remove implicit promotion for types with drop glue]
(rust-lang/rust#105085)
Compiler
--------
- [Change `bindings_with_variant_name` to deny-by-default]
(rust-lang/rust#104154)
- [Allow .. to be parsed as let initializer]
(rust-lang/rust#105701)
- [Add `armv7-sony-vita-newlibeabihf` as a tier 3 target]
(rust-lang/rust#105712)
- [Always check alignment during compile-time const evaluation]
(rust-lang/rust#104616)
- [Disable "split dwarf inlining" by default.]
(rust-lang/rust#106709)
- [Add vendor to Fuchsia's target triple]
(rust-lang/rust#106429)
- [Enable sanitizers for s390x-linux]
(rust-lang/rust#107127)
Libraries
---------
- [Loosen the bound on the Debug implementation of Weak.]
(rust-lang/rust#90291)
- [Make `std::task::Context` !Send and !Sync]
(rust-lang/rust#95985)
- [PhantomData layout guarantees]
(rust-lang/rust#104081)
- [Don't derive Debug for `OnceWith` & `RepeatWith`]
(rust-lang/rust#104163)
- [Implement DerefMut for PathBuf]
(rust-lang/rust#105018)
- [Add O(1) `Vec -> VecDeque` conversion guarantee]
(rust-lang/rust#105128)
- [Leak amplification for peek_mut() to ensure BinaryHeap's invariant
is always met]
(rust-lang/rust#105851)
Stabilized APIs
---------------
- [`{core,std}::pin::pin!`]
(https://doc.rust-lang.org/stable/std/pin/macro.pin.html)
- [`impl From<bool> for {f32,f64}`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#impl-From%3Cbool%3E-for-f32)
- [`std::path::MAIN_SEPARATOR_STR`]
(https://doc.rust-lang.org/stable/std/path/constant.MAIN_SEPARATOR_STR.html)
- [`impl DerefMut for PathBuf`]
(https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#impl-DerefMut-for-PathBuf)
These APIs are now stable in const contexts:
- [`VecDeque::new`]
(https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.new)
Cargo
-----
- [Stabilize sparse registry support for crates.io]
(rust-lang/cargo#11224)
- [`cargo build --verbose` tells you more about why it recompiles.]
(rust-lang/cargo#11407)
- [Show progress of crates.io index update even `net.git-fetch-with-cli`
option enabled]
(rust-lang/cargo#11579)
Misc
----
Compatibility Notes
-------------------
- [Add `SEMICOLON_IN_EXPRESSIONS_FROM_MACROS` to future-incompat report]
(rust-lang/rust#103418)
- [Only specify `--target` by default for `-Zgcc-ld=lld` on wasm]
(rust-lang/rust#101792)
- [Bump `IMPLIED_BOUNDS_ENTAILMENT` to Deny + ReportNow]
(rust-lang/rust#106465)
- [`std::task::Context` no longer implements Send and Sync]
(rust-lang/rust#95985)
nternal Changes
----------------
These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.
- [Encode spans relative to the enclosing item]
(rust-lang/rust#84762)
- [Don't normalize in AstConv]
(rust-lang/rust#101947)
- [Find the right lower bound region in the scenario of partial order relations]
(rust-lang/rust#104765)
- [Fix impl block in const expr]
(rust-lang/rust#104889)
- [Check ADT fields for copy implementations considering regions]
(rust-lang/rust#105102)
- [rustdoc: simplify JS search routine by not messing with lev distance]
(rust-lang/rust#105796)
- [Enable ThinLTO for rustc on `x86_64-pc-windows-msvc`]
(rust-lang/rust#103591)
- [Enable ThinLTO for rustc on `x86_64-apple-darwin`]
(rust-lang/rust#103647)
Version 1.67.0 (2023-01-26)
==========================
Language
--------
- [Make `Sized` predicates coinductive, allowing cycles.]
(rust-lang/rust#100386)
- [`#[must_use]` annotations on `async fn` also affect the
`Future::Output`.] (rust-lang/rust#100633)
- [Elaborate supertrait obligations when deducing closure signatures.]
(rust-lang/rust#101834)
- [Invalid literals are no longer an error under `cfg(FALSE)`.]
(rust-lang/rust#102944)
- [Unreserve braced enum variants in value namespace.]
(rust-lang/rust#103578)
Compiler
--------
- [Enable varargs support for calling conventions other than `C`
or `cdecl`.] (rust-lang/rust#97971)
- [Add new MIR constant propagation based on dataflow analysis.]
(rust-lang/rust#101168)
- [Optimize field ordering by grouping m\*2^n-sized fields with
equivalently aligned ones.] (rust-lang/rust#102750)
- [Stabilize native library modifier `verbatim`.]
(rust-lang/rust#104360)
Added and removed targets:
- [Add a tier 3 target for PowerPC on AIX]
(rust-lang/rust#102293), `powerpc64-ibm-aix`.
- [Add a tier 3 target for the Sony PlayStation 1]
(rust-lang/rust#102689), `mipsel-sony-psx`.
- [Add tier 3 `no_std` targets for the QNX Neutrino RTOS]
(rust-lang/rust#102701),
`aarch64-unknown-nto-qnx710` and `x86_64-pc-nto-qnx710`.
- [Remove tier 3 `linuxkernel` targets]
(rust-lang/rust#104015) (not used by the
actual kernel).
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
Libraries
---------
- [Merge `crossbeam-channel` into `std::sync::mpsc`.]
(rust-lang/rust#93563)
- [Fix inconsistent rounding of 0.5 when formatted to 0 decimal places.]
(rust-lang/rust#102935)
- [Derive `Eq` and `Hash` for `ControlFlow`.]
(rust-lang/rust#103084)
- [Don't build `compiler_builtins` with `-C panic=abort`.]
(rust-lang/rust#103786)
Stabilized APIs
---------------
- [`{integer}::checked_ilog`]
(https://doc.rust-lang.org/stable/std/primitive.i32.html#method.checked_ilog)
- [`{integer}::checked_ilog2`]
(https://doc.rust-lang.org/stable/std/primitive.i32.html#method.checked_ilog2)
- [`{integer}::checked_ilog10`]
(https://doc.rust-lang.org/stable/std/primitive.i32.html#method.checked_ilog10)
- [`{integer}::ilog`]
(https://doc.rust-lang.org/stable/std/primitive.i32.html#method.ilog)
- [`{integer}::ilog2`]
(https://doc.rust-lang.org/stable/std/primitive.i32.html#method.ilog2)
- [`{integer}::ilog10`]
(https://doc.rust-lang.org/stable/std/primitive.i32.html#method.ilog10)
- [`NonZeroU*::ilog2`]
(https://doc.rust-lang.org/stable/std/num/struct.NonZeroU32.html#method.ilog2)
- [`NonZeroU*::ilog10`]
(https://doc.rust-lang.org/stable/std/num/struct.NonZeroU32.html#method.ilog10)
- [`NonZero*::BITS`]
(https://doc.rust-lang.org/stable/std/num/struct.NonZeroU32.html#associatedconstant.BITS)
These APIs are now stable in const contexts:
- [`char::from_u32`]
(https://doc.rust-lang.org/stable/std/primitive.char.html#method.from_u32)
- [`char::from_digit`]
(https://doc.rust-lang.org/stable/std/primitive.char.html#method.from_digit)
- [`char::to_digit`]
(https://doc.rust-lang.org/stable/std/primitive.char.html#method.to_digit)
- [`core::char::from_u32`]
(https://doc.rust-lang.org/stable/core/char/fn.from_u32.html)
- [`core::char::from_digit`]
(https://doc.rust-lang.org/stable/core/char/fn.from_digit.html)
Compatibility Notes
-------------------
- [The layout of `repr(Rust)` types now groups m\*2^n-sized fields
with equivalently aligned ones.]
(rust-lang/rust#102750) This is intended
to be an optimization, but it is also known to increase type
sizes in a few cases for the placement of enum tags. As a reminder,
the layout of `repr(Rust)` types is an implementation detail,
subject to change.
- [0.5 now rounds to 0 when formatted to 0 decimal places.]
(rust-lang/rust#102935)
This makes it consistent with the rest of floating point formatting that
rounds ties toward even digits.
- [Chains of `&&` and `||` will now drop temporaries from their
sub-expressions in evaluation order, left-to-right.]
(rust-lang/rust#103293) Previously, it
was "twisted" such that the _first_ expression dropped its
temporaries _last_, after all of the other expressions dropped
in order.
- [Underscore suffixes on string literals are now a hard error.]
(rust-lang/rust#103914)
This has been a future-compatibility warning since 1.20.0.
- [Stop passing `-export-dynamic` to `wasm-ld`.]
(rust-lang/rust#105405)
- [`main` is now mangled as `__main_void` on `wasm32-wasi`.]
(rust-lang/rust#105468)
- [Cargo now emits an error if there are multiple registries in
the configuration with the same index URL.]
(rust-lang/cargo#10592)
Internal Changes
----------------
These changes do not affect any public interfaces of Rust, but they
represent significant improvements to the performance or internals
of rustc and related tools.
- [Rewrite LLVM's archive writer in Rust.]
(rust-lang/rust#97485)
jperkin pushed a commit to TritonDataCenter/pkgsrc that referenced this pull request May 14, 2026
Pkgsrc changes:
* Adjust patches (add & remove) and cargo checksums to new versions.
* It's conceivable that the workaround for LLVM based NetBSD works
even less in this version (ref. PKGSRC_HAVE_LIBCPP not having a
corresponding patch anymore).
Upstream changes:
Version 1.68.2 (2023-03-28)
===========================
- [Update the GitHub RSA host key bundled within Cargo]
(rust-lang/cargo#11883).
The key was [rotated by GitHub]
(https://github.blog/2023-03-23-we-updated-our-rsa-ssh-host-key/)
on 2023-03-24 after the old one leaked.
- [Mark the old GitHub RSA host key as revoked]
(rust-lang/cargo#11889).
This will prevent Cargo from accepting the leaked key even when
trusted by the system.
- [Add support for `@revoked` and a better error message for
`@cert-authority` in Cargo's SSH host key verification]
(rust-lang/cargo#11635)
Version 1.68.1 (2023-03-23)
===========================
- [Fix miscompilation in produced Windows MSVC artifacts]
(rust-lang/rust#109094)
This was introduced by enabling ThinLTO for the distributed rustc
which led to miscompilations in the resulting binary. Currently
this is believed to be limited to the -Zdylib-lto flag used for
rustc compilation, rather than a general bug in ThinLTO, so only
rustc artifacts should be affected.
- [Fix --enable-local-rust builds]
(rust-lang/rust#109111)
- [Treat `$prefix-clang` as `clang` in linker detection code]
(rust-lang/rust#109156)
- [Fix panic in compiler code]
(rust-lang/rust#108162)
Version 1.68.0 (2023-03-09)
===========================
Language
--------
- [Stabilize default_alloc_error_handler]
(rust-lang/rust#102318)
This allows usage of `alloc` on stable without requiring the
definition of a handler for allocation failure. Defining custom
handlers is still unstable.
- [Stabilize `efiapi` calling convention.]
(rust-lang/rust#105795)
- [Remove implicit promotion for types with drop glue]
(rust-lang/rust#105085)
Compiler
--------
- [Change `bindings_with_variant_name` to deny-by-default]
(rust-lang/rust#104154)
- [Allow .. to be parsed as let initializer]
(rust-lang/rust#105701)
- [Add `armv7-sony-vita-newlibeabihf` as a tier 3 target]
(rust-lang/rust#105712)
- [Always check alignment during compile-time const evaluation]
(rust-lang/rust#104616)
- [Disable "split dwarf inlining" by default.]
(rust-lang/rust#106709)
- [Add vendor to Fuchsia's target triple]
(rust-lang/rust#106429)
- [Enable sanitizers for s390x-linux]
(rust-lang/rust#107127)
Libraries
---------
- [Loosen the bound on the Debug implementation of Weak.]
(rust-lang/rust#90291)
- [Make `std::task::Context` !Send and !Sync]
(rust-lang/rust#95985)
- [PhantomData layout guarantees]
(rust-lang/rust#104081)
- [Don't derive Debug for `OnceWith` & `RepeatWith`]
(rust-lang/rust#104163)
- [Implement DerefMut for PathBuf]
(rust-lang/rust#105018)
- [Add O(1) `Vec -> VecDeque` conversion guarantee]
(rust-lang/rust#105128)
- [Leak amplification for peek_mut() to ensure BinaryHeap's invariant
is always met]
(rust-lang/rust#105851)
Stabilized APIs
---------------
- [`{core,std}::pin::pin!`]
(https://doc.rust-lang.org/stable/std/pin/macro.pin.html)
- [`impl From<bool> for {f32,f64}`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#impl-From%3Cbool%3E-for-f32)
- [`std::path::MAIN_SEPARATOR_STR`]
(https://doc.rust-lang.org/stable/std/path/constant.MAIN_SEPARATOR_STR.html)
- [`impl DerefMut for PathBuf`]
(https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#impl-DerefMut-for-PathBuf)
These APIs are now stable in const contexts:
- [`VecDeque::new`]
(https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.new)
Cargo
-----
- [Stabilize sparse registry support for crates.io]
(rust-lang/cargo#11224)
- [`cargo build --verbose` tells you more about why it recompiles.]
(rust-lang/cargo#11407)
- [Show progress of crates.io index update even `net.git-fetch-with-cli`
option enabled]
(rust-lang/cargo#11579)
Misc
----
Compatibility Notes
-------------------
- [Add `SEMICOLON_IN_EXPRESSIONS_FROM_MACROS` to future-incompat report]
(rust-lang/rust#103418)
- [Only specify `--target` by default for `-Zgcc-ld=lld` on wasm]
(rust-lang/rust#101792)
- [Bump `IMPLIED_BOUNDS_ENTAILMENT` to Deny + ReportNow]
(rust-lang/rust#106465)
- [`std::task::Context` no longer implements Send and Sync]
(rust-lang/rust#95985)
nternal Changes
----------------
These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.
- [Encode spans relative to the enclosing item]
(rust-lang/rust#84762)
- [Don't normalize in AstConv]
(rust-lang/rust#101947)
- [Find the right lower bound region in the scenario of partial order relations]
(rust-lang/rust#104765)
- [Fix impl block in const expr]
(rust-lang/rust#104889)
- [Check ADT fields for copy implementations considering regions]
(rust-lang/rust#105102)
- [rustdoc: simplify JS search routine by not messing with lev distance]
(rust-lang/rust#105796)
- [Enable ThinLTO for rustc on `x86_64-pc-windows-msvc`]
(rust-lang/rust#103591)
- [Enable ThinLTO for rustc on `x86_64-apple-darwin`]
(rust-lang/rust#103647)
Version 1.67.0 (2023-01-26)
==========================
Language
--------
- [Make `Sized` predicates coinductive, allowing cycles.]
(rust-lang/rust#100386)
- [`#[must_use]` annotations on `async fn` also affect the
`Future::Output`.] (rust-lang/rust#100633)
- [Elaborate supertrait obligations when deducing closure signatures.]
(rust-lang/rust#101834)
- [Invalid literals are no longer an error under `cfg(FALSE)`.]
(rust-lang/rust#102944)
- [Unreserve braced enum variants in value namespace.]
(rust-lang/rust#103578)
Compiler
--------
- [Enable varargs support for calling conventions other than `C`
or `cdecl`.] (rust-lang/rust#97971)
- [Add new MIR constant propagation based on dataflow analysis.]
(rust-lang/rust#101168)
- [Optimize field ordering by grouping m\*2^n-sized fields with
equivalently aligned ones.] (rust-lang/rust#102750)
- [Stabilize native library modifier `verbatim`.]
(rust-lang/rust#104360)
Added and removed targets:
- [Add a tier 3 target for PowerPC on AIX]
(rust-lang/rust#102293), `powerpc64-ibm-aix`.
- [Add a tier 3 target for the Sony PlayStation 1]
(rust-lang/rust#102689), `mipsel-sony-psx`.
- [Add tier 3 `no_std` targets for the QNX Neutrino RTOS]
(rust-lang/rust#102701),
`aarch64-unknown-nto-qnx710` and `x86_64-pc-nto-qnx710`.
- [Remove tier 3 `linuxkernel` targets]
(rust-lang/rust#104015) (not used by the
actual kernel).
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
Libraries
---------
- [Merge `crossbeam-channel` into `std::sync::mpsc`.]
(rust-lang/rust#93563)
- [Fix inconsistent rounding of 0.5 when formatted to 0 decimal places.]
(rust-lang/rust#102935)
- [Derive `Eq` and `Hash` for `ControlFlow`.]
(rust-lang/rust#103084)
- [Don't build `compiler_builtins` with `-C panic=abort`.]
(rust-lang/rust#103786)
Stabilized APIs
---------------
- [`{integer}::checked_ilog`]
(https://doc.rust-lang.org/stable/std/primitive.i32.html#method.checked_ilog)
- [`{integer}::checked_ilog2`]
(https://doc.rust-lang.org/stable/std/primitive.i32.html#method.checked_ilog2)
- [`{integer}::checked_ilog10`]
(https://doc.rust-lang.org/stable/std/primitive.i32.html#method.checked_ilog10)
- [`{integer}::ilog`]
(https://doc.rust-lang.org/stable/std/primitive.i32.html#method.ilog)
- [`{integer}::ilog2`]
(https://doc.rust-lang.org/stable/std/primitive.i32.html#method.ilog2)
- [`{integer}::ilog10`]
(https://doc.rust-lang.org/stable/std/primitive.i32.html#method.ilog10)
- [`NonZeroU*::ilog2`]
(https://doc.rust-lang.org/stable/std/num/struct.NonZeroU32.html#method.ilog2)
- [`NonZeroU*::ilog10`]
(https://doc.rust-lang.org/stable/std/num/struct.NonZeroU32.html#method.ilog10)
- [`NonZero*::BITS`]
(https://doc.rust-lang.org/stable/std/num/struct.NonZeroU32.html#associatedconstant.BITS)
These APIs are now stable in const contexts:
- [`char::from_u32`]
(https://doc.rust-lang.org/stable/std/primitive.char.html#method.from_u32)
- [`char::from_digit`]
(https://doc.rust-lang.org/stable/std/primitive.char.html#method.from_digit)
- [`char::to_digit`]
(https://doc.rust-lang.org/stable/std/primitive.char.html#method.to_digit)
- [`core::char::from_u32`]
(https://doc.rust-lang.org/stable/core/char/fn.from_u32.html)
- [`core::char::from_digit`]
(https://doc.rust-lang.org/stable/core/char/fn.from_digit.html)
Compatibility Notes
-------------------
- [The layout of `repr(Rust)` types now groups m\*2^n-sized fields
with equivalently aligned ones.]
(rust-lang/rust#102750) This is intended
to be an optimization, but it is also known to increase type
sizes in a few cases for the placement of enum tags. As a reminder,
the layout of `repr(Rust)` types is an implementation detail,
subject to change.
- [0.5 now rounds to 0 when formatted to 0 decimal places.]
(rust-lang/rust#102935)
This makes it consistent with the rest of floating point formatting that
rounds ties toward even digits.
- [Chains of `&&` and `||` will now drop temporaries from their
sub-expressions in evaluation order, left-to-right.]
(rust-lang/rust#103293) Previously, it
was "twisted" such that the _first_ expression dropped its
temporaries _last_, after all of the other expressions dropped
in order.
- [Underscore suffixes on string literals are now a hard error.]
(rust-lang/rust#103914)
This has been a future-compatibility warning since 1.20.0.
- [Stop passing `-export-dynamic` to `wasm-ld`.]
(rust-lang/rust#105405)
- [`main` is now mangled as `__main_void` on `wasm32-wasi`.]
(rust-lang/rust#105468)
- [Cargo now emits an error if there are multiple registries in
the configuration with the same index URL.]
(rust-lang/cargo#10592)
Internal Changes
----------------
These changes do not affect any public interfaces of Rust, but they
represent significant improvements to the performance or internals
of rustc and related tools.
- [Rewrite LLVM's archive writer in Rust.]
(rust-lang/rust#97485)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.stable-acceptedAccepted for backporting to the compiler in the stable channel.T-compilerRelevant 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.

ICE: trimmed_def_paths constructed but no error emitted

10 participants

@clubby789@rustbot@Noratrieb@bors@apiraino@wesleywiser@compiler-errors@nagisa@Mark-Simulacrum@tmiasko