Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tracking Issue for extended_varargs_abi_support #100189

Open
1 of 3 tasks
Soveu opened this issue Aug 6, 2022 · 3 comments
Open
1 of 3 tasks

Tracking Issue for extended_varargs_abi_support #100189

Soveu opened this issue Aug 6, 2022 · 3 comments
Labels
C-tracking-issue Category: An issue tracking the progress of sth. like the implementation of an RFC F-extended_varargs_abi_support `#![feature(extended_varargs_abi_support)]` T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@Soveu
Copy link
Contributor

Soveu commented Aug 6, 2022

This is a tracking issue for extending available ABIs for var-args functions.
The feature gate for the issue is #![feature(extended_varargs_abi_support)].

About tracking issues

Tracking issues are used to record the overall progress of implementation.
They are also used as hubs connecting to other relevant issues, e.g., bugs or open design questions.
A tracking issue is however not meant for large scale discussion, questions, or bug reports about a feature.
Instead, open a dedicated issue for the specific matter and add the relevant feature gate label.

Steps

Implementation history

Unresolved Questions

  • should extern "system" be included? the original feature only described itself as applying to extern "efiapi", extern "sysv64", and extern "win64", and later the feature described itself as applying to extern "aapcs", but the only case where extern "system" is meaningfully distinct is a case where it cannot be a vararg ABI. while MSVC sometimes translates __stdcall to be identical to the C ABI, we have previously rejected implementing MSVC's oddities:

Footnotes

  1. this was not recorded as part of the impl history until after it was discovered this feature was initially stabilized without an FCP.

@Soveu Soveu added the C-tracking-issue Category: An issue tracking the progress of sth. like the implementation of an RFC label Aug 6, 2022
@WaffleLapkin WaffleLapkin added T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. F-extended_varargs_abi_support `#![feature(extended_varargs_abi_support)]` labels Sep 15, 2023
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this issue Jan 13, 2024
…rochenkov

Varargs support for system ABI

This PR allows functions with the `system` ABI to be variadic (under the `extended_varargs_abi_support` feature tracked in rust-lang#100189). On x86 windows, the `system` ABI is equivalent to `C` for variadic functions. On other platforms, `system` is already equivalent to `C`.

Fixes rust-lang#110505
rust-timer added a commit to rust-lang-ci/rust that referenced this issue Jan 13, 2024
Rollup merge of rust-lang#119587 - beepster4096:system_varargs, r=petrochenkov

Varargs support for system ABI

This PR allows functions with the `system` ABI to be variadic (under the `extended_varargs_abi_support` feature tracked in rust-lang#100189). On x86 windows, the `system` ABI is equivalent to `C` for variadic functions. On other platforms, `system` is already equivalent to `C`.

Fixes rust-lang#110505
crawfxrd added a commit to crawfxrd/yuffie that referenced this issue Jun 6, 2024
These two functions are defined as variadic (use `...`) which is
currently only available for the `C` and `cdecl` ABIs.

Make them unavailable until the feature is stabilized for `efiapi`.

Ref: rust-lang/rust#100189
Signed-off-by: Tim Crawford <tcrawford@system76.com>
joboet added a commit to joboet/rust that referenced this issue Nov 27, 2024
Stabilize `extended_varargs_abi_support`

I think that is everything? If there is any documentation regarding `extern` and/or varargs to correct, let me know, some quick greps suggest that there might be none.

Tracking issue: rust-lang#100189
jieyouxu added a commit to jieyouxu/rust that referenced this issue Nov 30, 2024
Stabilize `extended_varargs_abi_support`

I think that is everything? If there is any documentation regarding `extern` and/or varargs to correct, let me know, some quick greps suggest that there might be none.

Tracking issue: rust-lang#100189
jieyouxu added a commit to jieyouxu/rust that referenced this issue Nov 30, 2024
Stabilize `extended_varargs_abi_support`

I think that is everything? If there is any documentation regarding `extern` and/or varargs to correct, let me know, some quick greps suggest that there might be none.

Tracking issue: rust-lang#100189
rust-timer added a commit to rust-lang-ci/rust that referenced this issue Nov 30, 2024
Rollup merge of rust-lang#116161 - Soveu:varargs2, r=cjgillot

Stabilize `extended_varargs_abi_support`

I think that is everything? If there is any documentation regarding `extern` and/or varargs to correct, let me know, some quick greps suggest that there might be none.

Tracking issue: rust-lang#100189
@Mark-Simulacrum
Copy link
Member

Closing since this was stabilized and docs have been merged (rust-lang/reference#1687).

@workingjubilee
Copy link
Member

workingjubilee commented Feb 12, 2025

Reopening because no team ever FCPed this and there are legitimate reasons to question, or at least discuss, the precise implementation here. Accordingly I have opened #136897

@workingjubilee
Copy link
Member

workingjubilee commented Feb 12, 2025

Apparently part of the motive to fold extern "system" under this umbrella is #110505 but the original feature was motivated by extern "efiapi" (which translates to one of a few different C-like ABIs, which all have direct varargs support without qualification or ambiguity, and which must be some ABI that can define vararg functions, because the UEFI spec defines a vararg ABI), so I would propose splitting out extern "system" into a new feature and giving it a separate review and decision.

I think making that decision would potentially be acceptable but it seems like a distinct one and deserves a bit more thought.

bors added a commit to rust-lang-ci/rust that referenced this issue Feb 12, 2025
…r=WaffleLapkin

Revert "Stabilize `extended_varargs_abi_support`"

I cannot find an FCP for this, despite it being a stabilization PR which normally means we do an FCP of some kind? It would seem reasonable for _either_ compiler or lang to have FCPed it? I am thus opening a revert PR, which mostly-cleanly applies, so that we can later actually land this properly with a stability report and FCP.

- rust-lang#136896
- rust-lang#116161
- rust-lang#100189
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-tracking-issue Category: An issue tracking the progress of sth. like the implementation of an RFC F-extended_varargs_abi_support `#![feature(extended_varargs_abi_support)]` T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests

4 participants