Auto merge of #99123 - mystor:crossbeam_bridge, r=eddyb
proc_macro: use crossbeam channels for the proc_macro cross-thread bridge This is done by having the crossbeam dependency inserted into the `proc_macro` server code from the server side, to avoid adding a dependency to `proc_macro`. In addition, this introduces a -Z command-line option which will switch rustc to run proc-macros using this cross-thread executor. With the changes to the bridge in #98186, #98187, #98188 and #98189, the performance of the executor should be much closer to same-thread execution. In local testing, the crossbeam executor was substantially more performant than either of the two existing `CrossThread` strategies, so they have been removed to keep things simple. r? `@eddyb`
This commit is contained in:
@@ -2972,3 +2972,13 @@ impl OomStrategy {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// How to run proc-macro code when building this crate
|
||||
#[derive(Clone, Copy, PartialEq, Hash, Debug)]
|
||||
pub enum ProcMacroExecutionStrategy {
|
||||
/// Run the proc-macro code on the same thread as the server.
|
||||
SameThread,
|
||||
|
||||
/// Run the proc-macro code on a different thread.
|
||||
CrossThread,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user