Stablize const_extern_fn for "Rust" and "C" by Aaron1011 · Pull Request #95346 · rust-lang/rust (original) (raw)

bors added a commit to rust-lang-ci/rust that referenced this pull request

Sep 14, 2024

@bors

…, r=RalfJung

stabilize const_extern_fn

closes rust-lang#64926

tracking issue: rust-lang#64926 reference PR: rust-lang/reference#1596

Stabilizaton Report

Summary

Using const extern "Rust" and const extern "C" was already stabilized (since version 1.62.0, see rust-lang#95346). This PR stabilizes the other calling conventions: it is now possible to write const unsafe extern "calling-convention" fn and const extern "calling-convention" fn for any supported calling convention:

const extern "C-unwind" fn foo1(val: u8) -> u8 { val + 1}
const extern "stdcall" fn foo2(val: u8) -> u8 { val + 1}
const unsafe extern "C-unwind" fn bar1(val: bool) -> bool { !val }
const unsafe extern "stdcall" fn bar2(val: bool) -> bool { !val }

This can be used to const-ify an extern fn, or conversely, to make a const fn callable from external code.

r? T-lang

cc @RalfJung