Skip to content

Remove implicit initialization of the global thread pool registry#157017

Open
zetanumbers wants to merge 1 commit into
rust-lang:mainfrom
zetanumbers:no_implicit_thread_pool_registry
Open

Remove implicit initialization of the global thread pool registry#157017
zetanumbers wants to merge 1 commit into
rust-lang:mainfrom
zetanumbers:no_implicit_thread_pool_registry

Conversation

@zetanumbers
Copy link
Copy Markdown
Contributor

@zetanumbers zetanumbers commented May 27, 2026

I think we are regularly relying on the assumption that we are working inside of a unique thread pool. So I think having a panic instead of an implicit thread pool initialization should be a sensible change as a first step towards safely relying on that assumption.

Also with this assumption we should be able to remove registry verification from WorkerLocal::deref's implementation.

cc @Zoxc

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels May 27, 2026
@rustbot
Copy link
Copy Markdown
Collaborator

rustbot commented May 27, 2026

r? @mejrs

rustbot has assigned @mejrs.
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

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: compiler
  • compiler expanded to 73 candidates
  • Random selection from 18 candidates

Copy link
Copy Markdown
Contributor

@mejrs mejrs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as a first step.

As a first step towards doing what? Can you provide an overview for this bigger change and/or link/create to a tracking issue for it?

@rustbot author

View changes since this review

@rustbot rustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels May 27, 2026
@rustbot
Copy link
Copy Markdown
Collaborator

rustbot commented May 27, 2026

Reminder, once the PR becomes ready for a review, use @rustbot ready.

@rust-log-analyzer
Copy link
Copy Markdown
Collaborator

The job aarch64-gnu-llvm-21-2 failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
failures:

---- broadcast::tests::broadcast_after_spawn stdout ----

thread 'broadcast::tests::broadcast_after_spawn' (51902) panicked at compiler/rustc_thread_pool/src/registry.rs:213:5:
tried to implicitly initialize a global thread pool registry
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: <std::sync::once::Once>::call_once::<rustc_thread_pool::registry::set_global_registry<rustc_thread_pool::registry::default_global_registry>::{closure#0}>::{closure#0}
   3: <std::sys::sync::once::futex::Once>::call
   4: rustc_thread_pool::registry::global_registry
   5: rustc_thread_pool::registry::in_worker::<rustc_thread_pool::broadcast::tests::broadcast_after_spawn::{closure#0}, ()>
   6: rustc_thread_pool::broadcast::tests::broadcast_after_spawn
   7: <rustc_thread_pool::broadcast::tests::broadcast_after_spawn::{closure#0} as core::ops::function::FnOnce<()>>::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- broadcast::tests::broadcast_after_spawn stdout end ----
---- broadcast::tests::broadcast_global stdout ----
---
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- broadcast::tests::spawn_broadcast_global stdout end ----
---- join::tests::join_context_both stdout ----

thread 'join::tests::join_context_both' (52000) panicked at compiler/rustc_thread_pool/src/registry.rs:197:22:
Once instance has previously been poisoned
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: <std::sys::sync::once::futex::Once>::call
   3: rustc_thread_pool::registry::global_registry
   4: rustc_thread_pool::registry::in_worker::<rustc_thread_pool::join::join_context<rustc_thread_pool::join::tests::join_context_both::{closure#0}, rustc_thread_pool::join::tests::join_context_both::{closure#1}, bool, bool>::{closure#0}, (bool, bool)>
   5: <rustc_thread_pool::join::tests::join_context_both::{closure#0} as core::ops::function::FnOnce<()>>::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- join::tests::join_context_both stdout end ----
---- join::tests::panic_b_still_executes stdout ----

thread 'join::tests::panic_b_still_executes' (52007) panicked at compiler/rustc_thread_pool/src/registry.rs:197:22:
Once instance has previously been poisoned
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: <std::sys::sync::once::futex::Once>::call
   3: rustc_thread_pool::registry::global_registry
   4: rustc_thread_pool::registry::in_worker::<rustc_thread_pool::join::join_context<rustc_thread_pool::join::join::call<(), rustc_thread_pool::join::tests::panic_b_still_executes::{closure#0}::{closure#0}>::{closure#0}, rustc_thread_pool::join::join::call<(), rustc_thread_pool::join::tests::panic_b_still_executes::{closure#0}::{closure#1}>::{closure#0}, (), ()>::{closure#0}, ((), ())>
   5: std::panicking::catch_unwind::<((), ()), core::panic::unwind_safe::AssertUnwindSafe<rustc_thread_pool::join::tests::panic_b_still_executes::{closure#0}>>
   6: rustc_thread_pool::join::tests::panic_b_still_executes
   7: <rustc_thread_pool::join::tests::panic_b_still_executes::{closure#0} as core::ops::function::FnOnce<()>>::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

thread 'join::tests::panic_b_still_executes' (52007) panicked at compiler/rustc_thread_pool/src/join/tests.rs:86:19:
closure b failed to execute
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: rustc_thread_pool::join::tests::panic_b_still_executes
   3: <rustc_thread_pool::join::tests::panic_b_still_executes::{closure#0} as core::ops::function::FnOnce<()>>::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- join::tests::panic_b_still_executes stdout end ----
---- join::tests::panic_propagate_a stdout ----

thread 'join::tests::panic_propagate_a' (52008) panicked at compiler/rustc_thread_pool/src/registry.rs:197:22:
Once instance has previously been poisoned
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: <std::sys::sync::once::futex::Once>::call
   3: rustc_thread_pool::registry::global_registry
   4: rustc_thread_pool::registry::in_worker::<rustc_thread_pool::join::join_context<rustc_thread_pool::join::join::call<(), rustc_thread_pool::join::tests::panic_propagate_a::{closure#0}>::{closure#0}, rustc_thread_pool::join::join::call<(), rustc_thread_pool::join::tests::panic_propagate_a::{closure#1}>::{closure#0}, (), ()>::{closure#0}, ((), ())>
   5: <rustc_thread_pool::join::tests::panic_propagate_a::{closure#0} as core::ops::function::FnOnce<()>>::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- join::tests::panic_propagate_a stdout end ----
NOTE: panic did not contain expected string
      panic message: "Once instance has previously been poisoned"
 expected substring: "Hello, world!"
---- join::tests::panic_propagate_b stdout ----

thread 'join::tests::panic_propagate_b' (52009) panicked at compiler/rustc_thread_pool/src/registry.rs:197:22:
Once instance has previously been poisoned
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: <std::sys::sync::once::futex::Once>::call
   3: rustc_thread_pool::registry::global_registry
   4: rustc_thread_pool::registry::in_worker::<rustc_thread_pool::join::join_context<rustc_thread_pool::join::join::call<(), rustc_thread_pool::join::tests::panic_propagate_b::{closure#0}>::{closure#0}, rustc_thread_pool::join::join::call<(), rustc_thread_pool::join::tests::panic_propagate_b::{closure#1}>::{closure#0}, (), ()>::{closure#0}, ((), ())>
   5: <rustc_thread_pool::join::tests::panic_propagate_b::{closure#0} as core::ops::function::FnOnce<()>>::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- join::tests::panic_propagate_b stdout end ----
NOTE: panic did not contain expected string
      panic message: "Once instance has previously been poisoned"
 expected substring: "Hello, world!"
---- join::tests::panic_propagate_both stdout ----

thread 'join::tests::panic_propagate_both' (52010) panicked at compiler/rustc_thread_pool/src/registry.rs:197:22:
Once instance has previously been poisoned
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: <std::sys::sync::once::futex::Once>::call
   3: rustc_thread_pool::registry::global_registry
   4: rustc_thread_pool::registry::in_worker::<rustc_thread_pool::join::join_context<rustc_thread_pool::join::join::call<(), rustc_thread_pool::join::tests::panic_propagate_both::{closure#0}>::{closure#0}, rustc_thread_pool::join::join::call<(), rustc_thread_pool::join::tests::panic_propagate_both::{closure#1}>::{closure#0}, (), ()>::{closure#0}, ((), ())>
   5: <rustc_thread_pool::join::tests::panic_propagate_both::{closure#0} as core::ops::function::FnOnce<()>>::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- join::tests::panic_propagate_both stdout end ----
NOTE: panic did not contain expected string
      panic message: "Once instance has previously been poisoned"
 expected substring: "Hello, world!"
---- join::tests::sort stdout ----

thread 'join::tests::sort' (52011) panicked at compiler/rustc_thread_pool/src/registry.rs:197:22:
Once instance has previously been poisoned
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: <std::sys::sync::once::futex::Once>::call
   3: rustc_thread_pool::registry::global_registry
   4: rustc_thread_pool::registry::in_worker::<rustc_thread_pool::join::join_context<rustc_thread_pool::join::join::call<(), rustc_thread_pool::join::tests::quick_sort<u32>::{closure#0}>::{closure#0}, rustc_thread_pool::join::join::call<(), rustc_thread_pool::join::tests::quick_sort<u32>::{closure#1}>::{closure#0}, (), ()>::{closure#0}, ((), ())>
   5: rustc_thread_pool::join::tests::quick_sort::<u32>
   6: rustc_thread_pool::join::tests::sort
   7: <rustc_thread_pool::join::tests::sort::{closure#0} as core::ops::function::FnOnce<()>>::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- join::tests::sort stdout end ----
---
Once instance has previously been poisoned
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: <std::sys::sync::once::futex::Once>::call
   3: rustc_thread_pool::registry::global_registry
   4: rustc_thread_pool::registry::in_worker::<rustc_thread_pool::scope::scope_fifo<rustc_thread_pool::scope::tests::mixed_lifetime_scope_fifo::increment::{closure#0}, ()>::{closure#0}, ()>
   5: rustc_thread_pool::scope::tests::mixed_lifetime_scope_fifo
   6: <rustc_thread_pool::scope::tests::mixed_lifetime_scope_fifo::{closure#0} as core::ops::function::FnOnce<()>>::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- scope::tests::mixed_lifetime_scope_fifo stdout end ----
---- scope::tests::panic_propagate_nested_scope_spawn stdout ----
---
Once instance has previously been poisoned
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: <std::sys::sync::once::futex::Once>::call
   3: rustc_thread_pool::registry::global_registry
   4: rustc_thread_pool::registry::in_worker::<rustc_thread_pool::scope::scope<rustc_thread_pool::scope::tests::panic_propagate_still_execute_1::{closure#0}::{closure#0}, ()>::{closure#0}, ()>
   5: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_thread_pool::scope::tests::panic_propagate_still_execute_1::{closure#0}>>
   6: rustc_thread_pool::scope::tests::panic_propagate_still_execute_1
   7: <rustc_thread_pool::scope::tests::panic_propagate_still_execute_1::{closure#0} as core::ops::function::FnOnce<()>>::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

thread 'scope::tests::panic_propagate_still_execute_1' (52025) panicked at compiler/rustc_thread_pool/src/scope/tests.rs:217:19:
job b failed to execute
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: rustc_thread_pool::scope::tests::panic_propagate_still_execute_1
   3: <rustc_thread_pool::scope::tests::panic_propagate_still_execute_1::{closure#0} as core::ops::function::FnOnce<()>>::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- scope::tests::panic_propagate_still_execute_1 stdout end ----
---- scope::tests::panic_propagate_still_execute_2 stdout ----

thread 'scope::tests::panic_propagate_still_execute_2' (52026) panicked at compiler/rustc_thread_pool/src/registry.rs:197:22:
Once instance has previously been poisoned
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: <std::sys::sync::once::futex::Once>::call
   3: rustc_thread_pool::registry::global_registry
   4: rustc_thread_pool::registry::in_worker::<rustc_thread_pool::scope::scope<rustc_thread_pool::scope::tests::panic_propagate_still_execute_2::{closure#0}::{closure#0}, ()>::{closure#0}, ()>
   5: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_thread_pool::scope::tests::panic_propagate_still_execute_2::{closure#0}>>
   6: rustc_thread_pool::scope::tests::panic_propagate_still_execute_2
   7: <rustc_thread_pool::scope::tests::panic_propagate_still_execute_2::{closure#0} as core::ops::function::FnOnce<()>>::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

thread 'scope::tests::panic_propagate_still_execute_2' (52026) panicked at compiler/rustc_thread_pool/src/scope/tests.rs:233:19:
job b failed to execute
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: rustc_thread_pool::scope::tests::panic_propagate_still_execute_2
   3: <rustc_thread_pool::scope::tests::panic_propagate_still_execute_2::{closure#0} as core::ops::function::FnOnce<()>>::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- scope::tests::panic_propagate_still_execute_2 stdout end ----
---- scope::tests::panic_propagate_still_execute_3 stdout ----

thread 'scope::tests::panic_propagate_still_execute_3' (52027) panicked at compiler/rustc_thread_pool/src/registry.rs:197:22:
Once instance has previously been poisoned
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: <std::sys::sync::once::futex::Once>::call
   3: rustc_thread_pool::registry::global_registry
   4: rustc_thread_pool::registry::in_worker::<rustc_thread_pool::scope::scope<rustc_thread_pool::scope::tests::panic_propagate_still_execute_3::{closure#0}::{closure#0}, ()>::{closure#0}, ()>
   5: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_thread_pool::scope::tests::panic_propagate_still_execute_3::{closure#0}>>
   6: rustc_thread_pool::scope::tests::panic_propagate_still_execute_3
   7: <rustc_thread_pool::scope::tests::panic_propagate_still_execute_3::{closure#0} as core::ops::function::FnOnce<()>>::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

thread 'scope::tests::panic_propagate_still_execute_3' (52027) panicked at compiler/rustc_thread_pool/src/scope/tests.rs:249:19:
panic after spawn, spawn failed to execute
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: rustc_thread_pool::scope::tests::panic_propagate_still_execute_3
   3: <rustc_thread_pool::scope::tests::panic_propagate_still_execute_3::{closure#0} as core::ops::function::FnOnce<()>>::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- scope::tests::panic_propagate_still_execute_3 stdout end ----
---- scope::tests::panic_propagate_still_execute_4 stdout ----

thread 'scope::tests::panic_propagate_still_execute_4' (52028) panicked at compiler/rustc_thread_pool/src/registry.rs:197:22:
Once instance has previously been poisoned
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: <std::sys::sync::once::futex::Once>::call
   3: rustc_thread_pool::registry::global_registry
   4: rustc_thread_pool::registry::in_worker::<rustc_thread_pool::scope::scope<rustc_thread_pool::scope::tests::panic_propagate_still_execute_4::{closure#0}::{closure#0}, ()>::{closure#0}, ()>
   5: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_thread_pool::scope::tests::panic_propagate_still_execute_4::{closure#0}>>
   6: rustc_thread_pool::scope::tests::panic_propagate_still_execute_4
   7: <rustc_thread_pool::scope::tests::panic_propagate_still_execute_4::{closure#0} as core::ops::function::FnOnce<()>>::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

thread 'scope::tests::panic_propagate_still_execute_4' (52028) panicked at compiler/rustc_thread_pool/src/scope/tests.rs:265:19:
panic in spawn tainted scope
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: rustc_thread_pool::scope::tests::panic_propagate_still_execute_4
   3: <rustc_thread_pool::scope::tests::panic_propagate_still_execute_4::{closure#0} as core::ops::function::FnOnce<()>>::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- scope::tests::panic_propagate_still_execute_4 stdout end ----
---- scope::tests::scope_divide_and_conquer stdout ----

thread 'scope::tests::scope_divide_and_conquer' (52029) panicked at compiler/rustc_thread_pool/src/registry.rs:197:22:
Once instance has previously been poisoned
stack backtrace:
   0: __rustc::rust_begin_unwind
---
Once instance has previously been poisoned
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: <std::sys::sync::once::futex::Once>::call
   3: rustc_thread_pool::registry::global_registry
   4: rustc_thread_pool::registry::in_worker::<rustc_thread_pool::scope::scope<rustc_thread_pool::scope::tests::scope_result::{closure#0}, i32>::{closure#0}, i32>
   5: <rustc_thread_pool::scope::tests::scope_result::{closure#0} as core::ops::function::FnOnce<()>>::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- scope::tests::scope_result stdout end ----
---- scope::tests::scope_two stdout ----

thread 'scope::tests::scope_two' (52072) panicked at compiler/rustc_thread_pool/src/registry.rs:197:22:
---
Once instance has previously been poisoned
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: <std::sys::sync::once::futex::Once>::call
   3: rustc_thread_pool::registry::global_registry
   4: rustc_thread_pool::registry::in_worker::<rustc_thread_pool::scope::scope_fifo<rustc_thread_pool::scope::tests::static_scope_fifo::{closure#0}, ()>::{closure#0}, ()>
   5: rustc_thread_pool::scope::tests::static_scope_fifo
   6: <rustc_thread_pool::scope::tests::static_scope_fifo::{closure#0} as core::ops::function::FnOnce<()>>::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- scope::tests::static_scope_fifo stdout end ----
---- scope::tests::update_tree stdout ----

thread 'scope::tests::update_tree' (52075) panicked at compiler/rustc_thread_pool/src/registry.rs:197:22:
Once instance has previously been poisoned
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: <std::sys::sync::once::futex::Once>::call
   3: rustc_thread_pool::registry::global_registry
   4: rustc_thread_pool::registry::in_worker::<rustc_thread_pool::scope::scope<<rustc_thread_pool::scope::tests::Tree<u32>>::update<rustc_thread_pool::scope::tests::update_tree::{closure#0}>::{closure#0}, ()>::{closure#0}, ()>
   5: rustc_thread_pool::scope::tests::update_tree
   6: <rustc_thread_pool::scope::tests::update_tree::{closure#0} as core::ops::function::FnOnce<()>>::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- scope::tests::update_tree stdout end ----
---- spawn::tests::spawn_then_join_in_worker stdout ----

@zetanumbers
Copy link
Copy Markdown
Contributor Author

as a first step.

As a first step towards doing what? Can you provide an overview for this bigger change and/or link/create to a tracking issue for it?

As a first step towards confidently and safely relying on that assumption.

Copy link
Copy Markdown
Contributor

@mejrs mejrs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As a first step towards confidently and safely relying on that assumption.

But isn't the threadpool always unique whether it is initialized explicitly or implicitly? Just glancing at the code it looks like it is only ever set once. It looks like the assumption here is really "we always explicitly initialize the threadpool before attempting to use it".

View changes since this review

Comment on lines 162 to 164
/// Starts the worker threads (if that has not already happened). If
/// initialization has not already occurred, use the default
/// configuration.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please adjust the documentation.

/// Starts the worker threads (if that has not already happened). If
/// initialization has not already occurred, use the default
/// configuration.
#[cold]
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
#[cold]

Isn't this called quite a lot?

Comment on lines 159 to 160
static mut THE_REGISTRY: Option<Arc<Registry>> = None;
static THE_REGISTRY_SET: Once = Once::new();
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like this could just be a OnceLock and global_registry a wrapper around once_lock.get().unwrap(). Thoughts? Is this already part of followup work you are planning?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants