Upgrade V8 to 152.2.0 and backport Array.sort safety guards (#54519)

## Why

Optimized `Array.prototype.sort` can write objects into incompatible array element storage when receiver element kinds differ and the comparator mutates the array.

## What changed

- Upgrade `v8` to `152.2.0`, the Bazel V8 source to `15.2.124.1`, and ICU data and initialization to version 78.
- Backport element-kind agreement checks for sort inlining in TurboFan and Maglev. Apply the patch to Bazel builds and Windows MSVC source builds, and include it in source-build cache keys and canary triggers.
- Refresh pinned sandbox archives and bindings, extend Bazel prebuilt coverage to musl Linux, and use matching sandbox bindings on Windows MSVC.
- Update Bazel integration patches and runtime dependencies for the new V8 release, and download the pinned Windows build tools in source-build workflows.

## Testing

Include the upstream sort regression test covering mixed element kinds, comparator mutation, and continued optimization for matching kinds. Add a test requiring canary and Windows source builds when the backport changes, and update artifact-fetch tests for the new version.

GitOrigin-RevId: 138b7821cddd25466c10aced1dd22be24837caf0
This commit is contained in:
Sean Huang
2026-10-16 06:06:54 +00:00
committed by copyberry
parent a45b8ccb01
commit 6ae8b8aa7c
22 changed files with 669 additions and 411 deletions
+1 -1
View File
@@ -40,7 +40,7 @@ pub(crate) fn ensure_v8_initialized() -> Result<(), String> {
}
fn initialize_v8_with_mode(jit_mode: V8JitMode) -> Result<V8Initialization, String> {
v8::icu::set_common_data_77(deno_core_icudata::ICU_DATA)
v8::icu::set_common_data_78(deno_core_icudata::ICU_DATA)
.map_err(|error_code| format!("failed to initialize ICU data: {error_code}"))?;
// The pinned V8 can inline Array.prototype.sort with incompatible element kinds.
// Disable the affected paths in TurboFan and the Maglev/Turbolev frontend until