Skip to content

Exclude generated sandbox sources from upstream syncs - #410

Merged
Vladimir Morozov (vmoroz) merged 1 commit into
microsoft:mainfrom
vmoroz:PR/exclude-generated-sandbox-sources
Nov 10, 2026
Merged

Vladimir Morozov (vmoroz) merged 1 commit into
microsoft:mainfrom
vmoroz:PR/exclude-generated-sandbox-sources

Conversation

@vmoroz

@vmoroz Vladimir Morozov (vmoroz) commented Nov 10, 2026 •

Copy link
Copy Markdown
Member

Summary

hermes-windows does not ship the Hermes sandbox, and its generated wasm2c sources (API/hermes_sandbox/external/hermes_sandbox_impl_{dbg,opt}_compiled*) are ~200 MB per upstream regeneration, which GitHub cannot diff in place. #408 removed them and made the build skip the sandbox while they are absent.

Keep them out of future syncs

  • Lists them in .syncignore, so fork-sync never brings them back, including any new generated file names.
  • The rest of the sandbox (host runtime, wrappers, README) keeps syncing, so upstream's API tests compile unchanged and the sandbox can be enabled later by removing the entry and adding the sources.
  • Updates the API/CMakeLists.txt comment and the sync note in AGENTS.md to describe this.

Test Plan

  • git check-ignore --no-index with .syncignore (the matching fork-sync uses): excludes the generated _dbg_/_opt_ sources, including a new _compiled_8.c name; keeps the hermes_sandbox_impl_compiled_N.c wrappers, wasm-rt files and HermesSandboxRuntime.cpp.
  • .\dev build --platform x64 --configuration debug: passes; the sandbox is skipped.
Microsoft Reviewers: Open in CodeFlow

hermes-windows does not ship the sandbox. Its generated wasm2c sources
(API/hermes_sandbox/external/hermes_sandbox_impl_{dbg,opt}_compiled*) are
~200 MB per upstream regeneration, and GitHub cannot diff them in place.
microsoft#408 removed them; list them in .syncignore so future syncs keep them out,
including new file names. The sandbox stays skipped while they are absent.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings November 10, 2026 00:32
@vmoroz

Copy link
Copy Markdown
Member Author

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟢 Approval recommended

No active review issues remain for the generated sandbox source sync exclusion and related documentation updates.

No open issues 🎉

What changed in this PR

Keeps the unshipped sandbox’s large generated wasm2c sources out of future upstream syncs, extending the source removal in #408 while allowing the remaining sandbox code to continue syncing.

Changes:

  • Adds a .syncignore pattern covering generated sandbox sources, including newly numbered files.
  • Updates contributor guidance and the CMake comment to describe the exclusion and how to re-enable the sandbox; build logic is unchanged.
File Description
API/​CMakeLists.txt Updates the comment explaining source exclusion and sandbox enablement.
AGENTS.md Replaces the follow-up import guidance with permanent sync-exclusion guidance.
.syncignore Excludes generated wasm2c sandbox sources from upstream syncs.

Review effort: Balanced

@vmoroz
Vladimir Morozov (vmoroz) merged commit c9db6c5 into microsoft:main Nov 10, 2026
19 checks passed
@github-actions

Copy link
Copy Markdown

Benchmark Results

Total benchmarks: 204

Inputs: baseline/baseline.json, bench_result.json

v8 (6176ms, 3204ms) -48.1%
v8 hermes (CI) hermes (CI)
v8-crypto 622.6ms 384.4ms
v8-deltablue 739.4ms 482.8ms
v8-raytrace 127.8ms 68.6ms
v8-regexp 593ms 207.8ms
v8-richards 937ms 540.2ms
v8-splay 225.2ms 144.6ms
v8-crypto (static) 452ms 265.6ms
v8-deltablue (static) 661.6ms 368.6ms
v8-raytrace (static) 91.8ms 58.2ms
v8-regexp (static) 749.2ms 193.2ms
v8-richards (static) 781.4ms 365.6ms
v8-splay (static) 195ms 124ms
test-suites (317886ms, 166654ms) -47.6%
test-suites hermes (CI) hermes (CI)
box2d 2949.8ms 1451.8ms
earley-boyer 2564.8ms 1479.4ms
navier-stokes 5743.8ms 2585.2ms
pdfjs 1038.2ms 501.6ms
gbemu 2296ms 1260ms
code-load 4472.8ms 2785.6ms
typescript 3381.8ms 2026.2ms
simpleSum 8855.4ms 4475.4ms
propAccess 2691.2ms 1209.6ms
allocObj 252ms 148.8ms
allocObjLit 6371.8ms 2991.4ms
allocNewObj 20053ms 10463.8ms
allocArray 249ms 152.4ms
allocNewArray 34956.8ms 18667.4ms
arrayRead 115.6ms 50.2ms
arrayReadByIndex 550ms 301ms
largeArrayRead 827.2ms 328ms
arrayWrite 261.8ms 137.8ms
largeArrayWrite 2218ms 1181.4ms
interp-dispatch 2880ms 1393.8ms
wb-perf 8327ms 3022.4ms
arrayReverse 40.6ms 19.6ms
arrayMap 1472.6ms 748ms
arrayIndexOf 143.2ms 75.2ms
arrayLastIndexOf 148.6ms 93.8ms
arrayEvery 2308.8ms 1132ms
arraySome 2174.4ms 1132.8ms
arrayFill 2401.2ms 1212ms
arrayFilter 1866.4ms 1035.6ms
arrayFind 3207ms 1842ms
arrayFindIndex 3322ms 1842.6ms
arrayPop 1031.4ms 550.4ms
arrayReduce 1994.2ms 1032.4ms
arrayReduceRight 2075.8ms 1036ms
arrayShift 2065.8ms 1104.8ms
arrayUnshift 2109.4ms 1119.4ms
arrayIncludes 1216.6ms 77.6ms
arrayFrom 1102.8ms 642.6ms
arrayCopyWithin 1487ms 826.6ms
stringFromCharCode 92.6ms 52.2ms
arraySlice 786.2ms 458.2ms
arraySplice 26.8ms 18.2ms
arrayOf 1048.8ms 493.2ms
stringCharAt 1346.6ms 664.6ms
stringMatch 3192.4ms 1554ms
stringSearch 3508.2ms 1513.2ms
stringStartsWith 701ms 304.6ms
stringEndsWith 650.4ms 285.8ms
stringIncludes 1520.6ms 772.4ms
stringIndexOf 1555.6ms 1100ms
stringLastIndexOf 1821.4ms 893.6ms
stringSplit 822ms 375.6ms
stringSlice 490ms 231.6ms
stringPadStart 2910.8ms 1677.8ms
stringPadEnd 2910ms 1697.8ms
regExpMatch 1506.2ms 347.4ms
regExpSearch 1227ms 451ms
regExpToString 1204ms 749.4ms
stringReplace 1394.8ms 847ms
regExpReplace 3309.2ms 216.4ms
regExpFlags 956.8ms 571.2ms
regExpSplit 1307.8ms 400ms
numberArrayReadWrite 2477.8ms 1266.2ms
protoCache 3594.6ms 1580.4ms
box2d (static) 1792.6ms 967.2ms
earley-boyer (static) 1875.6ms 1122.8ms
navier-stokes (static) 3410.2ms 1864ms
pdfjs (static) 812.8ms 447.2ms
gbemu (static) 1797ms 986.8ms
code-load (static) 4199.2ms 2762.8ms
typescript (static) 2685.6ms 1618.6ms
simpleSum (static) 936.2ms 640.6ms
propAccess (static) 2298ms 1227.4ms
allocObj (static) 0.2ms 0ms
allocObjLit (static) 4154.4ms 2119ms
allocNewObj (static) 15749.2ms 9821.6ms
allocArray (static) 0.6ms 0.4ms
allocNewArray (static) 28494.2ms 16448.6ms
arrayRead (static) 74.2ms 40ms
arrayReadByIndex (static) 453.2ms 395.2ms
largeArrayRead (static) 552.2ms 388ms
arrayWrite (static) 178.4ms 85.6ms
largeArrayWrite (static) 1568.6ms 807.4ms
interp-dispatch (static) 1918.8ms 1538.6ms
wb-perf (static) 8991.2ms 4767.4ms
arrayReverse (static) 37ms 20.4ms
arrayMap (static) 1064.8ms 560.2ms
arrayIndexOf (static) 128.2ms 75.6ms
arrayLastIndexOf (static) 138.8ms 76.4ms
arrayEvery (static) 1397.6ms 806.8ms
arraySome (static) 1406.6ms 795.4ms
arrayFill (static) 1969.2ms 1153.4ms
arrayFilter (static) 1061ms 609.8ms
arrayFind (static) 2242.2ms 1328.2ms
arrayFindIndex (static) 2235.8ms 1347.6ms
arrayPop (static) 878ms 489.4ms
arrayReduce (static) 1311.8ms 740ms
arrayReduceRight (static) 1322.6ms 751.4ms
arrayShift (static) 1512ms 916.2ms
arrayUnshift (static) 1568.2ms 940.4ms
arrayIncludes (static) 963.4ms 76.4ms
arrayFrom (static) 1030.6ms 565ms
arrayCopyWithin (static) 1109.6ms 649.6ms
stringFromCharCode (static) 77ms 41.2ms
arraySlice (static) 571.6ms 344.2ms
arraySplice (static) 26ms 17.2ms
arrayOf (static) 868.8ms 428ms
stringCharAt (static) 1100.6ms 520.2ms
stringMatch (static) 2227.6ms 1296.6ms
stringSearch (static) 2219.2ms 1281.6ms
stringStartsWith (static) 494.2ms 244.6ms
stringEndsWith (static) 457.8ms 229.8ms
stringIncludes (static) 1437.4ms 583ms
stringIndexOf (static) 1440.8ms 911ms
stringLastIndexOf (static) 1956.6ms 730.8ms
stringSplit (static) 651.2ms 331ms
stringSlice (static) 445.6ms 194.8ms
stringPadStart (static) 2294.4ms 1382.6ms
stringPadEnd (static) 2499.2ms 1413.4ms
regExpMatch (static) 1483.2ms 320.2ms
regExpSearch (static) 1296.2ms 442.8ms
regExpToString (static) 1326.6ms 751.6ms
stringReplace (static) 1455.6ms 623.4ms
regExpReplace (static) 851.8ms 187.4ms
regExpFlags (static) 870.6ms 492ms
regExpSplit (static) 1200ms 344.4ms
numberArrayReadWrite (static) 2132.8ms 1034.6ms
protoCache (static) 3595.8ms 1898.2ms
micros (60876ms, 40972ms) -32.7%
micros hermes (CI) hermes (CI)
getNodeById.js 5273ms 2724.4ms
setInsert.js 2864.8ms 1836.8ms
stringify-number.js 1823.4ms 943.4ms
typed-array-sort.js 22381ms 15447.8ms
getNodeById.js (static) 3941ms 2190.8ms
setInsert.js (static) 2517.6ms 1790.8ms
stringify-number.js (static) 1663.6ms 841.4ms
typed-array-sort.js (static) 20411.4ms 15196.2ms
jit-benches (8563ms, 4423ms) -48.3%
jit-benches hermes (CI) hermes (CI)
idisp.js 2810.2ms 1401.4ms
idispn.js 3395.8ms 1296.8ms
idisp.js (static) 1906ms 1515.4ms
idispn.js (static) 450.8ms 209.4ms
many-subclasses (73437ms, 44893ms) -38.9%
many-subclasses hermes (CI) hermes (CI)
many.js 19104.8ms 11164.6ms
many-sh-1.js 7322.8ms 5866.6ms
many-sh-2.js 7329ms 5892.8ms
many-sh-3.js 7083.6ms 3957.6ms
many-sh-4.js 7235ms 3950.6ms
many.js (static) 15996ms 9202.6ms
many-sh-1.js (static) 2285.2ms 1197.2ms
many-sh-2.js (static) 2387ms 1284.4ms
many-sh-3.js (static) 2347.2ms 1194.4ms
many-sh-4.js (static) 2346ms 1182.4ms
map-objects (3627ms, 1033ms) -71.5%
map-objects hermes (CI) hermes (CI)
map-objects-untyped.js 1023.6ms 540.6ms
map-objects-typed.js 957.6ms -
map-objects-untyped.js (static) 917.2ms 492.4ms
map-objects-typed.js (static) 728.8ms -
map-strings (4335ms, 1302ms) -70.0%
map-strings hermes (CI) hermes (CI)
map-strings-untyped.js 1196.8ms 659.4ms
map-strings-typed.js 1139.2ms -
map-strings-untyped.js (static) 1092.2ms 642.8ms
map-strings-typed.js (static) 906.8ms -
nbody (3448ms, 1679ms) -51.3%
nbody hermes (CI) hermes (CI)
original/nbody.js 839.6ms 379.8ms
fully-typed/nbody.js 710ms 322.6ms
fully-typed/nbody.ts 865.2ms 377.6ms
original/nbody.js (static) 449.2ms 270ms
fully-typed/nbody.js (static) 135ms 55ms
fully-typed/nbody.ts (static) 449.2ms 274ms
string-switch (6503ms, 3413ms) -47.5%
string-switch (string-switch/plain) hermes (CI) hermes (CI)
bench.js 1316ms 754.8ms
bench.js (static) 5187ms 2658.6ms
raytracer (5608ms, 3232ms) -42.4%
raytracer (raytracer/original) hermes (CI) hermes (CI)
bench-raytracer.js 1550.4ms 898.8ms
raytracer.ts 1667.6ms 882.8ms
bench-raytracer.js (static) 1198.4ms 729.8ms
raytracer.ts (static) 1191.8ms 721ms
MiniReact (30332ms, 12076ms) -60.2%
MiniReact hermes (CI) hermes (CI)
no-objects/out/simple-stripped.js 2239.2ms 463ms
no-objects/out/simple-lowered.js 2270.8ms 473.4ms
no-objects/out/music-stripped.js 42.6ms 27.6ms
no-objects/out/music-lowered.js 47.2ms 28.2ms
no-deps/stripped/MiniReact.js 5004ms 2513ms
no-deps/MiniReact.js 5256.2ms 2503.8ms
no-objects/out/simple.js 2260.4ms 438ms
no-objects/out/music.js 45.6ms 29ms
no-objects/out/simple-stripped.js (static) 1725.2ms 390.8ms
no-objects/out/simple-lowered.js (static) 1725.4ms 391ms
no-objects/out/music-stripped.js (static) 18.8ms 17.8ms
no-objects/out/music-lowered.js (static) 19.4ms 17.6ms
no-deps/stripped/MiniReact.js (static) 4024.8ms 2204.4ms
no-deps/MiniReact.js (static) 3938.2ms 2186ms
no-objects/out/simple.js (static) 1695.2ms 374.4ms
no-objects/out/music.js (static) 19ms 18.4ms
widgets (12934ms, 7099ms) -45.1%
widgets hermes (CI) hermes (CI)
simple-classes/widgets.js 1758.2ms 1227.4ms
original/es5/widgets.js 2798.8ms 1410.4ms
single-file/es5/widgets.js 2775.2ms 1403.2ms
simple-classes/widgets.js (static) 1012ms 642.6ms
original/es5/widgets.js (static) 2283.2ms 1203.8ms
single-file/es5/widgets.js (static) 2306.2ms 1212ms

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.

3 participants