Skip to content
Closed
Show file tree
Hide file tree
Changes from 220 commits
Commits
Show all changes
226 commits
Select commit Hold shift + click to select a range
7bd7b6d
Add CString::legacyCStringPointer() and adopt it at every utf8().data…
cdumez Sep 10, 2026
b1865b2
[CMake] A lot of Swift compiler flags are not consistent with Xcode
rr-codes Sep 10, 2026
6f6d0f8
A negative stdDeviation asserts when computing filter outsets
nikolaszimmermann Sep 10, 2026
cfec12e
Remove broken debugging helper "collectOnAlternateThread"
Constellation Sep 10, 2026
1455983
[iOS] Remove staging code for -[AVPlayer setDisconnectedFromSystemAud…
aestes Sep 10, 2026
a4f781d
Re-land [Swift in WebKit] Address some Swift compiler diagnostic warn…
rr-codes Sep 10, 2026
9ad4e79
Update ANGLE to 2026-08-24 (9d57491334bdd2979bb7769f3ee9c4075d37465e)
roberto-apple Sep 10, 2026
7d455a1
Add appletvos27.0-additions.sdk for public-SDK bringup
martadarbinyan Sep 10, 2026
74b519d
Make the String(std::span<const char>) constructor private as it is e…
cdumez Sep 10, 2026
bc5bc3c
[Win][CMake] Forward MSVC-style definitions to Swift
JJJ Sep 10, 2026
de7d598
CG: Avoid getting, setting text matrix many times when drawing glyphs
kkinnunen-apple Sep 10, 2026
e6308a9
WKWebViewEditActions.CopyMenuItemDisabledInCopyDisallowedPDF test doe…
aprotyas Sep 10, 2026
5c19c2e
[Swift Testing] Add some image/color utility functions
rr-codes Sep 10, 2026
17eb50c
ImageDecoderAVFObjC mutates its sample map and sample images without …
cdumez Sep 10, 2026
3e4b76f
[GStreamer] webrtc/disable-encryption.html crashes
philn Sep 10, 2026
bfe5ce5
[GTK][WPE] SkiaGPUAtlas::uploadImages() should destory `writeScope` b…
fujii Sep 10, 2026
3303c6f
[GTK][WPE] white noise images for dma_buf atlas on i915 + Intel Arc
fujii Sep 10, 2026
64f8c68
[GStreamer] imported/w3c/web-platform-tests/webaudio/the-audio-api/th…
philn Sep 10, 2026
42ca5cc
MockRealtimeVideoSource shares five members between its capture run l…
cdumez Sep 10, 2026
032a827
Test duration treemap viewer mishandles test names containing markup
aj062 Sep 10, 2026
9264183
[WebDriver] pytest-timeout's SIGALRM can wedge the asyncio loop and h…
csaavedra Sep 10, 2026
0700ee3
REGRESSION(320449@main): [GLib] SharedMemoryFromMemoryTest.CreateHand…
csaavedra Sep 10, 2026
e19f57a
[JSC] `RegExp::deleteCode()` should not clear the pattern's atom
sosukesuzuki Sep 10, 2026
f90b4ea
[Cocoa] Hold a strong reference to QueuedVideoOutput in its main run …
Sep 10, 2026
0d81375
[JSC] Fill Wasm GC arrays of references with gcSafeMemfill
chicoxyzzy Sep 10, 2026
9f1b3cc
[WPE][GTK] rumble does not work in case of libmanette 0.2.13
pgorszkowski-igalia Sep 10, 2026
223bd0f
[JSC] Check ArrayBuffer grow/resize length before converting to size_t
chicoxyzzy Sep 10, 2026
c194b75
Address Darin's review feedback on 320795@main
cdumez Sep 10, 2026
d772fea
Rename itemIndex IPC parameter
adetaylor Sep 10, 2026
361bf1b
[WPE] SkiaCompositingLayer: SIGSEGV in isColorFilterNode
dcrousso Sep 10, 2026
8eb6086
Add a flag to control whether allowing WebRTC to resolve DNS directly
youennf Sep 10, 2026
8faa195
[corner-shape] Some combinations of corner-shape with thick borders h…
smfr Sep 10, 2026
c815e1d
[WPE] Remove duplicate headings in the new API documentation
csaavedra Sep 10, 2026
506a7e6
[IFC] Stop adjusting the display, float and clear values of line brea…
alanbaradlay Sep 10, 2026
ad8fd86
Add missing validation for overrides
mwyrzykowski Sep 10, 2026
ce73521
AX: a cross-process iframe's FrameHost reports the whole page's bounds
minorninth Sep 10, 2026
0e84b24
Remove PingLoad
achristensen07 Sep 10, 2026
67cb13c
Network process page-level state should be keyed by WebPageProxyIdent…
charliewolfe Sep 10, 2026
7d3d84c
[IFC] Stop adjusting the display value of inline boxes with a non-inl…
alanbaradlay Sep 10, 2026
42ad155
[WebKitBot] revert mis-parses a commit identifier followed by sentenc…
ryanhaddad Sep 10, 2026
08004ec
[Site Isolation] Fix location of color input picker, take 2
tuankiet65 Sep 10, 2026
315a569
Mutating a media element's volume or muted properties under a user ge…
aestes Sep 10, 2026
48b9b5b
Ignore messages to RemoteObjectRegistry if destination can't be found
achristensen07 Sep 10, 2026
7737c68
[Site Isolation] Disconnect remote intersection observers when owning…
bnham Sep 10, 2026
3b9b086
SVGImage::isAnimating() returns true for SVG images that have no anim…
nullhook Sep 10, 2026
81f7a61
AX: In isolated tree mode, backwards word and sentence navigation fai…
twilco Sep 10, 2026
870a585
"bc1-rgba-unorm";dimension="3d" test cases are failing
mwyrzykowski Sep 10, 2026
659cfaf
[webkitscmpy] git-webkit revert crashes instead of reporting an unres…
ryanhaddad Sep 10, 2026
7a58f5e
[webkitscmpy] Two revert requests with the same reason but different …
ryanhaddad Sep 10, 2026
6dbfb16
Fix cmake build after 320807@main
achristensen07 Sep 10, 2026
a1457f7
[Site Isolation] Expand about:blank process/origin checks to include …
jelee53 Sep 10, 2026
6a444fb
Add Morne Veldsman to contributors.json
mveldsman Sep 10, 2026
470d385
Fix cmake build after 320807@main again
achristensen07 Sep 10, 2026
376d820
Cannot run 'git-webkit' or 'check-webkit-style' with python 3.15
mcatanzaro Sep 10, 2026
257af3c
[WGSL] shader,validation,parse,comments:* is failing
ruthvikkonda Sep 10, 2026
e3d1170
REGRESSION(318399@main): Broke platform/mac/fast/AppleScript/array.html
JonWBedard Sep 10, 2026
051c3db
Complete the `portal-transform` support
etiennesegonzac Sep 10, 2026
86f52ba
[libpas] Replace MTE enablement bool with a tri-state
Achierius Sep 10, 2026
1c5f54f
Add a fast path for premultiplying/unpremultiplying small pixel buffers
charliewolfe Sep 10, 2026
ae36a4d
[GFC] Finish resolveIntrinsicTrackSizesWithSpanningItems()
yulunwu2 Sep 10, 2026
7077451
[SwiftUI WebKit API] Build _WebKit_SwiftUI on watchOS and tvOS platforms
rr-codes Sep 10, 2026
98e4a47
Implement QuotaExceededError
hjanuschka Sep 10, 2026
5f15f85
[WebGPU] Implement UTF-8 constant checking without string copies
mwyrzykowski Sep 10, 2026
5dfb4dc
REGRESSION(319603@main): Broke http/tests/webgpu/webgpu/api/validatio…
JonWBedard Sep 10, 2026
ad8eace
[IPC] Blob registry messages carrying a null URL crash the network pr…
kmonsen Sep 10, 2026
df07d6a
[Win] Make Swift-enabled built products runnable on test workers
JJJ Sep 10, 2026
41ec813
[JSC] Lower Mul(Neg(n), m) to MNEG/FNMUL
hyjorc1 Sep 10, 2026
7390911
Optimize attribute selector [class~=foo] like class selector
anttijk Sep 10, 2026
48485dd
[Gardening] http/tests/webgpu/webgpu/shader/execution/zero_init.html …
JonWBedard Sep 10, 2026
ca65820
[WPE] WebDriver input is broken on WPEPlatform views with a scale factor
alexgcastro Sep 10, 2026
d20ce08
[SVG] Mutating a display: contents tspan inside SVG text crashes with…
alanbaradlay Sep 10, 2026
560dbe3
Avoid including util.sb in sandboxes
pvollan Sep 10, 2026
4d78243
GPU process leaks GPUConnectionToWebProcess because didClose() never …
Sep 10, 2026
13275db
[GARDENING][Site Isolation]REGRESSION(315452@main): 38x TestWebKitAPI…
JEspinal01 Sep 10, 2026
4969aa9
[CMake] Add missing TestWebKitAPI files to the Cocoa/Mac source lists
charliewolfe Sep 10, 2026
d4b8cb8
[Site Isolation] A dialog from a document the page has left can still…
szewai Sep 10, 2026
b928857
Remote snapshotting does not render SVG images
shallawa Sep 10, 2026
df01582
[IFC] Stop adjusting display: inline to inline-block on block contain…
alanbaradlay Sep 10, 2026
44d5651
`run-benchmark` should show per-iteration value after each iteration …
dewei-zhu Sep 10, 2026
e22461b
DataTransferItem.kind should return the empty string for an item in t…
Ahmad-S792 Sep 10, 2026
00ef398
[GPUProcess] Move the drawing Font functionalities to a new class nam…
shallawa Sep 10, 2026
28da9c5
Clamp repeat count for SVG animation.
yulunwu2 Sep 10, 2026
7191294
Unreviewed, REGRESSION(318399@main): Broke platform/mac/fast/AppleScr…
Constellation Sep 10, 2026
7b265b3
[GTK][WPE] `steps()` and `linear()` animations can be accelerated
obyknovenius Sep 10, 2026
693bc95
[Site Isolation] Make FrameTreeSyncClient and DocumentSyncClient meth…
bnham Sep 10, 2026
94f9b79
Speed up FrameTree::containsRemoteFrame and related methods
bnham Sep 10, 2026
a37a650
Popunder bypass via overlappping transient activations
pascoej Sep 10, 2026
d4a16a9
Update WebGL texture test expectations
roberto-apple Sep 10, 2026
fe013f5
[CMake] Add missing includes exposed by a non-unified build - WebExte…
megangardner Sep 10, 2026
92a274e
[JSC] Wasm BreakpointManager is returning Breakpoint* of HashMap and …
Constellation Sep 10, 2026
40ca828
`-apple-color-filter` should not appear in computed styles
lilyspiniolas Sep 10, 2026
543ba52
WPT getBBox tests wrongly expect a zero bbox for a non-rendered ancestor
karlcow Sep 10, 2026
50320fd
[css-counter-styles] Support the extended range for the longhand East…
igower Sep 10, 2026
727f7d2
Replace references to FontDescription "specifiedLocale" with "compute…
weinig Sep 11, 2026
e27850e
[QUIRK] google.com: clicking a provider link in the "Where to watch" …
karlcow Sep 11, 2026
d11d777
[cleanup] Move the legacy line boxes from RenderInline to RenderSVGIn…
alanbaradlay Sep 11, 2026
edced46
[IFC] Stop adjusting internal table and table caption display values …
alanbaradlay Sep 11, 2026
f6b9f5b
[JSC] Fix dead-lock in Structure::flattenDictionaryStructure
Constellation Sep 11, 2026
c4a7ebc
Web Inspector: Support HTTP throttling or some Network Conditioner fo…
dcrousso Sep 11, 2026
1443a4c
Remove unnecessary temporary String creation at CSS parsing call sites
iidmsa Sep 11, 2026
b8d7e24
[JSC] Move WarmUp thread to libpas
Constellation Sep 11, 2026
56b81e9
[Swift Testing] Make Swift-friendly Web Extension utility functions a…
rr-codes Sep 11, 2026
8379f89
Adopt Vector::moveTo in TextTrackCueList::updateCueIndex
Ahmad-S792 Sep 11, 2026
09b6764
[AppKit Gestures] Cannot rotate some <model> elements in orbit stage …
aprotyas Sep 11, 2026
a852556
[CMake] Support Swift Testing
rr-codes Sep 11, 2026
9bf932a
[cmake] cmake's build WebKit can't be uploaded to device
jyavenard Sep 11, 2026
cd04e05
[GTK][WPE] Skia compositor: use promise images for video buffers usin…
carlosgcampos Sep 11, 2026
3ef0f81
[scroll-animations] Style resolution with scroll-timeline name blocks…
graouts Sep 11, 2026
d22e710
Web Inspector: more inspector/debugger tests use the inert page-target
AnujPanta1 Sep 11, 2026
4a94df6
Reduce binary size resulting from large strings generated by RELEASE_…
rreno Sep 11, 2026
00130dc
Make String::utf8(), StringImpl::utf8() and StringView::utf8() return…
cdumez Sep 11, 2026
2033479
Use CPU(ARM64) to guard the fast path added in 320853@main
charliewolfe Sep 11, 2026
62f9b5c
Unreviewed, reverting 320900@main (9bf932afffa1)
revert-bot Sep 11, 2026
6abf2a5
[visionOS] Stop importing LinearMediaKit in libWebKitSwift
aestes Sep 11, 2026
294b5b5
U+0000 NULL should be replaced with U+FFFD when fragment parsing in f…
annevk Sep 11, 2026
0f0696c
[Swift Testing] Add a style checker rule to ensure tests aren't misse…
rr-codes Sep 11, 2026
6103d1b
makeStringByJoining() drops separators preceding the first non-empty …
Ahmad-S792 Sep 11, 2026
d4107fc
Make parseRange() follow the Fetch Standard
annevk Sep 11, 2026
1c42b8b
[GTK4] editing/pasteboard/data-transfer-set-data-sanitize-url-when-co…
dpino Sep 11, 2026
c991f53
Ensure Swift clang importer respects WebKitAdditions
adetaylor Sep 11, 2026
6307bfc
[WPE] WebDriver cannot type shifted or unmapped characters
alexgcastro Sep 11, 2026
d5be61f
[WebDriver] Add Cookie drops the cookie when the request has no sameS…
alexgcastro Sep 11, 2026
9b09294
Reduce use of CString::legacyCStringPointer() in the codebase
cdumez Sep 11, 2026
e00002d
[JSC] Wasm debugger should resume breakpoints by dispatching the disp…
JDevlieghere Sep 11, 2026
94a1cd4
DataTransferItemList.clear() ignores the drag data store mode
Ahmad-S792 Sep 11, 2026
9802b2e
[scroll-animations] update WPT sync
graouts Sep 11, 2026
52ff189
A hung WebDriver command makes run-webdriver-tests hang forever
alexgcastro Sep 11, 2026
feb8e0d
[IFC] Stop forwarding overflow and text-overflow to anonymous block b…
alanbaradlay Sep 11, 2026
00e0800
[cleanup] Compute inline box repaint rects through localRectsForRepai…
alanbaradlay Sep 11, 2026
301315e
[GStreamer] Outgoing WebRTC audio under-feeds the resampler and reads…
csaavedra Sep 11, 2026
338fd1c
[cmake] Parameters given to build-webkit should be persistent and con…
jyavenard Sep 11, 2026
d58d0a3
[Site Isolation] Video in cross-origin iframe is sometimes not render…
pvollan Sep 11, 2026
3d17698
Back navigation fails to restore website after playing an embedded cr…
pvollan Sep 11, 2026
2aedf51
Make WTF::UUID's empty value unnameable outside HashTraits and Markab…
cdumez Sep 11, 2026
67f2974
[cmake] cmake's build WebKit can't be uploaded to device
jyavenard Sep 11, 2026
d073f90
[ analyze-safer-cpp ] Improve support for beta and open source clangs
geoffreygaren Sep 11, 2026
431c318
i18n.getMessage() drops non-string substitution arguments instead of …
elijahsawyers Sep 11, 2026
c36a2f5
[cleanup] Rename RenderObject::isRenderInline() to isInlineBox()
alanbaradlay Sep 11, 2026
c14ca61
[IFC] Remove BoxTreeUpdater::adjustStyleIfNeeded
alanbaradlay Sep 11, 2026
59da037
Add ability to use background-color as a <color>
fantasai Sep 11, 2026
c0bc25f
Remove printing support on tvOS and watchOS
bnham Sep 11, 2026
bd3aa16
[GTK] WebDriver is broken for either GTK 3 or GTK 4 apps (keyboard/mo…
mcatanzaro Sep 11, 2026
e7b60ae
[Swift] Idiomatic MESSAGE_CHECK for Swift IPC receivers
adetaylor Sep 11, 2026
d9b99ea
AX: fix two accessibility client API site isolation tests
minorninth Sep 11, 2026
2f7ecba
[Site Isolation] TestWebKitAPI.SiteIsolation.Events can fail due to m…
szewai Sep 11, 2026
038b254
Make WKWebViewConfiguration._allowedNetworkHosts restrict WebTransport
achristensen07 Sep 11, 2026
f7bae2e
[threaded-animations] updating keyframes of an accelerated animation'…
graouts Sep 11, 2026
8ae0649
[JSC] Rewrite WeakGCMap like JS WeakMap
Constellation Sep 11, 2026
5e03b0c
[JSC] Make Air stack slot liveness sparse in instructions
Constellation Sep 11, 2026
9702234
[Swift Testing] Convert WKWebExtensionAPIAction tests to Swift Testing
rr-codes Sep 11, 2026
e47f34d
[CMake] Support test-lldb-webkit
emw-apple Sep 11, 2026
c122844
Remove printing support from tvOS only
bnham Sep 11, 2026
d116a43
Update ANGLE to 2026-09-07 (e3fdc27d77e3d066405f896da1d286b9232eae04)
roberto-apple Sep 11, 2026
db7cb8b
There is no need to issue file sandbox extensions from the temp and c…
pvollan Sep 11, 2026
1e0fe8b
Null-pointer crash in `FileSystemWritableFileStreamSink::write()` whe…
Sep 11, 2026
e68d094
[cleanup] Ask isInlineBox() instead of downcasting to RenderInline wh…
alanbaradlay Sep 11, 2026
0a09c02
[JSC][Wasm] Initialize ref arrays with gcSafeMemfill
chicoxyzzy Sep 11, 2026
5ed89fc
[Custom Highlight] Support `::highlight(*)`
nt1m Sep 11, 2026
d147fe7
Hold AudioHardwareListener client weakly and stop caching listener pr…
eric-carlson Sep 11, 2026
be9fd26
[css-text] Unprefix -webkit-hyphenate-limit-lines
nt1m Sep 11, 2026
1b00bc4
Seed a document's own IP address space
igower Sep 11, 2026
a761c97
[Win][CMake] Use the configured Swift runtime when archiving
JJJ Sep 11, 2026
ab6b57b
[Cocoa] Keep accents and other combining marks on their base letter w…
brentfulgham Sep 11, 2026
807d76e
[EWS] determineDefaultCompilerCrossTarget.pl webkitperl test fails o…
martadarbinyan Sep 11, 2026
a2f78f1
[AutoInstaller] Vendor packaging
gsnedders Sep 11, 2026
ed458bb
[GTK][WPE] Require libpng 1.5.0 or newer
aperezdc Sep 11, 2026
48ad123
[Quirks] Add parameterized quirks to the table
colelao Sep 11, 2026
fb45db7
(Follow-up) Remove printing support from tvOS only
JonWBedard Sep 11, 2026
cd1591e
Remove unused WebPageProxy::processWillSuspend and WebPageProxy::proc…
achristensen07 Sep 11, 2026
5ad00f6
DNSResolveQueueCFNet::updateIsUsingProxy() dereferences null CFArray …
Ahmad-S792 Sep 11, 2026
0e80149
[css-text] Support hyphenate-limit-chars
nt1m Sep 11, 2026
0605277
Fix iOS simulator CMake build after 320929@main
achristensen07 Sep 11, 2026
6a4054d
BlobRegistryImpl::registerInternalBlobURLForSlice() redundantly re-lo…
Ahmad-S792 Sep 11, 2026
740242c
CredentialStorage::removeCredentialsWithOrigin fails to purge HTTPS c…
Ahmad-S792 Sep 11, 2026
a7a09ee
[scroll-animations] make `subject` a required parameter when construc…
graouts Sep 11, 2026
fb20d4d
PlatformSpeechSynthesizerClient should prevent use-after-free via wea…
twilco Sep 11, 2026
944f82d
Add the Local Network Access check algorithm
igower Sep 11, 2026
c3a249e
[JSC] Use instance IDs for Wasm debugger virtual addresses
JDevlieghere Sep 11, 2026
b9c0ed5
[JSC] Throwing an exception causes a CPA2 failure in LLInt slow paths
heimskr Sep 11, 2026
8378080
Revert 320786@main
achristensen07 Sep 11, 2026
5c599e5
[WebDriver] Gardening W27 2026
lauromoura Sep 12, 2026
9e61914
[JSC] Add more hint RELEASE_ASSERT etc. to remove assertion inside loop
Constellation Sep 12, 2026
d7d3c61
Re-import CSS symbols() WPT
nt1m Sep 12, 2026
e41438e
Update statuses in CSSProperties.json as of September 2026
nt1m Sep 12, 2026
981f2c5
GraphicsContextGL::Client::addDebugMessage() should take a std::span<…
cdumez Sep 12, 2026
7189f73
Rename toCString() to toUTF8CString() and stop PrintStream from print…
cdumez Sep 12, 2026
4f65347
BlobResourceHandle truncates read length through int for file-backed …
Ahmad-S792 Sep 12, 2026
50c3a2f
[WTF] Make ASCIILiteral::isEmpty constexpr
colelao Sep 12, 2026
70bb79b
Improve pasteboard type checks on macOS
pascoej Sep 12, 2026
5ce9bd5
[AppKit Gestures] Click events don't carry pressed modifier keys
hortont424 Sep 12, 2026
30497d3
[AppKit Gestures] Double clicking in a word in a text field does not …
rr-codes Sep 12, 2026
c6bb2f7
U+0000 NULL should be replaced with U+FFFD in the RCDATA and RAWTEXT …
annevk Sep 12, 2026
aab7e12
ResourceRequestBase::upgradeInsecureRequestIfNeeded() evaluates url.h…
Ahmad-S792 Sep 12, 2026
cb5ef65
[LBSE] A scrollable outermost <svg> never computes its scroll dimensions
nikolaszimmermann Sep 12, 2026
2281732
[Gardening] http/tests/webgpu/webgpu/shader/execution/zero_init.html …
iidmsa Sep 12, 2026
73d6001
imported/w3c/web-platform-tests/workers/semantics/structured-clone/sh…
annevk Sep 12, 2026
a371ed3
Make WTF::UUID unable to hold an invalid value, so one cannot be sent…
cdumez Sep 12, 2026
1072fbe
[AppKit Gestures] Cannot press and drag over some custom sliders
aprotyas Sep 12, 2026
bdef87b
[Swift Testing] Replace the core implementation of HTTPServer with Sw…
rr-codes Sep 12, 2026
3e97656
Sync `input-events` from WPT Upstream
Ahmad-S792 Sep 12, 2026
ea2579d
[Text Extraction] Include more sibling context to interaction descrip…
whsieh Sep 13, 2026
2bbc270
RenderTreeBuilder::FormControls::updatePseudoElement attaches a ::pic…
kmonsen Sep 13, 2026
436386a
[Writing Tools] A final text animation with no unanimated range crash…
kmonsen Sep 13, 2026
25f7ce3
Make FileSystem::fileSystemRepresentation() return a UTF8CString and …
cdumez Sep 13, 2026
d5c7316
isSafeRedirectionResponseHeader() lists HTTPHeaderName::ReferrerPolic…
Ahmad-S792 Sep 13, 2026
e870848
DrawLinesForText::dump() prints "double" twice and never dumps the st…
Ahmad-S792 Sep 13, 2026
560f0ec
CertificateInfo::containsNonRootSHA1SignedCertificate() bounds the ce…
Ahmad-S792 Sep 13, 2026
00991b6
[CMake] Fix the build after 320998@main
rr-codes Sep 13, 2026
2d4a471
Share the canonical UUID string layout between WTF::UUID and FIDO AAG…
cdumez Sep 13, 2026
3549e74
Resync `selection` from WPT Upstream
Ahmad-S792 Sep 13, 2026
c44141b
Synchronize WPT css/selectors
annevk Sep 13, 2026
4f56cc2
Fix some failing CTS tests
mwyrzykowski Sep 13, 2026
f45cdb1
REGRESSION(320261@main): [CMake][GTK][WPE] -Werror is not used even i…
mcatanzaro Sep 13, 2026
8cd1f93
[GStreamer] Gardening
philn Sep 13, 2026
fc0bfff
[cmake] Models don't render on macOS
etiennesegonzac Sep 13, 2026
6b58d86
shape-outside should support path() and shape() functions
smfr Sep 13, 2026
89e6d36
Merge remote-tracking branch 'upstream/main' into bun/upgrade-to-6b58…
robobun Sep 13, 2026
2cb1d60
JSModuleRecord: pass the executable to WeakGCMap::set() as a raw pointer
robobun Sep 13, 2026
3bec033
Pass legacyCStringPointer() to the %s arguments in fork-only code
robobun Sep 13, 2026
6b1d0df
Merge remote-tracking branch 'origin/main' into bun/upgrade-to-6b58d8…
robobun Sep 15, 2026
269ab60
Merge remote-tracking branch 'origin/main' into bun/upgrade-to-6b58d8…
robobun Sep 16, 2026
a3b5a5c
Merge remote-tracking branch 'origin/main' into bun/upgrade-to-6b58d8…
robobun Sep 17, 2026
6eafb22
Merge remote-tracking branch 'origin/main' into bun/upgrade-to-6b58d8…
robobun Sep 19, 2026
65672fa
Merge remote-tracking branch 'origin/main' into bun/upgrade-to-6b58d8…
robobun Sep 21, 2026
90df185
Merge remote-tracking branch 'origin/main' into bun/upgrade-to-6b58d8…
robobun Sep 22, 2026
2ed8525
Merge remote-tracking branch 'origin/main' into bun/upgrade-to-6b58d8…
robobun Sep 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
37 changes: 37 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,43 @@ if (SWIFT_REQUIRED)
WEBKIT_XCRUN(CMAKE_Swift_COMPILER --find swiftc)
endif ()
set(ORIGINAL_Swift_COMPILER "${CMAKE_Swift_COMPILER}")
WEBKIT_QUERY_SWIFT_TARGET_INFO(WEBKIT_SWIFT_TARGET_INFO "${ORIGINAL_Swift_COMPILER}")

if (WIN32)
string(JSON _swift_runtime_library_path_count ERROR_VARIABLE _swift_runtime_library_paths_error
LENGTH "${WEBKIT_SWIFT_TARGET_INFO}" "paths" "runtimeLibraryPaths")
if (NOT _swift_runtime_library_paths_error STREQUAL "NOTFOUND")
message(FATAL_ERROR "Could not read Swift runtime library paths: ${_swift_runtime_library_paths_error}")
endif ()
set(_swift_runtime_bin_directory "")
if (_swift_runtime_library_path_count)
math(EXPR _swift_runtime_library_path_last "${_swift_runtime_library_path_count} - 1")
# Prefer the installed runtime over the toolchain-adjacent testing fallback.
foreach (_index RANGE ${_swift_runtime_library_path_last} 0 -1)
string(JSON _swift_runtime_library_path GET "${WEBKIT_SWIFT_TARGET_INFO}" "paths" "runtimeLibraryPaths" ${_index})
if (EXISTS "${_swift_runtime_library_path}/swiftCore.dll")
set(_swift_runtime_bin_directory "${_swift_runtime_library_path}")
break ()
endif ()
endforeach ()
endif ()
if (NOT _swift_runtime_bin_directory)
message(FATAL_ERROR "Could not find the Swift runtime bin directory")
endif ()
file(WRITE "${CMAKE_BINARY_DIR}/swift-runtime-bin-directory.txt.tmp" "${_swift_runtime_bin_directory}\n")
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${CMAKE_BINARY_DIR}/swift-runtime-bin-directory.txt.tmp"
"${CMAKE_BINARY_DIR}/swift-runtime-bin-directory.txt"
COMMAND_ERROR_IS_FATAL ANY
)
file(REMOVE "${CMAKE_BINARY_DIR}/swift-runtime-bin-directory.txt.tmp")
unset(_swift_runtime_library_path_count)
unset(_swift_runtime_library_path_last)
unset(_swift_runtime_library_paths_error)
unset(_swift_runtime_library_path)
unset(_swift_runtime_bin_directory)
unset(_index)

# Avoid cmd.exe due to command-line length limits.
set(CMAKE_Swift_COMPILER "${Python_EXECUTABLE}")
set(CMAKE_Swift_COMPILER_ARG1 "${CMAKE_SOURCE_DIR}/Tools/Scripts/swift/swiftc-wrapper.py")
Expand All @@ -63,6 +98,8 @@ if (SWIFT_REQUIRED)
string(REPLACE "<CMAKE_Swift_COMPILER>"
"<CMAKE_Swift_COMPILER> --original-swift-compiler=${ORIGINAL_Swift_COMPILER}"
CMAKE_Swift_CREATE_STATIC_LIBRARY "${CMAKE_Swift_CREATE_STATIC_LIBRARY}")
elseif (WIN32)
file(REMOVE "${CMAKE_BINARY_DIR}/swift-runtime-bin-directory.txt")
endif ()

# -----------------------------------------------------------------------------
Expand Down
14 changes: 14 additions & 0 deletions JSTests/microbenchmarks/mul-negated-operand-chain.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
function chain(n, w) {
let x = 1.0;
for (let i = 0; i < n; ++i)
x = -x * w;
return x;
}
noInline(chain);

let result = 0;
for (let i = 0; i < 600; ++i)
result += chain(100000, 1.0);

if (result !== 600)
throw new Error(`bad result: ${result}`);
33 changes: 33 additions & 0 deletions JSTests/microbenchmarks/mul-negated-operand-integrate.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
function integrate(px, py, vx, vy, n, damping, dt) {
for (let i = 0; i < n; ++i) {
let x = px[i];
let y = py[i];
let ax = -x * damping;
let ay = -y * damping;
let nvx = vx[i] + ax * dt;
let nvy = vy[i] + ay * dt;
vx[i] = nvx;
vy[i] = nvy;
px[i] = x + nvx * dt;
py[i] = y + nvy * dt;
}
}
noInline(integrate);

const count = 1000;
let px = new Float64Array(count);
let py = new Float64Array(count);
let vx = new Float64Array(count);
let vy = new Float64Array(count);
for (let i = 0; i < count; ++i) {
px[i] = 1.0;
py[i] = -1.0;
vx[i] = 0.25;
vy[i] = -0.25;
}

for (let i = 0; i < 100000; ++i)
integrate(px, py, vx, vy, count, 0.5, 0.125);

if (!isFinite(px[0]) || !isFinite(py[0]))
throw new Error(`bad result: ${px[0]}, ${py[0]}`);
36 changes: 36 additions & 0 deletions JSTests/stress/arraybuffer-grow-resize-huge-length.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
function shouldThrowRangeError(func)
{
var threw = false;
try {
func();
} catch (error) {
threw = true;
if (!(error instanceof RangeError))
throw new Error("expected RangeError, got " + error);
}
if (!threw)
throw new Error("did not throw");
}

{
let buffer = new ArrayBuffer(8, { maxByteLength: 16 });
shouldThrowRangeError(() => buffer.resize(1e20));
shouldThrowRangeError(() => buffer.resize(Infinity));
shouldThrowRangeError(() => buffer.resize(-1));
let detached = new ArrayBuffer(8, { maxByteLength: 16 });
detached.transfer();
shouldThrowRangeError(() => detached.resize(-1));
buffer.resize(16);
if (buffer.byteLength !== 16)
throw new Error("resize to 16 failed");
}

{
let buffer = new SharedArrayBuffer(8, { maxByteLength: 16 });
shouldThrowRangeError(() => buffer.grow(1e20));
shouldThrowRangeError(() => buffer.grow(Infinity));
shouldThrowRangeError(() => buffer.grow(-1));
buffer.grow(16);
if (buffer.byteLength !== 16)
throw new Error("grow to 16 failed");
}
78 changes: 78 additions & 0 deletions JSTests/stress/multiply-negated-operand.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
function shouldBe(actual, expected, message) {
// Distinguish -0 from 0 and treat NaN as equal to NaN.
let same = actual === expected ? (actual !== 0 || 1 / actual === 1 / expected)
: (actual !== actual && expected !== expected);
if (!same)
throw new Error(`${message}: expected ${expected === 0 && 1 / expected < 0 ? "-0" : expected}, got ${actual === 0 && 1 / actual < 0 ? "-0" : actual}`);
}

function negLeft(w, r) { return -w * r; }
noInline(negLeft);

function negRight(w, r) { return w * -r; }
noInline(negRight);

function negBoth(w, r) { return -w * -r; }
noInline(negBoth);

// The negation has two users, so it cannot be absorbed into the multiply.
function sharedNeg(w, r) {
let n = -w;
return n * r + n;
}
noInline(sharedNeg);

// Integer operands, so this stays on the Int32 path.
function negLeftInt(w, r) { return (-w * r) | 0; }
noInline(negLeftInt);

let signedZeroCases = [
// w, r, -w * r, w * -r, -w * -r
[0, 3, -0, -0, 0],
[-0, 3, 0, 0, -0],
[0, -3, 0, 0, -0],
[-0, -3, -0, -0, 0],
[0, 0, -0, -0, 0],
[-0, -0, -0, -0, 0],
[0, -0, 0, 0, -0],
];

let specialCases = [
// w, r, -w * r, w * -r, -w * -r
[0, Infinity, NaN, NaN, NaN],
[2, Infinity, -Infinity, -Infinity, Infinity],
[-2, Infinity, Infinity, Infinity, -Infinity],
[NaN, 3, NaN, NaN, NaN],
[3, NaN, NaN, NaN, NaN],
[1.5, 2.5, -3.75, -3.75, 3.75],
[-1.5, 2.5, 3.75, 3.75, -3.75],
[Number.MIN_VALUE, 0.5, -Number.MIN_VALUE / 2, -Number.MIN_VALUE / 2, Number.MIN_VALUE / 2],
[Number.MAX_VALUE, 2, -Infinity, -Infinity, Infinity],
];

let cases = signedZeroCases.concat(specialCases);

for (let i = 0; i < 1e4; ++i) {
for (let [w, r, expectNegLeft, expectNegRight, expectNegBoth] of cases) {
shouldBe(negLeft(w, r), expectNegLeft, `-${w} * ${r}`);
shouldBe(negRight(w, r), expectNegRight, `${w} * -${r}`);
shouldBe(negBoth(w, r), expectNegBoth, `-${w} * -${r}`);
shouldBe(sharedNeg(w, r), expectNegLeft + -w, `shared -${w} * ${r}`);
}
}

// Int32 path: (-w * r) | 0 wraps like the two's complement product.
let intCases = [
[1, 1, -1],
[-1, 1, 1],
[3, 7, -21],
[-3, 7, 21],
[0x7fffffff, 2, 2],
[-0x80000000, 2, 0],
[0x10000, 0x10000, 0],
];

for (let i = 0; i < 1e4; ++i) {
for (let [w, r, expected] of intCases)
shouldBe(negLeftInt(w, r), expected, `(-${w} * ${r}) | 0`);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
//@ requireOptions("--useDollarVM=1")

function shouldBe(actual, expected) {
if (actual !== expected)
throw new Error(`bad value: ${JSON.stringify(actual)}, expected ${JSON.stringify(expected)}`);
}

let re = /x/g;

let cases = [
["aaxbbxcc", 2, "aaxbb", "cc"],
["aaxbbx\0\0", 2, "aaxbb", "\0\0"],
["aaxbbあxcc", 2, "aaxbbあ", "cc"],
[("_".repeat(64) + "aaxbb".repeat(10) + "xcc" + "_".repeat(64)).substring(64, 117), 11, "aaxbb".repeat(10), "cc"],
];

let index = 0;
let expected = null;

function step() {
if (expected) {
let [leftContext, rightContext] = expected;
shouldBe(RegExp.$1, "");
shouldBe(RegExp.lastParen, "");
shouldBe(RegExp.lastMatch, "x");
shouldBe(RegExp.leftContext, leftContext);
shouldBe(RegExp.rightContext, rightContext);
}
if (index === cases.length)
return;
let [input, count, leftContext, rightContext] = cases[index++];
re.test("zzx");
shouldBe(input.match(re).length, count);
expected = [leftContext, rightContext];
$vm.deleteAllCodeWhenIdle();
setTimeout(step, 0);
}

step();
61 changes: 34 additions & 27 deletions JSTests/stress/warm-up-marked-blocks-state-machine.js
Original file line number Diff line number Diff line change
@@ -1,52 +1,59 @@
//@ runDefault("--useDollarVM=1", "--warmUpMarkedBlockCount=8", "--warmUpMarkedBlockIdleTimeout=0.2")
//@ runDefault("--useDollarVM=1", "--warmUpMarkedBlockCount=8", "--warmUpMarkedBlockIdleTimeout=0.02")

// Drives the warm-up supply through its whole state machine: fill, release on idle, restart,
// stand-down on allocation failure, and recovery once allocation works again. Every assertion is
// "reaches this state eventually", since a helper thread drives the transitions.
// Drives the warm-up supply: it fills while blocks are being asked for, hands the memory back once
// nothing has asked for a while, survives an allocation failure, and comes back once allocation
// works again. Every assertion is "reaches this state eventually", since a libpas helper thread
// drives the transitions on its own.

const pollSeconds = 0.05;
const pollSeconds = 0.01;
const timeoutSeconds = 20;

const retained = [];

function allocateBlocks() {
// Retaining these is the point: a heap that can recycle stops asking the allocator for blocks,
// and sustained block demand is what the stand-down and restart paths are driven by. The count
// is kept small so that a run which ends up timing out still reports rather than exhausting
// memory first.
// and sustained block demand is what keeps the supply refilling. The count is kept small so
// that a run which ends up timing out still reports rather than exhausting memory first.
for (let i = 0; i < 2000; ++i)
retained.push({ a: i, b: i, c: i });
}

function waitFor(description, predicate, betweenAttempts = () => { }) {
for (let attempt = 0; attempt < timeoutSeconds / pollSeconds; ++attempt) {
if (predicate($vm.warmUpMarkedBlockState()))
if (predicate($vm.warmUpMarkedBlockCount()))
return;
betweenAttempts();
sleepSeconds(pollSeconds);
}
const state = $vm.warmUpMarkedBlockState();
throw new Error(`Timed out waiting for ${description}; blocks=${state.blocks} phase=${state.phase}`);
throw new Error(`Timed out waiting for ${description}; blocks=${$vm.warmUpMarkedBlockCount()}`);
}

const isFilled = state => state.phase === "armed" && state.blocks > 0;
function driveTheSupply() {
// The supply lives in libpas, so a build that does not use libpas has nothing to drive: it
// reports itself disabled even though a depth was configured on the command line.
if (!$vm.warmUpMarkedBlocksAreEnabled())
return;

// Demand starts the helper, which arms to the configured depth and fills.
allocateBlocks();
waitFor("the supply to fill", isFilled, allocateBlocks);
// Demand makes the helper fill the supply.
allocateBlocks();
waitFor("the supply to fill", blocks => blocks > 0, allocateBlocks);

// With no demand at all, the helper hands everything back and shuts down.
waitFor("the supply to be released when idle", state => state.phase === "stopped");
// With no demand at all, the memory goes back rather than staying resident on the chance that
// somebody will want it. This is what keeps the supply from surviving a quiet period.
waitFor("the supply to be released when idle", blocks => !blocks);

// Fresh demand brings it back.
allocateBlocks();
waitFor("the helper to restart", isFilled, allocateBlocks);
// Fresh demand fills it again.
allocateBlocks();
waitFor("the supply to refill", blocks => blocks > 0, allocateBlocks);

// An allocation failure makes it stand down rather than spin against an exhausted heap.
$vm.setWarmUpMarkedBlockAllocationShouldFail(true);
waitFor("the helper to stand down", state => state.phase === "standingDown", allocateBlocks);
// An empty supply cannot tell a filler that has stood down from one refilling as fast as the
// demand here consumes, so draining is only the setup.
$vm.setWarmUpMarkedBlockAllocationShouldFail(true);
waitFor("the supply to drain while allocation fails", blocks => !blocks, allocateBlocks);

// Standing down must not be permanent: the idle timeout still fires while demand continues, and
// lifts it once allocation works again.
$vm.setWarmUpMarkedBlockAllocationShouldFail(false);
waitFor("the stand-down to lift", isFilled, allocateBlocks);
// The real assertion, since a filler that treated the failure as fatal never refills.
$vm.setWarmUpMarkedBlockAllocationShouldFail(false);
waitFor("the supply to recover", blocks => blocks > 0, allocateBlocks);
}

driveTheSupply();
32 changes: 32 additions & 0 deletions JSTests/stress/weak-gc-map-keeps-live-values.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// Symbol.for observes VM::symbolImplToSymbolMap, one of the WeakGCMaps, directly: if a reachable
// entry is dropped, the next lookup builds a fresh Symbol cell for the same key and the two are not
// identical. Eden and full collections reconcile those maps by different paths, so exercise both.

function shouldBe(actual, expected) {
if (actual !== expected)
throw new Error(`bad value: ${String(actual)}`);
}

const symbols = [];
for (let i = 0; i < 128; ++i)
symbols.push(Symbol.for(`key-${i}`));

for (let i = 0; i < 32; ++i) {
// Churn structure transitions, prototype structures, and interned strings, so that the weak
// tables gain entries between collections.
for (let j = 0; j < 512; ++j) {
const object = {};
object[`p${j & 31}`] = j;
object.tail = j;
Object.create(object);
`a,b,c-${j}`.split(",");
}

if (i & 1)
edenGC();
else
gc();

for (let j = 0; j < symbols.length; ++j)
shouldBe(Symbol.for(`key-${j}`), symbols[j]);
}
Loading
Loading