Skip to content

Turn stdarch into a Josh subtree #141899

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

Merged
merged 2,473 commits into from
Jun 26, 2025
Merged

Turn stdarch into a Josh subtree #141899

merged 2,473 commits into from
Jun 26, 2025

Conversation

Kobzol
Copy link
Contributor

@Kobzol Kobzol commented Jun 2, 2025

In a similar vein as #141229, this PR makes the stdarch repository a Josh subtree (it was previously a submodule). The initial commit of stdarch upon this is based is 5a7342fc16b208b1b16624e886937ed8509a6506, which is the previous commit SHA of the stdarch submodule. The sync was performed according to https://hackmd.io/7pOuxnkdQDaL1Y1FQr65xg.

This was decided in rust-lang/stdarch#1655.

Test pull PR on my fork: Kobzol/stdarch#1
Test push PR on my fork: Kobzol#59

I plan to use the same Rust (miri-inspired) tooling that we use for rustc-dev-guide to enable pulls/pushes on stdarch.

Note that this repository currently doesn't have any stdarch-specific tests, so before that, the subtree should only be modified through this repository only when dealing with changes that contain "cyclical dependencies" between stdarch and rustc. The long term vision is to integrate stdarch into rust-lang/rust completely.

CC @Amanieu

try-job: aarch64-apple
try-job: aarch64-gnu
try-job: x86_64-msvc-*
try-job: x86_64-gnu
try-job: x86_64-gnu-aux

folkertdev and others added 30 commits March 3, 2025 11:09
This is to combat the spurious CI failures in emulated run. Also helps with updatability and compatibility - it will work even if Intel changes the link
This commit fixes an issue where simd shift intrinsic in LLVM are
undefined behavior if the shift amount is larger than the bit width of
the lane. While in WebAssembly the corresponding instructions are
defined as masking out the upper bits we need to represent that
explicitly in LLVM IR to ensure that the semantics remain defined.

cc rust-lang#137941
@tgross35
Copy link
Contributor

I have no idea what would be going on here. Maybe you can replicate it with --frozen based on the comment?

The problems I had with builtins were that (1) it didn't like that compiler-builtins was showing up in the graph both via crates.io and via a local path, and (2) that it was a cyclic dependency because rustc-std-workspace-core and compiler-builtins depended on each other. I got around 1 by adding a patch in the workspace Cargo.toml, and 2 by having a manifest for builtins in-tree that depends on core via path, and a manifest for building out-of-tree that uses crates.io rustc-std-workspace-core. Which is a terrible solution, but Cargo requires paths to exist even if they are optional and nobody could come up with any better ideas.

Unfortunately I don't think this applies here, but maybe it's worth testing with path = dependencies just in case? Though I have no idea why it would be different between a submodule and a checkout in the first place.

@Kobzol
Copy link
Contributor Author

Kobzol commented Jun 25, 2025

Though I have no idea why it would be different between a submodule and a checkout in the first place.

It's not necessarily different, the new thing is that we now have a bootstrap test that tests "core_arch" from outside of the library workspace, which causes the issue. Thanks for the hints, I'll investigate.

@Kobzol
Copy link
Contributor Author

Kobzol commented Jun 25, 2025

I also don't understand why it can't find the package on crates.io, when it clearly exists there (https://crates.io/crates/rustc-std-workspace-alloc).

@tgross35
Copy link
Contributor

From the rla snip it looks like it's run with --frozen, which Cargo docs say means access to the network get blocked

@Kobzol
Copy link
Contributor Author

Kobzol commented Jun 25, 2025

I haven't been able to reproduce this locally, even via doing the same thing as distcheck does. I think it might have to do something with vendoring, and us not vendoring the dependencies of stdarch.

This might take a while to debug, and once stdarch is actually in-tree, we might potentially want to change how it interacts with the library workspace anyway, similar to compiler-builtins.

@Amanieu Would you mind if this PR only ported stdarch to a subtree, and the bootstrap integration was kept for a follow-up PR?

@Amanieu
Copy link
Member

Amanieu commented Jun 25, 2025

Yes I'm happy to defer that to a later PR.

@Kobzol
Copy link
Contributor Author

Kobzol commented Jun 25, 2025

Ok, removed the last commit for now.

@bors r=Amanieu

@bors
Copy link
Collaborator

bors commented Jun 25, 2025

📌 Commit e824005 has been approved by Amanieu

It is now in the queue for this repository.

@bors bors 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 Jun 25, 2025
@workingjubilee
Copy link
Member

@bors p=5

@bors
Copy link
Collaborator

bors commented Jun 26, 2025

⌛ Testing commit e824005 with merge 5557683...

@rust-log-analyzer
Copy link
Collaborator

The job x86_64-msvc-1 failed! Check out the build log: (web) (plain)

Click to see the possible cause of the failure (guessed by this bot)
---- [run-make] tests\run-make\short-ice stdout ----

error: rmake recipe failed to complete
status: exit code: 101
command: "D:\\a\\rust\\rust\\build\\x86_64-pc-windows-msvc\\test\\run-make\\short-ice\\rmake.exe"
stdout: none
--- stderr -------------------------------

thread 'main' panicked at D:\a\rust\rust\tests\run-make\short-ice\rmake.rs:38:5:
assertion `left == right` failed: Full backtrace should contain the short backtrace markers.
---
   2:     0x7ffc98f168f1 - std::io::IoSlice::as_slice::h48f37d8a0f0eb9fa
   3:     0x7ffc98f22165 - std::sys::backtrace::lock::h338f1f7bee650f1b
   4:     0x7ffc98f28170 - std::panicking::default_hook::h903e8698c1f5bdbb
   5:     0x7ffc98f27e90 - std::panicking::default_hook::h903e8698c1f5bdbb
   6:     0x7ffc8f9b81f0 - core[d0ced7f90386e952]::slice::sort::unstable::heapsort::heapsort::<((rustc_lint_defs[2921d1536033a589]::Level, &str), usize), <((rustc_lint_defs[2921d1536033a589]::Level, &str), usize) as core[d0ced7f90386e952]::cmp::PartialOrd>::lt>
   7:     0x7ffc98f28e87 - std::panicking::rust_panic_with_hook::h51b4fdb93e15b80b
   8:     0x7ffc98f28a92 - <std::panicking::begin_panic_handler::StaticStrPayload as core::panic::PanicPayload>::take_box::hb77a26811bcf7d39
   9:     0x7ffc98f22cff - std::sys::backtrace::__rust_end_short_backtrace::h23a012e374195273
  10:     0x7ffc98f2861e - __rustc[40246dd6203fcbaf]::rust_begin_unwind
  11:     0x7ffc9924bb91 - core::panicking::panic_fmt::hf53d3cfe82cfa659
  12:     0x7ffc989c7971 - <rustc_errors[4ebb237cbff24b59]::DiagCtxtInner>::emit_diagnostic
  13:     0x7ffc989c6619 - <rustc_errors[4ebb237cbff24b59]::DiagCtxtInner>::emit_diagnostic
  14:     0x7ffc8fe1d0dd - RNvXsb_NtCs8HxG82G4y68_13rustc_type_ir4foldINtB5_12RegionFolderNtNtNtCsd16Cjn0VB7L_12rustc_middle2ty7context6TyCtxtNCNCNvMNtNtNtCslTcWQSQv7CF_23rustc_next_trait_solver5solve13normalizes_to12opaque_typesINtNtB20_9eval_ctxt8EvalCtxtNtNtNtCs1faUAShfB25_21rust
  15:     0x7ffc989c5528 - <rustc_errors[4ebb237cbff24b59]::DiagCtxtInner>::emit_diagnostic
  16:     0x7ffc989c3811 - <rustc_errors[4ebb237cbff24b59]::DiagCtxtHandle>::emit_diagnostic
  17:     0x7ffc98a2578c - <rustc_span[44942cefcea815e5]::ErrorGuaranteed as rustc_errors[4ebb237cbff24b59]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
  18:     0x7ffc9463fdc1 - <rustc_hir_typeck[7389cacb8a283db0]::fn_ctxt::FnCtxt>::check_repeat_exprs
  19:     0x7ffc94638d89 - <rustc_hir_typeck[7389cacb8a283db0]::fn_ctxt::FnCtxt>::check_repeat_exprs
  20:     0x7ffc945ed420 - <rustc_hir_typeck[7389cacb8a283db0]::fn_ctxt::FnCtxt>::try_overloaded_call_traits
  21:     0x7ffc946e0687 - <rustc_hir_typeck[7389cacb8a283db0]::fn_ctxt::FnCtxt>::check_expr_kind
  22:     0x7ffc94606edf - <rustc_hir_typeck[7389cacb8a283db0]::fn_ctxt::FnCtxt>::check_expr_coercible_to_type
  23:     0x7ffc946d4e1e - <rustc_hir_typeck[7389cacb8a283db0]::fn_ctxt::FnCtxt>::check_expr_with_expectation
  24:     0x7ffc9464730a - <rustc_hir_typeck[7389cacb8a283db0]::fn_ctxt::FnCtxt>::check_repeat_exprs
  25:     0x7ffc946d6973 - <rustc_hir_typeck[7389cacb8a283db0]::fn_ctxt::FnCtxt>::check_expr_kind
  26:     0x7ffc94606edf - <rustc_hir_typeck[7389cacb8a283db0]::fn_ctxt::FnCtxt>::check_expr_coercible_to_type
  27:     0x7ffc946d4e1e - <rustc_hir_typeck[7389cacb8a283db0]::fn_ctxt::FnCtxt>::check_expr_with_expectation
  28:     0x7ffc94608f6f - <rustc_hir_typeck[7389cacb8a283db0]::fn_ctxt::FnCtxt>::check_return_or_body_tail
  29:     0x7ffc94577a41 - rustc_hir_typeck[7389cacb8a283db0]::check::check_fn
  30:     0x7ffc944e05b2 - rustc_hir_typeck[7389cacb8a283db0]::upvar::should_do_rust_2021_incompatible_closure_captures_analysis
  31:     0x7ffc96fb6595 - rustc_query_impl[61f2a928bfab0333]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[61f2a928bfab0333]::query_impl::typeck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[97a080568679b98f]::query::erase::Erased<[u8; 8usize]>>
  32:     0x7ffc96efd447 - rustc_query_impl[61f2a928bfab0333]::query_impl::stripped_cfg_items::get_query_incr::__rust_end_short_backtrace
  33:     0x7ffc96dbfdeb - RINvNtNtCsiVxMO4QZFWe_18rustc_query_system5query8plumbing17try_execute_queryINtCs8pncXC5Z6I9_16rustc_query_impl13DynamicConfigINtNtCsjsra3Rgjs8F_21rustc_data_structures9vec_cache8VecCacheNtNtCs5T2GPrHYoyn_10rustc_span6def_id10LocalDefIdINtNtNtCsd16Cjn0VB7L
  34:     0x7ffc96bb6f5d - rustc_query_impl[61f2a928bfab0333]::query_impl::typeck::get_query_non_incr::__rust_end_short_backtrace
  35:     0x7ffc94b4976a - <rustc_middle[97a080568679b98f]::ty::Ty as rustc_type_ir[655c76b9ec10de46]::inherent::Ty<rustc_middle[97a080568679b98f]::ty::context::TyCtxt>>::new_projection::<[rustc_middle[97a080568679b98f]::ty::Ty; 1usize]>
  36:     0x7ffc94b21ae8 - RINvNtNtCsjsra3Rgjs8F_21rustc_data_structures4sync8parallel15par_for_each_inRNtNtCs5T2GPrHYoyn_10rustc_span6def_id10LocalDefIdRSB1d_NCINvMs1_NtNtCsd16Cjn0VB7L_12rustc_middle3hir3mapNtNtNtB2j_2ty7context6TyCtxt19par_hir_body_ownersNCNvCsjIdUGH5wjcf_18rustc_
  37:     0x7ffc94a5d068 - rustc_hir_analysis[e59ceb45e0d6bdb5]::check_crate
  38:     0x7ffc8fdb0ee9 - rustc_interface[1d463c32536e68fa]::passes::analysis
  39:     0x7ffc96fb6ba3 - rustc_query_impl[61f2a928bfab0333]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[61f2a928bfab0333]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[97a080568679b98f]::query::erase::Erased<[u8; 0usize]>>
  40:     0x7ffc96efe2e4 - rustc_query_impl[61f2a928bfab0333]::query_impl::stripped_cfg_items::get_query_incr::__rust_end_short_backtrace
  41:     0x7ffc96d07954 - RINvNtNtCsiVxMO4QZFWe_18rustc_query_system5query8plumbing17try_execute_queryINtCs8pncXC5Z6I9_16rustc_query_impl13DynamicConfigINtNtB4_6caches11SingleCacheINtNtNtCsd16Cjn0VB7L_12rustc_middle5query5erase6ErasedAhj0_EEKb0_KB3s_KB3s_ENtNtB1f_8plumbing9QueryCtx
  42:     0x7ffc96f32bfe - rustc_query_impl[61f2a928bfab0333]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
  43:     0x7ffc8fa0b310 - RINvMs2_NtNtCs2cgFxp0Fqja_3std6thread5localINtB6_8LocalKeyINtNtCshVtL5WFvckM_4core4cell4CellPuEE4withNCINvNtNtNtCsd16Cjn0VB7L_12rustc_middle2ty7context3tls13enter_contextNCINvMsj_B1I_NtB1I_10GlobalCtxt5enterNCNCINvNtCs2vPfSbOMV7y_15rustc_interface6passes28
  44:     0x7ffc8fa9feda - RINvMsn_NtNtCsd16Cjn0VB7L_12rustc_middle2ty7contextNtB6_6TyCtxt18create_global_ctxtINtNtCshVtL5WFvckM_4core6option6OptionNtNtCs2vPfSbOMV7y_15rustc_interface7queries6LinkerENCNCINvNtB1Z_6passes28create_and_enter_global_ctxtB1j_NCNCNvCskV7P80CIUIb_17rustc_dr
  45:     0x7ffc8fa9bddf - RINvXsd_NtNtNtCs5XqDXalfD8I_5alloc11collections5btree3setINtB6_8BTreeSetNtNtCs5T2GPrHYoyn_10rustc_span6symbol6SymbolEINtNtNtNtCshVtL5WFvckM_4core4iter6traits7collect12FromIteratorB18_E9from_iterINtNtNtB1Y_8adapters3map3MapINtNtB3b_6filter6FilterIB3z_INtNtN
  46:     0x7ffc8f9c5347 - RNvXsq_NtCs5XqDXalfD8I_5alloc5boxedINtB5_3BoxDG_INtNtNtCshVtL5WFvckM_4core3ops8function6FnOnceTRL0_NtNtCs9M9lvJTdcTX_13rustc_session7session7SessionNtNtNtCsd16Cjn0VB7L_12rustc_middle2ty7context10CurrentGcxINtNtB7_4sync3ArcNtNtCsjsra3Rgjs8F_21rustc_data_str
  47:     0x7ffc8fa7e14c - rustc_interface[1d463c32536e68fa]::passes::create_and_enter_global_ctxt::<core[d0ced7f90386e952]::option::Option<rustc_interface[1d463c32536e68fa]::queries::Linker>, rustc_driver_impl[f3af3320e7cf0615]::run_compiler::{closure#0}::{closure#2}>
  48:     0x7ffc8fa63ebe - RINvMs_Cse1axGKuRo11_10scoped_tlsINtB5_9ScopedKeyNtCs5T2GPrHYoyn_10rustc_span14SessionGlobalsE3setNCNCNCINvNtCs2vPfSbOMV7y_15rustc_interface4util26run_in_thread_with_globalsNCINvB1H_31run_in_thread_pool_with_globalsNCINvNtB1J_9interface12run_compileruNCNvC
  49:     0x7ffc8f9929bb - RINvNtNtCs2cgFxp0Fqja_3std3sys9backtrace28___rust_begin_short_backtraceNCNCINvNtCs2vPfSbOMV7y_15rustc_interface4util26run_in_thread_with_globalsNCINvB1e_31run_in_thread_pool_with_globalsNCINvNtB1g_9interface12run_compileruNCNvCskV7P80CIUIb_17rustc_driver_i
  50:     0x7ffc8f99550a - RINvXs_NtNtNtCshVtL5WFvckM_4core4iter8adapters5chainINtB5_5ChainINtNtNtBb_5slice4iter4IterTReINtNtCs5XqDXalfD8I_5alloc3vec3VecNtCs3wWBmLdw8qH_15rustc_lint_defs6LintIdEEEB10_ENtNtNtB9_6traits8iterator8Iterator4foldjNCINvNtB7_3map8map_foldRB1q_jjNCNvCskV7P80
  51:     0x7ffc98f2e638 - std::sys::pal::windows::thread::Thread::new::h9c97474a47ce9b11
  52:     0x7ffce8c8e8d7 - BaseThreadInitThunk
  53:     0x7ffce9bfc34c - RtlUserThreadStart

error: the compiler unexpectedly panicked. this is a bug.
---

note: compiler flags: -Z treat-err-as-bug=1

query stack during panic:
#0 [typeck] type-checking `main`
#1 [analysis] running analysis passes on this crate
end of query stack

  left: 3
 right: 5
---
test result: FAILED. 311 passed; 1 failed; 85 ignored; 0 measured; 6 filtered out; finished in 227.45s

Some tests failed in compiletest suite=run-make mode=run-make host=x86_64-pc-windows-msvc target=x86_64-pc-windows-msvc
Build completed unsuccessfully in 2:21:47
make: *** [Makefile:112: ci-msvc-py] Error 1
  local time: Thu Jun 26 05:22:01 CUT 2025
  network time: Thu, 26 Jun 2025 05:22:02 GMT
##[error]Process completed with exit code 2.
Post job cleanup.
[command]"C:\Program Files\Git\bin\git.exe" version

@bors
Copy link
Collaborator

bors commented Jun 26, 2025

💔 Test failed - checks-actions

@bors bors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jun 26, 2025
@Kobzol
Copy link
Contributor Author

Kobzol commented Jun 26, 2025

@bors retry

Seems like short-ice might be flaky on Windows?

@bors bors 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 Jun 26, 2025
@workingjubilee
Copy link
Member

cc @dpaoliello

@bors
Copy link
Collaborator

bors commented Jun 26, 2025

⌛ Testing commit e824005 with merge 1e83852...

@bors
Copy link
Collaborator

bors commented Jun 26, 2025

☀️ Test successful - checks-actions
Approved by: Amanieu
Pushing 1e83852 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Jun 26, 2025
@bors bors merged commit 1e83852 into rust-lang:master Jun 26, 2025
11 checks passed
@rustbot rustbot added this to the 1.90.0 milestone Jun 26, 2025
@Kobzol Kobzol deleted the stdarch-josh branch June 26, 2025 09:20
Copy link
Contributor

What is this? This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.

Comparing bc4376f (parent) -> 1e83852 (this PR)

Test differences

No test diffs found

Test dashboard

Run

cargo run --manifest-path src/ci/citool/Cargo.toml -- \
    test-dashboard 1e838527f18cd24c81547ce6fbef6815032a80a7 --output-dir test-dashboard

And then open test-dashboard/index.html in your browser to see an overview of all executed tests.

Job duration changes

  1. dist-apple-various: 6063.7s -> 8379.5s (38.2%)
  2. dist-aarch64-apple: 6836.1s -> 4753.0s (-30.5%)
  3. dist-aarch64-linux: 7938.6s -> 5721.3s (-27.9%)
  4. x86_64-apple-1: 7623.9s -> 9333.7s (22.4%)
  5. x86_64-rust-for-linux: 3087.6s -> 2535.1s (-17.9%)
  6. x86_64-apple-2: 5538.5s -> 4585.3s (-17.2%)
  7. x86_64-gnu-aux: 7150.5s -> 5967.4s (-16.5%)
  8. mingw-check-1: 1779.9s -> 1536.8s (-13.7%)
  9. i686-gnu-2: 6199.3s -> 5364.5s (-13.5%)
  10. dist-x86_64-apple: 10904.9s -> 9545.4s (-12.5%)
How to interpret the job duration changes?

Job durations can vary a lot, based on the actual runner instance
that executed the job, system noise, invalidated caches, etc. The table above is provided
mostly for t-infra members, for simpler debugging of potential CI slow-downs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-meta Area: Issues & PRs about the rust-lang/rust repository itself has-merge-commits PR has merge commits, merge with caution. merged-by-bors This PR was explicitly merged by bors. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-libs Relevant to the library team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.