make unsupported_calling_conventions a hard error by RalfJung · Pull Request #129935 · rust-lang/rust (original) (raw)
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
[ Show hidden characters]({{ revealButtonHref }})
This has been a future-compat lint (not shown in dependencies) since Rust 1.55, released 3 years ago. Hopefully that was enough time so this can be made a hard error now. Given that long timeframe, I think it's justified to skip the "show in dependencies" stage. There were not many crates hitting this even when the lint was originally added.
This should get cratered, and I assume then it needs a t-compiler FCP. (t-compiler because this looks entirely like an implementation oversight -- for the vast majority of ABIs, we already have a hard error, but some were initially missed, and we are finally fixing that.)
Fixes #87678
r? @fee1-dead
rustbot has assigned @fee1-dead.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.
Use r? to explicitly pick a reviewer
rustbot added S-waiting-on-review
Status: Awaiting review from the assignee but also interested parties.
Relevant to the compiler team, which will review and decide on the PR/issue.
labels
These commits modify compiler targets.
(See the Target Tier Policy.)
Some changes occurred in src/tools/clippy
cc @rust-lang/clippy
bors added a commit to rust-lang-ci/rust that referenced this pull request
…ions, r=
make unsupported_calling_conventions a hard error
This has been a future-compat lint (not shown in dependencies) since Rust 1.55, released 3 years ago. Hopefully that was enough time so this can be made a hard error now. Given that long timeframe, I think it's justified to skip the "show in dependencies" stage. There were [not many crates hitting this](rust-lang#86231 (comment)) even when the PR was landed.
This should get cratered, and I assume then it needs a t-compiler FCP.
Fixes rust-lang#88397
This comment has been minimized.
Damn, this needs a change in the reference.^^
Damn, this needs a change in the reference.^^
Waiting 24 hours will also unblock, since beta week ends.
☀️ Try build successful - checks-actions
Build commit: 498fce2 (498fce24f39c1ecbb0abe08824e72162da853341)
@craterbot check
The fact that crater is Linux-only is actually good here; on Windows the ABI keeps being accepted on all targets, only on other OSes does it get rejected.
🚧 Experiment pr-129935 is now running
ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more
This was referenced
Sep 9, 2024
6 crates on crates.io are affected, those all look like genuine regressions. They are all rarely used (the one with most downloads has 12k total downloads, that one also has not seen any updates in 8 years).
I have filed issues for the 4 crates that saw updates in the last 5 years, see the backlinks above.
@fee1-dead I think this is then ready for review.
Does it need a t-compiler FCP because it is a breaking change?
This comment has been minimized.
rust-highfive added a commit to rust-lang-nursery/rust-toolstate that referenced this pull request
Finished benchmarking commit (1de57a5): comparison URL.
Overall result: ✅ improvements - no action needed
@rustbot label: -perf-regression
Instruction count
This is the most reliable metric that we have; it was used to determine the overall result at the top of this comment. However, even this metric can sometimes exhibit noise.
| mean | range | count | |
|---|---|---|---|
| Regressions ❌ (primary) | - | - | 0 |
| Regressions ❌ (secondary) | - | - | 0 |
| Improvements ✅ (primary) | -2.6% | [-2.6%, -2.6%] | 1 |
| Improvements ✅ (secondary) | - | - | 0 |
| All ❌✅ (primary) | -2.6% | [-2.6%, -2.6%] | 1 |
Max RSS (memory usage)
Results (primary 1.7%, secondary -0.4%)
This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
| mean | range | count | |
|---|---|---|---|
| Regressions ❌ (primary) | 1.7% | [1.7%, 1.7%] | 1 |
| Regressions ❌ (secondary) | 1.6% | [1.6%, 1.6%] | 1 |
| Improvements ✅ (primary) | - | - | 0 |
| Improvements ✅ (secondary) | -2.4% | [-2.4%, -2.4%] | 1 |
| All ❌✅ (primary) | 1.7% | [1.7%, 1.7%] | 1 |
Cycles
Results (primary -2.6%)
This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
| mean | range | count | |
|---|---|---|---|
| Regressions ❌ (primary) | - | - | 0 |
| Regressions ❌ (secondary) | - | - | 0 |
| Improvements ✅ (primary) | -2.6% | [-2.6%, -2.6%] | 1 |
| Improvements ✅ (secondary) | - | - | 0 |
| All ❌✅ (primary) | -2.6% | [-2.6%, -2.6%] | 1 |
Binary size
This benchmark run did not return any relevant results for this metric.
Bootstrap: 781.081s -> 779.742s (-0.17%)
Artifact size: 333.69 MiB -> 333.70 MiB (0.00%)
RalfJung deleted the unsupported_calling_conventions branch
ehuss added a commit to ehuss/reference that referenced this pull request
rust-lang/rust#129935 made
unsupported_calling_conventions a hard-error, which in turn makes this
test fail.
ehuss mentioned this pull request
flip1995 pushed a commit to flip1995/rust that referenced this pull request
…ions, r=compiler-errors
make unsupported_calling_conventions a hard error
This has been a future-compat lint (not shown in dependencies) since Rust 1.55, released 3 years ago. Hopefully that was enough time so this can be made a hard error now. Given that long timeframe, I think it's justified to skip the "show in dependencies" stage. There were [not many crates hitting this](rust-lang#86231 (comment)) even when the lint was originally added.
This should get cratered, and I assume then it needs a t-compiler FCP. (t-compiler because this looks entirely like an implementation oversight -- for the vast majority of ABIs, we already have a hard error, but some were initially missed, and we are finally fixing that.)
Fixes rust-lang#87678
cameraMeasurementTech added a commit to cameraMeasurementTech/rust-lang that referenced this pull request
rust-lang/rust#129935 made
unsupported_calling_conventions a hard-error, which in turn makes this
test fail.
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request
This MR contains the following updates:
| Package | Update | Change |
|---|---|---|
| rust | minor | 1.83.0 -> 1.84.0 |
MR created with the help of el-capitano/tools/renovate-bot.
Proposed changes to behavior should be submitted there as MRs.
Release Notes
rust-lang/rust (rust)
v1.84.0
==========================
Language
- Allow
#[deny]inside#[forbid]as a no-op - Show a warning when
-Ctarget-featureis used to toggle features that can lead to unsoundness due to ABI mismatches - Use the next-generation trait solver in coherence
- Allow coercions to drop the principal of trait objects
- Support
/as the path separator forinclude!()in all cases on Windows - Taking a raw ref (
raw (const|mut)) of a deref of a pointer (*ptr) is now safe - Stabilize s390x inline assembly
- Stabilize Arm64EC inline assembly
- Lint against creating pointers to immediately dropped temporaries
- Execute drop glue when unwinding in an
extern "C"function
Compiler
- Add
--print host-tupleflag to print the host target tuple and affirm the "target tuple" terminology over "target triple" - Declaring functions with a calling convention not supported on the current target now triggers a hard error
- Set up indirect access to external data for
loongarch64-unknown-linux-{musl,ohos} - Enable XRay instrumentation for LoongArch Linux targets
- Extend the
unexpected_cfgslint to also warn in external macros - Stabilize WebAssembly
multivalue,reference-types, andtail-calltarget features - Added Tier 2 support for the
wasm32v1-nonetarget
Libraries
- Implement
From<&mut {slice}>forBox/Rc/Arc<{slice}> - Move
<float>::copysign,<float>::abs,<float>::signumtocore - Add
LowerExpandUpperExpimplementations toNonZero - Implement
FromStrforCStringandTryFrom<CString>forString std::os::darwinhas been made public
Stabilized APIs
Ipv6Addr::is_unique_localIpv6Addr::is_unicast_link_localcore::ptr::with_exposed_provenancecore::ptr::with_exposed_provenance_mut<ptr>::addr<ptr>::expose_provenance<ptr>::with_addr<ptr>::map_addr<int>::isqrt<int>::checked_isqrt<uint>::isqrtNonZero::isqrtcore::ptr::without_provenancecore::ptr::without_provenance_mutcore::ptr::danglingcore::ptr::dangling_mutPin::as_deref_mut
These APIs are now stable in const contexts
AtomicBool::from_ptrAtomicPtr::from_ptrAtomicU8::from_ptrAtomicU16::from_ptrAtomicU32::from_ptrAtomicU64::from_ptrAtomicUsize::from_ptrAtomicI8::from_ptrAtomicI16::from_ptrAtomicI32::from_ptrAtomicI64::from_ptrAtomicIsize::from_ptr<ptr>::is_null<ptr>::as_ref<ptr>::as_mutPin::newPin::new_uncheckedPin::get_refPin::into_refPin::get_mutPin::get_unchecked_mutPin::static_refPin::static_mut
Cargo
Rustdoc
Compatibility Notes
- Enable by default the
LSXtarget feature for LoongArch Linux targets - The unstable
-Zprofileflag (“gcov-style” coverage instrumentation) has been removed. This does not affect the stable flags for coverage instrumentation (-Cinstrument-coverage) and profile-guided optimization (-Cprofile-generate,-Cprofile-use), which are unrelated and remain available. - Support for the target named
wasm32-wasihas been removed as the target is now namedwasm32-wasip1. This completes the transition plan for this target following the introduction ofwasm32-wasip1in Rust 1.78. Compiler warnings on use ofwasm32-wasiintroduced in Rust 1.81 are now gone as well as the target is removed. - [The syntax
&pin (mut|const) Tis now parsed as a type which in theory could affect macro expansion results in some edge cases](rust-lang/rust#130635 (comment)) - [Legacy syntax for calling
std::archfunctions is no longer permitted to declare items or bodies (such as closures, inline consts, or async blocks).](rust-lang/rust#130443 (comment)) - Declaring functions with a calling convention not supported on the current target now triggers a hard error
- The next-generation trait solver is now enabled for coherence, fixing multiple soundness issues
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this MR and you won't be reminded about this update again.
- If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.
wip-sync pushed a commit to NetBSD/pkgsrc-wip that referenced this pull request
Pkgsrc changes:
- Adapt patches, one of the patched files were restructured upstream.
- Checksum changes.
Upstream changes:
Version 1.84.1 (2025-01-30)
- [Fix ICE 132920 in duplicate-crate diagnostics.] (rust-lang/rust#133304)
- [Fix errors for overlapping impls in incremental rebuilds.] (rust-lang/rust#133828)
- [Fix slow compilation related to the next-generation trait solver.] (rust-lang/rust#135618)
- [Fix debuginfo when LLVM's location discriminator value limit is exceeded.] (rust-lang/rust#135643)
- Fixes for building Rust from source:
- [Only try to distribute
llvm-objcopyif llvm tools are enabled.] (rust-lang/rust#134240) - [Add Profile Override for Non-Git Sources.] (rust-lang/rust#135433)
- [Resolve symlinks of LLVM tool binaries before copying them.] (rust-lang/rust#135585)
- [Make it possible to use ci-rustc on tarball sources.] (rust-lang/rust#135722)
- [Only try to distribute
Version 1.84.0 (2025-01-09)
Language
- [Allow
#[deny]inside#[forbid]as a no-op] (rust-lang/rust#121560) - [Show a warning when
-Ctarget-featureis used to toggle features that can lead to unsoundness due to ABI mismatches] (rust-lang/rust#129884) - [Use the next-generation trait solver in coherence] (rust-lang/rust#130654)
- [Allow coercions to drop the principal of trait objects] (rust-lang/rust#131857)
- [Support
/as the path separator forinclude!()in all cases on Windows] (rust-lang/rust#125205) - [Taking a raw ref (
raw (const|mut)) of a deref of a pointer (*ptr) is now safe] (rust-lang/rust#129248) - [Stabilize s390x inline assembly] (rust-lang/rust#131258)
- [Stabilize Arm64EC inline assembly] (rust-lang/rust#131781)
- [Lint against creating pointers to immediately dropped temporaries] (rust-lang/rust#128985)
- [Execute drop glue when unwinding in an
extern "C"function] (rust-lang/rust#129582)
Compiler
- [Add
--print host-tupleflag to print the host target tuple and affirm the "target tuple" terminology over "target triple"] (rust-lang/rust#125579) - [Declaring functions with a calling convention not supported on the current target now triggers a hard error] (rust-lang/rust#129935)
- [Set up indirect access to external data for
loongarch64-unknown-linux-{musl,ohos}] (rust-lang/rust#131583) - [Enable XRay instrumentation for LoongArch Linux targets] (rust-lang/rust#131818)
- [Extend the
unexpected_cfgslint to also warn in external macros] (rust-lang/rust#132577) - [Stabilize WebAssembly
multivalue,reference-types, andtail-calltarget features] (rust-lang/rust#131080) - [Added Tier 2 support for the
wasm32v1-nonetarget] (rust-lang/rust#131487)
Libraries
- [Implement
From<&mut {slice}>forBox/Rc/Arc<{slice}>] (rust-lang/rust#129329) - [Move
<float>::copysign,<float>::abs,<float>::signumtocore] (rust-lang/rust#131304) - [Add
LowerExpandUpperExpimplementations toNonZero] (rust-lang/rust#131377) - [Implement
FromStrforCStringandTryFrom<CString>forString] (rust-lang/rust#130608) - [
std::os::darwinhas been made public] (rust-lang/rust#130635)
Stabilized APIs
- [
Ipv6Addr::is_unique_local] (https://doc.rust-lang.org/stable/core/net/struct.Ipv6Addr.html#method.is_unique_local) - [
Ipv6Addr::is_unicast_link_local] (https://doc.rust-lang.org/stable/core/net/struct.Ipv6Addr.html#method.is_unicast_link_local) - [
core::ptr::with_exposed_provenance] (https://doc.rust-lang.org/stable/core/ptr/fn.with_exposed_provenance.html) - [
core::ptr::with_exposed_provenance_mut] (https://doc.rust-lang.org/stable/core/ptr/fn.with_exposed_provenance_mut.html) - [
<ptr>::addr] (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.addr) - [
<ptr>::expose_provenance] (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.expose_provenance) - [
<ptr>::with_addr] (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.with_addr) - [
<ptr>::map_addr] (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.map_addr) - [
<int>::isqrt] (https://doc.rust-lang.org/stable/core/primitive.i32.html#method.isqrt) - [
<int>::checked_isqrt] (https://doc.rust-lang.org/stable/core/primitive.i32.html#method.checked_isqrt) - [
<uint>::isqrt] (https://doc.rust-lang.org/stable/core/primitive.u32.html#method.isqrt) - [
NonZero::isqrt] (https://doc.rust-lang.org/stable/core/num/struct.NonZero.html#impl-NonZero%3Cu128%3E/method.isqrt) - [
core::ptr::without_provenance] (https://doc.rust-lang.org/stable/core/ptr/fn.without_provenance.html) - [
core::ptr::without_provenance_mut] (https://doc.rust-lang.org/stable/core/ptr/fn.without_provenance_mut.html) - [
core::ptr::dangling] (https://doc.rust-lang.org/stable/core/ptr/fn.dangling.html) - [
core::ptr::dangling_mut] (https://doc.rust-lang.org/stable/core/ptr/fn.dangling_mut.html)
These APIs are now stable in const contexts
- [
AtomicBool::from_ptr] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicBool.html#method.from_ptr) - [
AtomicPtr::from_ptr] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicPtr.html#method.from_ptr) - [
AtomicU8::from_ptr] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicU8.html#method.from_ptr) - [
AtomicU16::from_ptr] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicU16.html#method.from_ptr) - [
AtomicU32::from_ptr] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicU32.html#method.from_ptr) - [
AtomicU64::from_ptr] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicU64.html#method.from_ptr) - [
AtomicUsize::from_ptr] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicUsize.html#method.from_ptr) - [
AtomicI8::from_ptr] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicI8.html#method.from_ptr) - [
AtomicI16::from_ptr] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicI16.html#method.from_ptr) - [
AtomicI32::from_ptr] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicI32.html#method.from_ptr) - [
AtomicI64::from_ptr] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicI64.html#method.from_ptr) - [
AtomicIsize::from_ptr] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicIsize.html#method.from_ptr) - [
<ptr>::is_null] (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.is_null-1) - [
<ptr>::as_ref] (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.as_ref-1) - [
<ptr>::as_mut] (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.as_mut) - [
Pin::new] (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.new) - [
Pin::new_unchecked] (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.new_unchecked) - [
Pin::get_ref] (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.get_ref) - [
Pin::into_ref] (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.into_ref) - [
Pin::get_mut] (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.get_mut) - [
Pin::get_unchecked_mut] (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.get_unchecked_mut) - [
Pin::static_ref] (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.static_ref) - [
Pin::static_mut] (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.static_mut)
Cargo
- [Stabilize MSRV-aware resolver config] (rust-lang/cargo#14639)
- [Stabilize resolver v3] (rust-lang/cargo#14754)
Rustdoc
- [rustdoc-search: improve type-driven search] (rust-lang/rust#127589)
Compatibility Notes
- [Enable by default the
LSXtarget feature for LoongArch Linux targets] (rust-lang/rust#132140) - The unstable
-Zprofileflag ("gcov-style" coverage instrumentation) has been removed. This does not affect the stable flags for coverage instrumentation (-Cinstrument-coverage) and profile-guided optimization (-Cprofile-generate,-Cprofile-use), which are unrelated and remain available. - Support for the target named
wasm32-wasihas been removed as the target is now namedwasm32-wasip1. This completes the [transition] (rust-lang/compiler-team#607) plan for this target following [the introduction ofwasm32-wasip1] (rust-lang/rust#120468) in Rust 1.78. Compiler warnings on [use ofwasm32-wasi] (rust-lang/rust#126662) introduced in Rust 1.81 are now gone as well as the target is removed. - [The syntax
&pin (mut|const) Tis now parsed as a type which in theory could affect macro expansion results in some edge cases] (rust-lang/rust#130635 (comment)) - [Legacy syntax for calling
std::archfunctions is no longer permitted to declare items or bodies (such as closures, inline consts, or async blocks).] (rust-lang/rust#130443 (comment)) - The
wasm32-unknown-emscriptentarget's binary release of the standard library is now [built with the latest emsdk 3.1.68] (rust-lang/rust#131533), which fixes an ABI-incompatibility with Emscripten >= 3.1.42. If you are locally using a version of emsdk with an incompatible ABI (e.g. before 3.1.42 or a future one), you should build your code with-Zbuild-stdto ensure thatstduses the correct ABI. - [Declaring functions with a calling convention not supported on the current target now triggers a hard error] (rust-lang/rust#129935)
- [The next-generation trait solver is now enabled for coherence, fixing multiple soundness issues] (rust-lang/rust#130654)
workingjubilee added a commit to workingjubilee/rustc that referenced this pull request
…ntions, r=workingjubilee
Add (back) unsupported_calling_conventions lint to reject more invalid calling conventions
This adds back the unsupported_calling_conventions lint that was removed in rust-lang#129935, in order to start the process of dealing with rust-lang#137018. Specifically, we are going for the plan laid out [here](rust-lang#137018 (comment)):
- thiscall, stdcall, fastcall, cdecl should only be accepted on x86-32
- vectorcall should only be accepted on x86-32 and x86-64
The difference to the status quo is that:
- We stop accepting stdcall, fastcall on targets that are windows && non-x86-32 (we already don't accept these on targets that are non-windows && non-x86-32)
- We stop accepting cdecl on targets that are non-x86-32
- (There is no difference for thiscall, this was already a hard error on non-x86-32)
- We stop accepting vectorcall on targets that are windows && non-x86-*
Vectorcall is an unstable ABI so we can just make this a hard error immediately. The others are stable, so we emit the unsupported_calling_conventions forward-compat lint. I set up the lint to show up in dependencies via cargo's future-compat report immediately, but we could also make it show up just for the local crate first if that is preferred.
GuillaumeGomez added a commit to GuillaumeGomez/rust that referenced this pull request
…ntions, r=workingjubilee
Add (back) unsupported_calling_conventions lint to reject more invalid calling conventions
This adds back the unsupported_calling_conventions lint that was removed in rust-lang#129935, in order to start the process of dealing with rust-lang#137018. Specifically, we are going for the plan laid out [here](rust-lang#137018 (comment)):
- thiscall, stdcall, fastcall, cdecl should only be accepted on x86-32
- vectorcall should only be accepted on x86-32 and x86-64
The difference to the status quo is that:
- We stop accepting stdcall, fastcall on targets that are windows && non-x86-32 (we already don't accept these on targets that are non-windows && non-x86-32)
- We stop accepting cdecl on targets that are non-x86-32
- (There is no difference for thiscall, this was already a hard error on non-x86-32)
- We stop accepting vectorcall on targets that are windows && non-x86-*
Vectorcall is an unstable ABI so we can just make this a hard error immediately. The others are stable, so we emit the unsupported_calling_conventions forward-compat lint. I set up the lint to show up in dependencies via cargo's future-compat report immediately, but we could also make it show up just for the local crate first if that is preferred.
rust-bors bot added a commit that referenced this pull request
…try>
Add (back) unsupported_calling_conventions lint to reject more invalid calling conventions
This adds back the unsupported_calling_conventions lint that was removed in #129935, in order to start the process of dealing with #137018. Specifically, we are going for the plan laid out [here](#137018 (comment)):
- thiscall, stdcall, fastcall, cdecl should only be accepted on x86-32
- vectorcall should only be accepted on x86-32 and x86-64
The difference to the status quo is that:
- We stop accepting stdcall, fastcall on targets that are windows && non-x86-32 (we already don't accept these on targets that are non-windows && non-x86-32)
- We stop accepting cdecl on targets that are non-x86-32
- (There is no difference for thiscall, this was already a hard error on non-x86-32)
- We stop accepting vectorcall on targets that are windows && non-x86-*
Vectorcall is an unstable ABI so we can just make this a hard error immediately. The others are stable, so we emit the unsupported_calling_conventions forward-compat lint. I set up the lint to show up in dependencies via cargo's future-compat report immediately, but we could also make it show up just for the local crate first if that is preferred.
try-job: i686-msvc-1 try-job: x86_64-msvc-1 try-job: test-various
rust-bors bot added a commit that referenced this pull request
…try>
Add (back) unsupported_calling_conventions lint to reject more invalid calling conventions
This adds back the unsupported_calling_conventions lint that was removed in #129935, in order to start the process of dealing with #137018. Specifically, we are going for the plan laid out [here](#137018 (comment)):
- thiscall, stdcall, fastcall, cdecl should only be accepted on x86-32
- vectorcall should only be accepted on x86-32 and x86-64
The difference to the status quo is that:
- We stop accepting stdcall, fastcall on targets that are windows && non-x86-32 (we already don't accept these on targets that are non-windows && non-x86-32)
- We stop accepting cdecl on targets that are non-x86-32
- (There is no difference for thiscall, this was already a hard error on non-x86-32)
- We stop accepting vectorcall on targets that are windows && non-x86-*
Vectorcall is an unstable ABI so we can just make this a hard error immediately. The others are stable, so we emit the unsupported_calling_conventions forward-compat lint. I set up the lint to show up in dependencies via cargo's future-compat report immediately, but we could also make it show up just for the local crate first if that is preferred.
try-job: i686-msvc-1 try-job: x86_64-msvc-1 try-job: test-various
rust-bors bot added a commit that referenced this pull request
…try>
Add (back) unsupported_calling_conventions lint to reject more invalid calling conventions
This adds back the unsupported_calling_conventions lint that was removed in #129935, in order to start the process of dealing with #137018. Specifically, we are going for the plan laid out [here](#137018 (comment)):
- thiscall, stdcall, fastcall, cdecl should only be accepted on x86-32
- vectorcall should only be accepted on x86-32 and x86-64
The difference to the status quo is that:
- We stop accepting stdcall, fastcall on targets that are windows && non-x86-32 (we already don't accept these on targets that are non-windows && non-x86-32)
- We stop accepting cdecl on targets that are non-x86-32
- (There is no difference for thiscall, this was already a hard error on non-x86-32)
- We stop accepting vectorcall on targets that are windows && non-x86-*
Vectorcall is an unstable ABI so we can just make this a hard error immediately. The others are stable, so we emit the unsupported_calling_conventions forward-compat lint. I set up the lint to show up in dependencies via cargo's future-compat report immediately, but we could also make it show up just for the local crate first if that is preferred.
try-job: i686-msvc-1 try-job: x86_64-msvc-1 try-job: test-various
rust-bors bot added a commit that referenced this pull request
…try>
Add (back) unsupported_calling_conventions lint to reject more invalid calling conventions
This adds back the unsupported_calling_conventions lint that was removed in #129935, in order to start the process of dealing with #137018. Specifically, we are going for the plan laid out [here](#137018 (comment)):
- thiscall, stdcall, fastcall, cdecl should only be accepted on x86-32
- vectorcall should only be accepted on x86-32 and x86-64
The difference to the status quo is that:
- We stop accepting stdcall, fastcall on targets that are windows && non-x86-32 (we already don't accept these on targets that are non-windows && non-x86-32)
- We stop accepting cdecl on targets that are non-x86-32
- (There is no difference for thiscall, this was already a hard error on non-x86-32)
- We stop accepting vectorcall on targets that are windows && non-x86-*
Vectorcall is an unstable ABI so we can just make this a hard error immediately. The others are stable, so we emit the unsupported_calling_conventions forward-compat lint. I set up the lint to show up in dependencies via cargo's future-compat report immediately, but we could also make it show up just for the local crate first if that is preferred.
try-job: i686-msvc-1 try-job: x86_64-msvc-1 try-job: test-various
bors added a commit that referenced this pull request
…orkingjubilee
Add (back) unsupported_calling_conventions lint to reject more invalid calling conventions
This adds back the unsupported_calling_conventions lint that was removed in #129935, in order to start the process of dealing with #137018. Specifically, we are going for the plan laid out [here](#137018 (comment)):
- thiscall, stdcall, fastcall, cdecl should only be accepted on x86-32
- vectorcall should only be accepted on x86-32 and x86-64
The difference to the status quo is that:
- We stop accepting stdcall, fastcall on targets that are windows && non-x86-32 (we already don't accept these on targets that are non-windows && non-x86-32)
- We stop accepting cdecl on targets that are non-x86-32
- (There is no difference for thiscall, this was already a hard error on non-x86-32)
- We stop accepting vectorcall on targets that are windows && non-x86-*
Vectorcall is an unstable ABI so we can just make this a hard error immediately. The others are stable, so we emit the unsupported_calling_conventions forward-compat lint. I set up the lint to show up in dependencies via cargo's future-compat report immediately, but we could also make it show up just for the local crate first if that is preferred.
try-job: i686-msvc-1 try-job: x86_64-msvc-1 try-job: test-various
lnicola pushed a commit to lnicola/rust-analyzer that referenced this pull request
…orkingjubilee
Add (back) unsupported_calling_conventions lint to reject more invalid calling conventions
This adds back the unsupported_calling_conventions lint that was removed in rust-lang/rust#129935, in order to start the process of dealing with rust-lang/rust#137018. Specifically, we are going for the plan laid out [here](rust-lang/rust#137018 (comment)):
- thiscall, stdcall, fastcall, cdecl should only be accepted on x86-32
- vectorcall should only be accepted on x86-32 and x86-64
The difference to the status quo is that:
- We stop accepting stdcall, fastcall on targets that are windows && non-x86-32 (we already don't accept these on targets that are non-windows && non-x86-32)
- We stop accepting cdecl on targets that are non-x86-32
- (There is no difference for thiscall, this was already a hard error on non-x86-32)
- We stop accepting vectorcall on targets that are windows && non-x86-*
Vectorcall is an unstable ABI so we can just make this a hard error immediately. The others are stable, so we emit the unsupported_calling_conventions forward-compat lint. I set up the lint to show up in dependencies via cargo's future-compat report immediately, but we could also make it show up just for the local crate first if that is preferred.
try-job: i686-msvc-1 try-job: x86_64-msvc-1 try-job: test-various
github-actions bot pushed a commit to rust-lang/miri that referenced this pull request
…orkingjubilee
Add (back) unsupported_calling_conventions lint to reject more invalid calling conventions
This adds back the unsupported_calling_conventions lint that was removed in rust-lang/rust#129935, in order to start the process of dealing with rust-lang/rust#137018. Specifically, we are going for the plan laid out [here](rust-lang/rust#137018 (comment)):
- thiscall, stdcall, fastcall, cdecl should only be accepted on x86-32
- vectorcall should only be accepted on x86-32 and x86-64
The difference to the status quo is that:
- We stop accepting stdcall, fastcall on targets that are windows && non-x86-32 (we already don't accept these on targets that are non-windows && non-x86-32)
- We stop accepting cdecl on targets that are non-x86-32
- (There is no difference for thiscall, this was already a hard error on non-x86-32)
- We stop accepting vectorcall on targets that are windows && non-x86-*
Vectorcall is an unstable ABI so we can just make this a hard error immediately. The others are stable, so we emit the unsupported_calling_conventions forward-compat lint. I set up the lint to show up in dependencies via cargo's future-compat report immediately, but we could also make it show up just for the local crate first if that is preferred.
try-job: i686-msvc-1 try-job: x86_64-msvc-1 try-job: test-various
Labels
This issue / PR is in PFCP or FCP with a disposition to merge it.
The final comment period is finished for this PR / Issue.
This PR was explicitly merged by bors.
Marks issues that should be documented in the release notes of the next release.
Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Relevant to the compiler team, which will review and decide on the PR/issue.