rust/compiler
Jacob Pratt 7c53b5d206
Rollup merge of #131080 - alexcrichton:stabilize-more-wasm-target-features, r=petrochenkov
Stabilize WebAssembly `multivalue`, `reference-types`, and `tail-call` target features

For the `multivalue` and `reference-types` features this commit is
similar to https://github.com/rust-lang/rust/pull/117457 in that it's stabilizing target features specific to
WebAssembly targets. The previous PR left out these two features because
they weren't expected to change much about compiled code so it was
unclear what the rationale was. It has [since been discovered][blog]
that `reference-types` can be useful as it changes the binary format of
the `call_indirect` instruction. Additionally [on Zulip][zulip] there's
a use case of detecting these features at compile time and generating a
compile error to better warn users about features not supported on
engines.

This PR then additionally adds the `tail-call` feature which corresponds
to the [tail-call] proposal to WebAssembly. This feature advanced to
"phase 4" in the WebAssembly CG awhile back and has been supported in
LLVM for quite some time now. Engines are finishing up implementations
or have already shipped implementations, so while this is a bit of a
late addition to Rust itself it reflects the current status of
WebAssembly's state of the feature.

A test has been added here not only for these features but other
WebAssembly features as well to showcase that they're usable without
feature gates in stable Rust.

[blog]: https://blog.rust-lang.org/2024/09/24/webassembly-targets-change-in-default-target-features.html
[zulip]: https://rust-lang.zulipchat.com/#narrow/stream/122651-general/topic/wasm32.20reference-types.20.2F.20multivalue.20in.201.2E82-beta.20not.20enabled/near/473893987
[tail-call]: https://github.com/webassembly/tail-call
2024-11-10 19:12:25 -05:00
..
rustc Remove unused intercrate dependencies 2024-11-07 14:17:16 +00:00
rustc_abi pointee_info_at: fix logic for recursing into enums 2024-11-08 07:35:29 +01:00
rustc_arena
rustc_ast Add documentation on ast::Attribute 2024-11-05 16:38:15 +01:00
rustc_ast_ir
rustc_ast_lowering Stabilize Arm64EC inline assembly 2024-11-10 17:43:46 +09:00
rustc_ast_passes Rename the FIXMEs, remove a few that dont matter anymore 2024-11-03 18:59:41 +00:00
rustc_ast_pretty
rustc_attr remove support for extern-block const intrinsics 2024-11-04 23:27:45 +01:00
rustc_baked_icu_data
rustc_borrowck Dont suggest use<APIT> 2024-11-09 19:41:53 +00:00
rustc_builtin_macros
rustc_codegen_cranelift Merge commit '1fa693ca4462fc1f790693464cf765ad693616af' into sync_cg_clif-2024-11-09 2024-11-09 13:48:06 +00:00
rustc_codegen_gcc remove support for rustc_safe_intrinsic attribute; use rustc_intrinsic functions instead 2024-11-08 09:16:00 +01:00
rustc_codegen_llvm Rollup merge of #132675 - Zalathar:empty-spans, r=jieyouxu 2024-11-10 17:43:07 +01:00
rustc_codegen_ssa Rollup merge of #132774 - bjorn3:cranelift_lld, r=lqd 2024-11-09 19:16:45 +01:00
rustc_const_eval Rollup merge of #132823 - RalfJung:conditional-const-calls, r=fee1-dead,compiler-errors 2024-11-09 20:28:44 -08:00
rustc_data_structures
rustc_driver
rustc_driver_impl Use a method to apply RustcOptGroup to getopts::Options 2024-11-08 12:46:39 +11:00
rustc_error_codes remove support for rustc_safe_intrinsic attribute; use rustc_intrinsic functions instead 2024-11-08 09:16:00 +01:00
rustc_error_messages
rustc_errors Rename target triple to target tuple in many places in the compiler 2024-11-02 21:29:59 +01:00
rustc_expand Rollup merge of #132332 - nnethercote:use-token_descr-more, r=estebank 2024-10-30 06:40:36 +01:00
rustc_feature Rollup merge of #132552 - taiki-e:sparc-target-feature, r=workingjubilee 2024-11-09 10:52:03 +01:00
rustc_fluent_macro
rustc_fs_util
rustc_graphviz
rustc_hir Rollup merge of #132423 - RalfJung:const-eval-align-offset, r=dtolnay 2024-11-03 20:08:13 -08:00
rustc_hir_analysis Rollup merge of #132757 - compiler-errors:yeet-check-wf, r=lcnr 2024-11-08 20:46:12 -08:00
rustc_hir_pretty compiler: Switch to rustc_abi in hir_pretty, lint_defs, and mir_build 2024-10-30 22:38:49 -07:00
rustc_hir_typeck Don't suggest .into_iter() on iterators 2024-11-08 17:43:13 -08:00
rustc_incremental replace manual time convertions with std ones 2024-11-03 15:51:39 +03:00
rustc_index
rustc_index_macros
rustc_infer Manually register some bounds for a better span 2024-11-08 04:56:08 +00:00
rustc_interface Use a method to apply RustcOptGroup to getopts::Options 2024-11-08 12:46:39 +11:00
rustc_lexer Reject raw lifetime followed by \' as well 2024-10-30 01:13:18 +00:00
rustc_lint Rollup merge of #132426 - Urgau:unreach_pub-super, r=petrochenkov 2024-11-10 22:20:35 +01:00
rustc_lint_defs Auto merge of #132173 - veluca93:abi_checks, r=RalfJung,compiler-errors 2024-11-10 02:52:25 +00:00
rustc_llvm Add discriminators to DILocations when multiple functions are inlined into a single point. 2024-11-09 08:01:31 -08:00
rustc_log
rustc_macros
rustc_metadata Rollup merge of #132131 - celinval:smir-crate-defs, r=compiler-errors 2024-11-07 18:48:22 -08:00
rustc_middle Rollup merge of #132675 - Zalathar:empty-spans, r=jieyouxu 2024-11-10 17:43:07 +01:00
rustc_mir_build Auto merge of #132580 - compiler-errors:globs, r=Noratrieb 2024-11-05 08:30:56 +00:00
rustc_mir_dataflow compiler: Remove unused rustc_target from Cargo.tomls 2024-11-03 13:38:47 -08:00
rustc_mir_transform Rollup merge of #132675 - Zalathar:empty-spans, r=jieyouxu 2024-11-10 17:43:07 +01:00
rustc_monomorphize Auto merge of #132173 - veluca93:abi_checks, r=RalfJung,compiler-errors 2024-11-10 02:52:25 +00:00
rustc_next_trait_solver Remove unused intercrate dependencies 2024-11-07 14:17:16 +00:00
rustc_parse Rollup merge of #132363 - compiler-errors:raw-lt-id-valid, r=wesleywiser 2024-11-09 19:16:43 +01:00
rustc_parse_format
rustc_passes remove support for rustc_safe_intrinsic attribute; use rustc_intrinsic functions instead 2024-11-08 09:16:00 +01:00
rustc_pattern_analysis compiler: Remove unused rustc_target from Cargo.tomls 2024-11-03 13:38:47 -08:00
rustc_privacy Merge HostPolarity and BoundConstness 2024-10-30 16:23:16 +00:00
rustc_query_impl
rustc_query_system replace manual time convertions with std ones 2024-11-03 15:51:39 +03:00
rustc_resolve use verbose for path separator suggestion 2024-11-08 16:58:19 +00:00
rustc_sanitizers compiler: Add rustc_abi to _sanitizers 2024-11-02 20:31:47 -07:00
rustc_serialize
rustc_session Rollup merge of #132823 - RalfJung:conditional-const-calls, r=fee1-dead,compiler-errors 2024-11-09 20:28:44 -08:00
rustc_smir Rollup merge of #132131 - celinval:smir-crate-defs, r=compiler-errors 2024-11-07 18:48:22 -08:00
rustc_span Rollup merge of #132675 - Zalathar:empty-spans, r=jieyouxu 2024-11-10 17:43:07 +01:00
rustc_symbol_mangling ty::BrK -> ty::BoundRegionKind::K 2024-11-04 04:45:52 +00:00
rustc_target Stabilize WebAssembly multivalue, reference-types, and tail-call target features 2024-11-10 07:45:14 -08:00
rustc_trait_selection Dont suggest use<APIT> 2024-11-09 19:41:53 +00:00
rustc_traits
rustc_transmute
rustc_ty_utils Make fn_abi_sanity_check a bit stricter 2024-11-07 15:54:40 +00:00
rustc_type_ir Rename the FIXMEs, remove a few that dont matter anymore 2024-11-03 18:59:41 +00:00
rustc_type_ir_macros
stable_mir Rollup merge of #132161 - celinval:smir-fix-indent, r=compiler-errors 2024-11-08 18:51:28 +11:00