Skip to content

Bump WebKit to 000c48997255 - #43022

Merged
Jarred-Sumner merged 1 commit into
mainfrom
claude/bump-webkit-000c4899
Sep 17, 2026
Merged

Jarred-Sumner merged 1 commit into
mainfrom
claude/bump-webkit-000c4899

Conversation

@Jarred-Sumner

Copy link
Copy Markdown
Collaborator

Bumps WEBKIT_VERSION from c28156899e5f to 000c48997255 (current oven-sh/WebKit main). The autobuild-000c48997255272cd7e3ae7047e87b955b38989b release exists.

oven-sh/WebKit changes picked up:

Not built or tested locally; relying on CI.

No-Verification-Needed: version bump only
@robobun

robobun commented Sep 17, 2026 •

Copy link
Copy Markdown
Collaborator
Updated 1:28 AM PT - Sep 17th, 2026

✅ @Jarred-Sumner, your commit a574c61f0d7296f2b7be428b9141c7816bda6a8f passed in Build #116909! 🎉


🧪   To try this PR locally:

bunx bun-pr 43022

That installs a local version of the PR into your bun-43022 executable, so you can run:

bun-43022 --bun

@coderabbitai

coderabbitai Bot commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Essentials

Run ID: 6d23d109-ce58-4620-95e6-f7fd89a8d71d

📥 Commits

Reviewing files that changed from the base of the PR and between 630e921 and a574c61.

📒 Files selected for processing (1)
  • scripts/build/deps/webkit.ts

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


Walkthrough

Changes

WebKit dependency update

Layer / File(s) Summary
Update WebKit commit identifier
scripts/build/deps/webkit.ts
WEBKIT_VERSION now references commit 000c48997255272cd7e3ae7047e87b955b38989b instead of c28156899e5f90ce22e2b5d780e117c6268edfc4.

Suggested reviewers: dylan-conway

Priority: ⬇️ Low

Merge Risk: ⚪ Minimal · up to a574c

This PR only updates the WebKit dependency pin, with no established production or build failure; normal CI validation remains appropriate.

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly and concisely identifies the main change: updating WebKit to commit 000c48997255.
Description check ✅ Passed The description explains the WebKit version update, lists the included upstream changes, and states that local build and tests were not run and that CI is relied upon. It does not use the template hea…

Comment @coderabbitai help to get the list of available commands.

@claude claude Bot left a comment

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.

Nothing blocking. The comments below are optional suggestions. There is no need to push a fix for them before merging.

* From https://github.com/oven-sh/WebKit releases.
*/
export const WEBKIT_VERSION = "c28156899e5f90ce22e2b5d780e117c6268edfc4";
export const WEBKIT_VERSION = "000c48997255272cd7e3ae7047e87b955b38989b";

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.

🟡 nit (optional): maintainers get three user-visible JSC behavior changes with no test in this repo, so a regression in them would go unnoticed. The bump at scripts/build/deps/webkit.ts:6 picks up oven-sh/WebKit#662 (CJS generator runs before the importing graph links), #685 (async context handed to Bun__reportUnhandledError for a throwing queueMicrotask job) and #689 (Exception keeps its async context); no test covers any of them, and the PR states it was not built or tested locally. Fix: add a test per behavioral change in the same PR, as the previous bump (68d0888) and test/js/bun/jsc/webkit-upgrade-9b02218df6.test.ts did, e.g. als.run + queueMicrotask throw + process.on('uncaughtException') asserting als.getStore().

Extended reasoning...

REVIEW.md requires every behavioral change to ship an automated test in the same PR and says a check it explicitly requests is not style. This PR is a one-line pin change but the description lists six oven-sh/WebKit changes it picks up, three of which change what user code observes. For #685 the Bun-side consumer is GlobalObject::reportUncaughtExceptionAtEventLoop at src/jsc/bindings/ZigGlobalObject.cpp:1126-1130 and drainMicrotasks at ZigGlobalObject.cpp:3047-3109, which resets m_asyncContextData at line 3084 and reports at line 3105; whether the handler now sees the failing job's store is only observable through process.on('uncaughtException') plus AsyncLocalStorage.getStore(). A grep of test/ for uncaughtException within 400 chars of getStore() finds only diagnostics_channel tests; test/js/node/async_hooks/AsyncLocalStorage.test.ts:538 covers a non-throwing queueMicrotask only. For #662 the consumer is the CJS synthetic generator at src/jsc/bindings/JSCommonJSModule.cpp:1558-1599 (evaluateCommonJSModuleOnce inside the generator); its new timing relative to sibling ESM imports has…

Verification: nit. Triggering condition: the bump lands as a one-file change with no test, so any regression in the picked-up JSC behaviors is only caught by whatever pre-existing coverage happens to overlap. Verified: git diff 630e921d..HEAD touches only scripts/build/deps/webkit.ts:6 (WEBKIT_VERSION c28156899e5f -> 000c48997255); no test file is added or changed. The PR description itself lists… | nit.…

@Jarred-Sumner
Jarred-Sumner merged commit b52d513 into main Sep 17, 2026
11 of 12 checks passed
@Jarred-Sumner
Jarred-Sumner deleted the claude/bump-webkit-000c4899 branch September 17, 2026 10:16
robobun pushed a commit that referenced this pull request Sep 17, 2026
JSC's CodeCache keys every compiled top-level unit on SourceCodeKey.
Under USE(BUN_JSC_ADDITIONS) the fork dropped the source string compare
from SourceCodeKey::operator==, so two same-length sources whose 24-bit
StringImpl hashes collided compared equal, and the second source ran the
first source's code block. oven-sh/WebKit#346 restored the compare, and
the WebKit bump in #43022 brought it into bun.

The test mines its own colliding pair at run time from StringImpl::hash(),
so it pins nothing to the current hash function or printer output. It
covers five consumers of the cache:

- new Function
- indirect eval and vm.Script
- import() of two ES modules
- bun test, where the second file used to re-run the first file's test
  under its own filename and the suite still reported green
- import() of two ES modules with different top-level names, which
  tripped an assertion in JSModuleNamespaceObject and segfaulted in
  release builds, so that case runs in a child process

Expose StringImpl::hash() as stringImplHash in bun:internal-for-testing
for the mining step.
robobun added a commit that referenced this pull request Sep 17, 2026
… is still loading

Since the WebKit bump in #43022, require() of a module whose fetch an import
already started loads it synchronously, so this shape reaches the same check.
robobun added a commit that referenced this pull request Sep 27, 2026
…ped arrays and ArrayBuffers

A typed array of more than 1000 elements owns a malloc'ed vector. Reading
.buffer, subarray() and Buffer's slice() wrap that vector in an ArrayBuffer.
Before oven-sh/WebKit#684 the heap counted the vector as allocated a second
time there, and it kept counting ArrayBuffers that an eden collection had
freed, so every second collection of such a loop was a full one.

main has the fix since #43022. These tests count the collections of six
loops with BUN_JSC_logGC=1 and the concurrent collector off. They fail on
Bun 1.4.2 and pass on main.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants