Repository navigation
Bump WebKit to 000c48997255 - #43022
Conversation
No-Verification-Needed: version bump only
|
Updated 1:28 AM PT - Sep 17th, 2026
✅ @Jarred-Sumner, your commit a574c61f0d7296f2b7be428b9141c7816bda6a8f passed in 🧪 To try this PR locally: bunx bun-pr 43022That installs a local version of the PR into your bun-43022 --bun |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Essentials Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review. WalkthroughChangesWebKit dependency update
Suggested reviewers: Priority: ⬇️ Low Merge Risk: ⚪ Minimal · up to 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)
Comment |
| * From https://github.com/oven-sh/WebKit releases. | ||
| */ | ||
| export const WEBKIT_VERSION = "c28156899e5f90ce22e2b5d780e117c6268edfc4"; | ||
| export const WEBKIT_VERSION = "000c48997255272cd7e3ae7047e87b955b38989b"; |
There was a problem hiding this comment.
🟡 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.…
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.
… 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.
…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.
Bumps
WEBKIT_VERSIONfromc28156899e5fto000c48997255(current oven-sh/WebKitmain). Theautobuild-000c48997255272cd7e3ae7047e87b955b38989brelease exists.oven-sh/WebKit changes picked up:
Not built or tested locally; relying on CI.