Skip to content

build: enable Temporal by default#61806

Open
richardlau wants to merge 1 commit intonodejs:mainfrom
richardlau:enable-temporal
Open

build: enable Temporal by default#61806
richardlau wants to merge 1 commit intonodejs:mainfrom
richardlau:enable-temporal

Conversation

@richardlau
Copy link
Member

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.

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).

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.
@richardlau richardlau added the blocked PRs that are blocked by other issues or PRs. label Feb 13, 2026
@nodejs-github-bot nodejs-github-bot added build Issues and PRs related to build files or the CI. needs-ci PRs that need a full CI run. labels Feb 13, 2026
@richardlau richardlau added the semver-major PRs that contain breaking changes and should be released in the next major version. label Feb 13, 2026
@targos
Copy link
Member

targos commented Feb 13, 2026

  • If neither cargo and rustc are detected, print a warning and disable Temporal support.
  • If both cargo and rustc are detected, enable Temporal support.

Does it mean that we might inadvertently introduce or remove Temporal in releases by touching release machines (i.e. after system updates)?

@richardlau
Copy link
Member Author

  • If neither cargo and rustc are detected, print a warning and disable Temporal support.
  • If both cargo and rustc are detected, enable Temporal support.

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.

@legendecas
Copy link
Member

legendecas commented Feb 13, 2026

Can we specify --v8-enable-temporal-support on release machine on platforms that we are determined to enable the support? So configure.py will error out if somehow the rustc/cargo is missing.

@richardlau
Copy link
Member Author

Can we specify --v8-enable-temporal-support on release machine on platforms that we are determined to enable the support? So configure.py will error out if somehow the rustc/cargo is missing.

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 configure will fail on earlier release lines with --v8-enable-temporal-support).

Copy link
Member

@mcollina mcollina left a comment

Choose a reason for hiding this comment

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

lgtm

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

Labels

blocked PRs that are blocked by other issues or PRs. build Issues and PRs related to build files or the CI. needs-ci PRs that need a full CI run. semver-major PRs that contain breaking changes and should be released in the next major version.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Let's enable Temporal by default

5 participants