Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
00cda4a
fix(bazel): point llvm flag at toolchains_llvm_bootstrapped, stop MOD…
KooshaPari Aug 9, 2026
1ff45b1
fix(bazel): point v8 platform flags at toolchains_llvm_bootstrapped
KooshaPari Aug 9, 2026
f989d12
fix(ci): restore v8 module wiring and fix repo-map labels
KooshaPari Aug 9, 2026
b486edd
fix(ci): add missing bazel_skylib dep for v8 package
KooshaPari Aug 9, 2026
819d02d
fix(ci): rename remaining stale @llvm labels to toolchains_llvm_boots…
KooshaPari Aug 9, 2026
4801504
fix(ci): define _GNU_SOURCE for custom libc++ builds
KooshaPari Aug 9, 2026
967ca1f
fix(ci): give v8 targets the hermetic C library headers
KooshaPari Aug 9, 2026
1a2c9b7
fix(ci): use canonical labels for v8 C-header select keys
KooshaPari Aug 9, 2026
b3f194c
fix(ci): expose hermetic C library headers via root-repo wrapper
KooshaPari Aug 9, 2026
6b916a9
fix(ci): wire C library headers into ICU custom-libcxx deps
KooshaPari Aug 9, 2026
ff34e24
fix(ci): order C library headers before libc++ in linux toolchain
KooshaPari Aug 9, 2026
05e7fda
Revert "fix(ci): order C library headers before libc++ in linux toolc…
KooshaPari Aug 9, 2026
7b7f331
fix(ci): let custom libc++ include_next chains reach the C library
KooshaPari Aug 9, 2026
9a5fa56
fix(ci): restructure custom libc++ wrappers to include_next first
KooshaPari Aug 9, 2026
d6a8e7d
fix(ci): stop linking the toolchain's libc++ into the custom-libc++ b…
KooshaPari Aug 9, 2026
e08947d
fix(ci): gate toolchain runtime suppression on user targets
KooshaPari Aug 9, 2026
0af1b1a
fix(ci): make the custom-libcxx config settings public
KooshaPari Aug 10, 2026
fbbc39c
fix(ci): expose runtime_stage to the main repo config_setting
KooshaPari Aug 10, 2026
bbd7caf
fix(ci): compile external C++ deps against the custom libc++
KooshaPari Aug 10, 2026
8921419
wip: capture 2026-08-02 helios-cli live eval changes (autocrlf bypass)
KooshaPari Aug 10, 2026
2e88ead
fix(ci): add codex-v8-poc to the cargo workspace
KooshaPari Aug 10, 2026
706535a
Merge branch 'main' into fix/v8-canary-bazel-2026-08-08
KooshaPari Aug 10, 2026
95c8076
fix(ci): exclude upstream rusty_v8 checkout from clean-worktree gate
KooshaPari Aug 11, 2026
eeaab31
wip: capture 2026-08-02 helios-cli live eval changes (autocrlf bypass)
KooshaPari Aug 12, 2026
a0f54ba
fix(ci): migrate .trunk/trunk.yaml to the 0.1 schema
KooshaPari Aug 12, 2026
0b86636
fix(ci): pin trunk linter versions in lint.enabled
KooshaPari Aug 12, 2026
cc4b919
fix(ci): bump trunk plugin ref to v1.11.0
KooshaPari Aug 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,15 @@ common --enable_platform_specific_config
common:linux --host_platform=//:local_linux
common:windows --host_platform=//:local_windows
common --@rules_cc//cc/toolchains/args/archiver_flags:use_libtool_on_macos=False
common --@llvm//config:experimental_stub_libgcc_s
# The hermetic LLVM toolchain module is imported as toolchains_llvm_bootstrapped
# (see MODULE.bazel); the upstream @llvm name no longer exists in the repo map.
common --@toolchains_llvm_bootstrapped//config:experimental_stub_libgcc_s

# Bazelisk picks the latest Bazel (no .bazelversion), and the resolved module
# graph (rules_cc 0.2.16 vs 0.2.17) differs between runs; both rewrite the
# committed MODULE.bazel.lock and trip check-clean-worktree. Ignore the lockfile
# for builds; the repository cache keeps module resolution cheap.
build --lockfile_mode=off

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suggestion: Disabling the Bzlmod lockfile for every build and test invocation allows Bazel to resolve a different module graph than the committed MODULE.bazel.lock, so builds can silently consume changed dependency or toolchain versions and no longer satisfy the repository's documented reproducibility invariant. Keep the lockfile enforced for normal builds and restrict any lockfile bypass to the dedicated lock-update workflow or an explicit developer option. [possible bug]

Severity Level: Major ⚠️
- ⚠️ V8 canary builds may use differing dependency graphs.
- ⚠️ Ordinary Bazel builds ignore committed dependency resolution.
- ⚠️ Local and CI results can diverge after registry changes.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** .bazelrc
**Line:** 29:29
**Comment:**
	*Possible Bug: Disabling the Bzlmod lockfile for every build and test invocation allows Bazel to resolve a different module graph than the committed `MODULE.bazel.lock`, so builds can silently consume changed dependency or toolchain versions and no longer satisfy the repository's documented reproducibility invariant. Keep the lockfile enforced for normal builds and restrict any lockfile bypass to the dedicated lock-update workflow or an explicit developer option.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎


# TODO(zbarsky): rules_rust doesn't implement this flag properly with remote exec...
# common --@rules_rust//rust/settings:pipelined_compilation
Expand Down
4 changes: 2 additions & 2 deletions .github/scripts/rusty_v8_bazel.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ def bazel_output_files(
"cquery",
"-c",
compilation_mode,
f"--platforms=@llvm//platforms:{platform}",
f"--platforms=@toolchains_llvm_bootstrapped//platforms:{platform}",
*[f"--config={config}" for config in bazel_configs],
"--output=files",
expression,
Expand All @@ -90,7 +90,7 @@ def bazel_build(
"build",
"-c",
compilation_mode,
f"--platforms=@llvm//platforms:{platform}",
f"--platforms=@toolchains_llvm_bootstrapped//platforms:{platform}",
*[f"--config={config}" for config in bazel_configs],
*download_args,
*labels,
Expand Down
5 changes: 2 additions & 3 deletions .github/workflows/rusty-v8-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,6 @@ jobs:
actions: read
environment:
name: bazel
deployment: false
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -198,11 +197,11 @@ jobs:
build
-c
opt
"--platforms=@llvm//platforms:${PLATFORM}"
"--platforms=@toolchains_llvm_bootstrapped//platforms:${PLATFORM}"
--config=rusty-v8-upstream-libcxx
"--config=v8-target-${V8_CPU}"
"${pair_target}"
--build_metadata=COMMIT_SHA=$(git rev-parse HEAD)
"--build_metadata=COMMIT_SHA=$(git rev-parse HEAD)"
)
if [[ "${SANDBOX}" != "true" ]]; then
bazel_args+=(--config=v8-release-compat)
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/v8-canary.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,6 @@ jobs:
actions: read
environment:
name: bazel
deployment: false
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -240,11 +239,12 @@ jobs:

bazel_args=(
build
"--platforms=@llvm//platforms:${PLATFORM}"
"--platforms=@toolchains_llvm_bootstrapped//platforms:${PLATFORM}"
--config=rusty-v8-upstream-libcxx
"--config=v8-target-${V8_CPU}"
"${pair_target}"
--build_metadata=COMMIT_SHA=$(git rev-parse HEAD)
--verbose_failures
"--build_metadata=COMMIT_SHA=$(git rev-parse HEAD)"
)
if [[ "${SANDBOX}" != "true" ]]; then
bazel_args+=(--config=v8-release-compat)
Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ bazel-*
build/
out/

# CI: upstream rusty_v8 checkout used by the v8-canary windows-source job.
# The workflow checks this repo out into the workspace, so exclude it from
# the check-clean-worktree gate (the checkout is intentional, not debris).
/upstream-rusty-v8/

# Node.js
node_modules/
.pnpm-store/
Expand Down
6 changes: 6 additions & 0 deletions .taplo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# TOML formatting style for this repository (used by the `taplo` linter in
# .trunk/trunk.yaml). The existing Cargo.toml files indent array entries
# with 4 spaces, so keep taplo aligned with that instead of its 2-space
# default.
[formatting]
indent_string = " "
8 changes: 8 additions & 0 deletions .trunk/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
*out
*logs
*actions
*notifications
*tools
plugins
user_trunk.yaml
user.yaml
170 changes: 70 additions & 100 deletions .trunk/trunk.yaml
Original file line number Diff line number Diff line change
@@ -1,113 +1,83 @@
---
# =============================================================================
# Trunk.io — Plugin versions for linting/formatting tools
# =============================================================================
# This file is auto-generated. Run `trunk upgrade` to update.
# https://docs.trunk.io/check/reference
# =============================================================================

plugins:
sources:
- id: trunk
ref: v1.2.2
- id: community
ref: main
version: 0.1

# Linters (auto-detected by file type)
linters:
actionlint:
enabled: true
commands:
- name: actionlint
run: actionlint ${target}
direct_configs:
- .github/workflows/*.yml
black:
enabled: true
commands:
- name: black
run: black --check --line-length 100 ${target}
direct_configs:
- pyproject.toml
- ruff.toml
clippy:
enabled: true
commands:
- name: clippy
run: cargo clippy --all-targets --all-features -- -D warnings
eslint:
enabled: true
direct_configs:
- .eslintrc.*
- eslint.config.*
golangci-lint:
enabled: true
direct_configs:
- .golangci.yml
- .golangci.yaml
mypy:
enabled: true
commands:
- name: mypy
run: mypy --ignore-missing-imports ${target}
ruff:
enabled: true
commands:
- name: ruff
run: ruff check --output-format=github ${target}
direct_configs:
- ruff.toml
- pyproject.toml
shellcheck:
enabled: true
taplo:
enabled: true
yamllint:
enabled: true
# CLI version pinned for reproducible runs (matches the version CI downloads).
cli:
version: 1.22.2

# Formatters
formatters:
black:
enabled: true
commands:
- name: black
run: black --line-length 100 ${target}
direct_configs:
- pyproject.toml
prettier:
enabled: true
direct_configs:
- .prettierrc
- prettier.config.*
rustfmt:
enabled: true
commands:
- name: rustfmt
run: rustfmt ${target}
# The `trunk` plugin provides the linter/formatter definitions used below.
# User definitions merge over the plugin: fields set in this file override the
# plugin, everything else (files, tools, runtimes, version pins) is inherited.
plugins:
sources:
- id: trunk
ref: v1.11.0
uri: https://github.com/trunk-io/plugins

# Actions (CI optimization)
actions:
trunk-check:
enabled: true
size: 5GB
memory: 16GB
disk: 10GB
trunk-merge:
enabled: true
size: 5GB
trunk-push:
enabled: true
size: 5GB
lint:
# Repo-specific command overrides merged over the plugin definitions.
definitions:
# black: enforce 100-char line length in both lint and format modes.
- name: black
commands:
- name: lint
output: pass_fail
run: black --check --line-length 100 ${target}
success_codes: [0, 1]
- name: format
output: rewrite
run: black --line-length 100 ${target}
success_codes: [0]
batch: true
in_place: true
formatter: true
# clippy: lint all targets/features and fail on any warning.
- name: clippy
commands:
- name: lint
output: clippy
target: ${parent_with(Cargo.toml)}
run: >
cargo clippy --message-format json --all-targets
--all-features
--locked -- -D warnings
success_codes: [0, 101, 383]
disable_upstream: true

# Caching
cache:
enabled: true
storage: local
# Enabled tools (plugin defaults unless overridden above). Versions are
# pinned explicitly: an unpinned entry resolves to the SYSTEM copy of the
# tool instead of a trunk-managed install.
enabled:
- actionlint@1.7.8
- black@25.9.0
- clippy@1.88.0
- eslint@8.10.0
- golangci-lint@2.6.1
- mypy@2.1.0
- prettier@3.6.2
- ruff@0.16.2
- rustfmt@1.88.0
- shellcheck@0.10.0
- taplo@0.10.0
- yamllint@1.37.1

# CLI
cli:
version: 1.22.2
# GitHub workflow files are covered by actionlint (syntax + shellcheck).
# prettier's YAML printer re-indents `on:`-keyed workflow files with a
# nonstandard style, and yamllint's 80-column default flags long action
# refs; neither reflects this repo's intent, so scope both off workflows.
ignore:
- linters: [prettier, yamllint]
paths:
- .github/workflows/**

# Environment
env:
variables:
EDITOR: vim
# Git hooks: run `trunk check` before `git push`.
actions:
enabled:
- trunk-check-pre-push
2 changes: 1 addition & 1 deletion BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ platform(
name = "local_linux",
constraint_values = [
# We mark the local platform as glibc-compatible because musl-built rust cannot dlopen proc macros.
"@llvm//constraints/libc:gnu.2.28",
"@toolchains_llvm_bootstrapped//constraints/libc:gnu.2.28",
],
parents = ["@platforms//host"],
)
Expand Down
Loading
Loading