Conversation
Enabling Temporal support requires `cargo` and `rustc`, which are new build toolchain requirements. Add a `--v8-disable-temporal-support` option to `configure.py` to explicitly opt-out of Temporal support (i.e. no need for Rust). If the existing `--v8-enable-temporal-support` option is not explicitly passed to `configure.py`: - Attempt to detect `cargo` and `rustc`. - If neither `cargo` and `rustc` are detected, print a warning and disable Temporal support. - If both `cargo` and `rustc` are detected, enable Temporal support. If `--v8-enable-temporal-support` is passed to `configure.py`, then the build will error and stop if `cargo` and/or `rustc` are not detected. To avoid ambiguity, `configure.py` will error and stop if both `--v8-disable-temporal-support` and `--v8-enable-temporal-support` are used.
Does it mean that we might inadvertently introduce or remove Temporal in releases by touching release machines (i.e. after system updates)? |
A regular system update should not put either cargo or rustc on it if it is not already there (at least on a Linux distribution) but a system upgrade might. If consensus is to remove the autodetection (i.e. the default build will fail in environments where rust is not available) then enabling Temporal in Node.js by default will be blocked until all of the test and release infrastructure for Node.js 26 is updated. |
|
Can we specify |
It can be done but the job is generic for all release lines so would be a little untidy (basically a conditional based on the major version as otherwise |
Enabling Temporal support requires
cargoandrustc, which are new build toolchain requirements.Add a
--v8-disable-temporal-supportoption toconfigure.pyto explicitly opt-out of Temporal support (i.e. no need for Rust).If the existing
--v8-enable-temporal-supportoption is not explicitly passed toconfigure.py:cargoandrustc.cargoandrustcare detected, print a warning and disable Temporal support.cargoandrustcare detected, enable Temporal support.If
--v8-enable-temporal-supportis passed toconfigure.py, then the build will error and stop ifcargoand/orrustcare not detected.To avoid ambiguity,
configure.pywill error and stop if both--v8-disable-temporal-supportand--v8-enable-temporal-supportare used.Fixes: #57127
Blocked on either of the V8 updates (14.4 or 14.5) landing first.
Autodetecting this way allows us to roll out Rust onto the CI machines gradually (the aim is for Node.js 26).