Skip to content

node: enable Temporal support#281626

Closed
Leask wants to merge 1 commit into
Homebrew:mainfrom
Leask:codex/node-temporal-support
Closed

node: enable Temporal support#281626
Leask wants to merge 1 commit into
Homebrew:mainfrom
Leask:codex/node-temporal-support

Conversation

@Leask
Copy link
Copy Markdown

@Leask Leask commented May 8, 2026

  • enable V8 Temporal support when building Node.js
  • assert the Node formula exposes Temporal.Now.zonedDateTimeISO

Fixes #281625.

The upstream Node.js v26.0.0 darwin-arm64 binary has process.config.variables.v8_enable_temporal_support === 1 and exposes globalThis.Temporal, while the current Homebrew bottle reports 0 and leaves globalThis.Temporal undefined.

Verification:

  • brew style node
  • brew audit --strict node

I did not run brew test node against the current installed bottle because the bottle was built before this configure flag change and now correctly fails the new Temporal assertion. The PR CI/source build should verify the rebuilt formula.

Copilot AI review requested due to automatic review settings May 8, 2026 15:57
@github-actions github-actions Bot added long build Set a long timeout for formula testing icu4c ICU use is a significant feature of the PR or issue long dependent tests Set a long timeout for dependent testing labels May 8, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR updates the Homebrew node formula to build Node.js with V8 Temporal support enabled, aligning the bottle’s runtime behavior with upstream Node.js v26 (i.e., globalThis.Temporal is available).

Changes:

  • Add --v8-enable-temporal-support to Node’s ./configure arguments.
  • Extend the formula test to assert Temporal.Now.zonedDateTimeISO is exposed as a function.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8ebf4d0df3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Formula/n/node.rb Outdated
--with-intl=system-icu
--shared
--openssl-use-def-ca-store
--v8-enable-temporal-support
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Bump revision when changing build output

Because this adds a configure flag that changes the installed node binary's behavior while leaving the formula at 26.0.0 with no revision, users who already have the current bottle installed won't be considered outdated and will keep the build where globalThis.Temporal is undefined. Please add a revision bump so existing installs are upgraded to the rebuilt bottle with Temporal enabled.

Useful? React with 👍 / 👎.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 8, 2026

Thanks for contributing to Homebrew! 🎉 It looks like you're having trouble with a CI failure. See our contribution guide for help. You may be most interested in the section on dealing with CI failures. You can find the CI logs in the Checks tab of your pull request.

@Leask Leask force-pushed the codex/node-temporal-support branch from 8ebf4d0 to 47e7259 Compare May 8, 2026 16:08
@github-actions github-actions Bot added the rust Rust use is a significant feature of the PR or issue label May 8, 2026
Comment thread Formula/n/node.rb Outdated
Comment thread Formula/n/node.rb
# TODO: Try to devendor these libraries.
# - `--shared-gtest` is only used for building the test suite, which we don't run here.
# - `--shared-simdutf` seems to result in build failures.
# - `--shared-temporal_capi` is only used when building with `--v8-enable-temporal-support`
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.

Shouldn't we add that?

@github-actions github-actions Bot added the autosquash Automatically squash pull request commits according to Homebrew style. label May 8, 2026
Comment thread Formula/n/node.rb Outdated
url "https://nodejs.org/dist/v26.0.0/node-v26.0.0.tar.xz"
sha256 "fcb5e5c06a5c2ec9e669801248657aafaa2291f8760dac7bfb639f878318c592"
license "MIT"
revision 1
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

We don't need to force an update on everyone. You can drop this.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

I slightly disagree, because in the context of Node semantics, the absence of Temporal can reasonably be considered a non-standard build. Is the new version that Temporal is enabled by default? Should we update everyone’s incorrect version through a revision?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

I will remove the revision to pass the subsequent review for now.

@Leask Leask force-pushed the codex/node-temporal-support branch from 2a56b89 to 9d31eb5 Compare May 8, 2026 17:30
@github-actions github-actions Bot removed the autosquash Automatically squash pull request commits according to Homebrew style. label May 8, 2026
Co-authored-by: Leon Adomaitis <47161699+GunniBusch@users.noreply.github.com>
@Leask Leask force-pushed the codex/node-temporal-support branch from 9d31eb5 to aff8a19 Compare May 8, 2026 17:31
@GunniBusch
Copy link
Copy Markdown
Contributor

GunniBusch commented May 8, 2026

Not working because:

WARNING: Temporal support disabled when compiling with a shared ICU library

https://github.com/nodejs/node/blob/e2a1703ba401b58f40e1cb1610cb512e87ba009b/configure.py#L2169-L2180

nodejs/node#62676

@Leask
Copy link
Copy Markdown
Author

Leask commented May 9, 2026

Thanks for checking this. CI confirms the blocker: Node currently disables Temporal when built against a shared ICU library, and the Homebrew formula intentionally builds with system/shared ICU.

So this PR cannot enable Temporal with a small formula change without moving Node away from shared ICU, which is too broad for this fix. This should be revisited after the upstream Node issue is resolved: nodejs/node#62676

@Leask Leask closed this May 9, 2026
@Leask
Copy link
Copy Markdown
Author

Leask commented May 9, 2026

I tried a build-time ICU source approach after closing this, but this PR cannot be reopened because the head branch was force-pushed after closure. I will open a replacement PR with the corrected approach.

The corrected approach avoids system/shared ICU for Node 26 and vendors the Node-pinned ICU 78.3 source tarball as a Homebrew resource, then passes --with-intl=full-icu --with-icu-source=.... I verified the configure stage locally with the same Homebrew shared dependencies: config.gypi contains "v8_enable_temporal_support": 1, so it no longer hits Node’s shared/system ICU Temporal-disable path.

@Leask
Copy link
Copy Markdown
Author

Leask commented May 9, 2026

Replacement PR opened with the build-time ICU source approach: #281707

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

Labels

icu4c ICU use is a significant feature of the PR or issue long build Set a long timeout for formula testing long dependent tests Set a long timeout for dependent testing rust Rust use is a significant feature of the PR or issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

node 26 bottle is built without Temporal support

4 participants