@tracecode/harness 0.16.4 → 0.16.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +6 -4
  3. package/dist/{browser-runtime-provider-OGJQLGXU.js → browser-runtime-provider-KPQBQ4EG.js} +5 -5
  4. package/dist/{chunk-AAKNIYV6.js → chunk-46XZQOHV.js} +3 -3
  5. package/dist/{chunk-6LE4KEMZ.js → chunk-4PN5YD6J.js} +489 -3
  6. package/dist/{chunk-DTLDQQHA.js → chunk-5KH5ABPQ.js} +72 -1
  7. package/dist/{chunk-5RT5IT4I.js → chunk-B2EM2SZ2.js} +15 -31
  8. package/dist/{chunk-M7SNEZDR.js → chunk-EPBHRROK.js} +3 -3
  9. package/dist/{chunk-Y72C46GE.js → chunk-GXTDL2ML.js} +20 -11
  10. package/dist/{chunk-RCOPAMVR.js → chunk-J2KGF5PU.js} +56 -36
  11. package/dist/core.cjs +19 -10
  12. package/dist/core.js +1 -1
  13. package/dist/cpp-worker-client-UWGDH6HR.js +12 -0
  14. package/dist/{csharp-worker-client-ARGMOB3M.js → csharp-worker-client-4QP2ZBSA.js} +4 -4
  15. package/dist/internal/browser.cjs +72 -0
  16. package/dist/internal/browser.d.cts +19 -1
  17. package/dist/internal/browser.d.ts +19 -1
  18. package/dist/internal/browser.js +3 -1
  19. package/dist/internal/tracekernel-workspace.cjs +19 -10
  20. package/dist/internal/tracekernel-workspace.js +1 -1
  21. package/dist/{java-project-JB5TUIFU.js → java-project-AEQEVBDA.js} +2 -2
  22. package/dist/judge.cjs +885 -89
  23. package/dist/judge.d.cts +6 -0
  24. package/dist/judge.d.ts +6 -0
  25. package/dist/judge.js +237 -23
  26. package/dist/{project-browser-3S2FWEAP.js → project-browser-HFNQEALT.js} +2 -2
  27. package/dist/{project-browser-QN7YOJQQ.js → project-browser-L3A2G2MA.js} +2 -2
  28. package/dist/{project-browser-S4KLCZV7.js → project-browser-OVE7V464.js} +2 -2
  29. package/dist/{project-browser-WDUWUGLZ.js → project-browser-P2H222D7.js} +2 -2
  30. package/dist/{project-browser-HCQCXAYC.js → project-browser-WCSIJY6I.js} +2 -2
  31. package/dist/{python-worker-client-EX6Q2W4L.js → python-worker-client-UCOMTSMU.js} +4 -4
  32. package/dist/tracekernel.cjs +650 -68
  33. package/dist/tracekernel.js +4 -4
  34. package/package.json +14 -5
  35. package/runtime-assets.lock.json +77 -70
  36. package/workers/cpp/cpp-worker.js +53 -43
  37. package/workers/csharp/csharp-worker.js +150 -1
  38. package/workers/javascript/javascript-project-worker.js +18 -9
  39. package/workers/python/python-worker.js +121 -1
  40. package/workers/vendor/csharp/_framework/TraceCode.CSharpHost.wasm +0 -0
  41. package/workers/vendor/csharp/_framework/TraceCode.CSharpJudgeRuntime.wasm +0 -0
  42. package/workers/vendor/csharp/_framework/TraceCode.TraceClrWire.wasm +0 -0
  43. package/workers/vendor/csharp/_framework/dotnet.boot.js +11 -6
  44. package/workers/vendor/csharp/_framework/dotnet.native.wasm +0 -0
  45. package/workers/vendor/csharp/_framework/supportFiles/TraceCode.CSharpHost.dll +0 -0
  46. package/workers/vendor/csharp/_framework/supportFiles/TraceCode.CSharpJudgeRuntime.dll +0 -0
  47. package/workers/vendor/csharp-runner/_framework/assemblies-02.pack +0 -0
  48. package/workers/vendor/csharp-runner/_framework/assemblies-03.pack +0 -0
  49. package/workers/vendor/csharp-runner/_framework/dotnet.boot.js +65 -65
  50. package/dist/cpp-worker-client-HV7RO2P5.js +0 -12
@@ -61,7 +61,7 @@ import {
61
61
  makeTraceKernelSharedSyscallChannel,
62
62
  resolveBrowserRuntimeAssetManifests,
63
63
  resolveBrowserRuntimeAssets
64
- } from "./chunk-5RT5IT4I.js";
64
+ } from "./chunk-B2EM2SZ2.js";
65
65
  import {
66
66
  TRACECC_RUNTIME_ASSET_RELATIVE_PATH,
67
67
  TRACECC_RUNTIME_CONTENT_HASH,
@@ -72,7 +72,7 @@ import {
72
72
  } from "./chunk-EJE2EJDI.js";
73
73
  import {
74
74
  PythonWorkerClient
75
- } from "./chunk-M7SNEZDR.js";
75
+ } from "./chunk-EPBHRROK.js";
76
76
  import {
77
77
  LANGUAGE_RUNTIME_INFOS,
78
78
  LANGUAGE_RUNTIME_OPEN_SOURCE_INFOS,
@@ -236,7 +236,7 @@ import {
236
236
  withRuntimeProjectCommandRunnerCapabilities,
237
237
  withRuntimeTraceOptions,
238
238
  writeRuntimeCommandStdinPipeBytes
239
- } from "./chunk-Y72C46GE.js";
239
+ } from "./chunk-GXTDL2ML.js";
240
240
  import {
241
241
  _await,
242
242
  bounded,
@@ -265,7 +265,7 @@ import {
265
265
  installBrowserExecutionWorkerHost,
266
266
  isLanguageSupported,
267
267
  isRuntimeSafeForUntrustedReuse
268
- } from "./chunk-DTLDQQHA.js";
268
+ } from "./chunk-5KH5ABPQ.js";
269
269
  import {
270
270
  TaggedError,
271
271
  _await as _await2,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tracecode/harness",
3
- "version": "0.16.4",
3
+ "version": "0.16.6",
4
4
  "license": "AGPL-3.0-only",
5
5
  "homepage": "https://tracecode.app",
6
6
  "repository": {
@@ -65,8 +65,8 @@
65
65
  "tsup": "^8.5.0",
66
66
  "tsx": "^4.21.0",
67
67
  "typescript": "^5.0.0",
68
- "@tracecode/tracekernel": "^0.16.4",
69
- "@tracecode/runtime-contracts": "^0.16.4"
68
+ "@tracecode/runtime-contracts": "^0.16.6",
69
+ "@tracecode/tracekernel": "^0.16.6"
70
70
  },
71
71
  "dependencies": {
72
72
  "@datastructures-js/binary-search-tree": "5.4.0",
@@ -96,6 +96,15 @@
96
96
  "build:browser-host": "pnpm exec tsup --config tsup.browser-host.config.ts",
97
97
  "build:tracekernel": "pnpm exec tsup --config tsup.tracekernel.config.ts",
98
98
  "generate:runtime-info": "pnpm exec tsx --tsconfig tsconfig.base.json scripts/generate-runtime-language-info.ts",
99
+ "generate:traceclr-profile": "node scripts/generate-traceclr-algorithm-profile.mjs",
100
+ "audit:traceclr-corpus": "node scripts/audit-traceclr-corpus.mjs",
101
+ "build:traceclr-product-corpus": "node scripts/create-traceclr-product-corpus.mjs",
102
+ "check:traceclr-profile": "node --test tests/test-traceclr-algorithm-profile.mjs tests/test-traceclr-profile-policy.mjs && node --import tsx tests/test-traceclr-wire-codec.ts",
103
+ "check:traceclr-product-profile": "node scripts/generate-traceclr-algorithm-profile.mjs --check && pnpm check:traceclr-profile",
104
+ "build:traceclr-wire-probe": "dotnet build tools/TraceCode.TraceClrWireProbe/TraceCode.TraceClrWireProbe.csproj -c Release && dotnet build tools/TraceCode.TraceClrHostileProbe/TraceCode.TraceClrHostileProbe.csproj -c Release && dotnet publish packages/runtime-csharp/dotnet/TraceCode.CSharpAlgorithmRunner/TraceCode.CSharpAlgorithmRunner.csproj -c Release",
105
+ "test:traceclr-wire-browser": "pnpm build:traceclr-wire-probe && TRACECODE_TRACECLR_BROWSER_ENGINE=chromium node --import tsx tests/test-traceclr-wire-runner-browser.ts && TRACECODE_TRACECLR_BROWSER_ENGINE=firefox node --import tsx tests/test-traceclr-wire-runner-browser.ts && TRACECODE_TRACECLR_BROWSER_ENGINE=webkit node --import tsx tests/test-traceclr-wire-runner-browser.ts",
106
+ "bench:traceclr-tiers": "pnpm build:traceclr-wire-probe && pnpm materialize:csharp-role-assets && node --import tsx scripts/benchmark-traceclr-runtime-tiers.ts",
107
+ "bench:traceclr-tiers:matrix": "pnpm build:traceclr-wire-probe && pnpm materialize:csharp-role-assets && for engine in chromium firefox webkit; do TRACECODE_TRACECLR_BROWSER_ENGINE=$engine node --import tsx scripts/benchmark-traceclr-runtime-tiers.ts || exit; done",
99
108
  "generate:runtime-open-source-info": "pnpm exec tsx --tsconfig tsconfig.base.json scripts/generate-runtime-open-source-info.ts",
100
109
  "generate:python-harness": "pnpm exec tsx --tsconfig tsconfig.base.json scripts/generate-python-harness-artifacts.ts",
101
110
  "generate:runtime-assets-lock": "node --import tsx scripts/generate-runtime-assets-lock.mjs",
@@ -159,10 +168,10 @@
159
168
  "test:java-runtime": "pnpm exec tsx --tsconfig tsconfig.base.json tests/test-java-runtime.ts && pnpm exec tsx --tsconfig tsconfig.base.json tests/test-java-project-filesystem.ts && node --import tsx --test tests/test-java-jar-manifest.ts && pnpm exec tsx --tsconfig tsconfig.base.json tests/test-java-project-provider.ts && TSX_TSCONFIG_PATH=tsconfig.base.json node --import tsx --test tests/test-java-prepared-provider.ts",
160
169
  "test:java-prepared-provider": "TSX_TSCONFIG_PATH=tsconfig.base.json node --import tsx --test tests/test-java-prepared-provider.ts && pnpm exec tsx --tsconfig tsconfig.base.json tests/test-java-prepared-provider-browser.ts",
161
170
  "test:tracejvm-semantic-trace": "node --import tsx tests/test-tracejvm-semantic-trace-matrix.ts",
162
- "test:csharp-runtime": "pnpm exec tsx --tsconfig tsconfig.base.json scripts/validate-csharp-runtime-role-assets.ts && TSX_TSCONFIG_PATH=tsconfig.base.json node --import tsx --test tests/test-csharp-role-artifacts.ts tests/test-csharp-managed-assembly-packs.ts && pnpm exec tsx --tsconfig tsconfig.base.json tests/test-csharp-runtime.ts && TSX_TSCONFIG_PATH=tsconfig.base.json node --import tsx --test tests/test-csharp-prepared-provider.ts && pnpm exec tsx --tsconfig tsconfig.base.json tests/test-csharp-project-fs-parity.ts",
171
+ "test:csharp-runtime": "pnpm check:traceclr-profile && pnpm exec tsx --tsconfig tsconfig.base.json scripts/validate-csharp-runtime-role-assets.ts && TSX_TSCONFIG_PATH=tsconfig.base.json node --import tsx --test tests/test-csharp-role-artifacts.ts tests/test-csharp-managed-assembly-packs.ts && pnpm exec tsx --tsconfig tsconfig.base.json tests/test-csharp-runtime.ts && TSX_TSCONFIG_PATH=tsconfig.base.json node --import tsx --test tests/test-csharp-prepared-provider.ts && pnpm exec tsx --tsconfig tsconfig.base.json tests/test-csharp-project-fs-parity.ts",
163
172
  "test:csharp-role-assets": "pnpm materialize:csharp-role-assets && TSX_TSCONFIG_PATH=tsconfig.base.json node --import tsx --test tests/test-csharp-role-artifacts.ts tests/test-csharp-managed-assembly-packs.ts && pnpm exec tsx --tsconfig tsconfig.base.json scripts/validate-csharp-runtime-role-assets.ts",
164
173
  "test:csharp-worker-browser": "pnpm materialize:csharp-role-assets && pnpm exec tsx --tsconfig tsconfig.base.json tests/test-csharp-worker-client-http.ts && pnpm exec tsx --tsconfig tsconfig.base.json tests/test-csharp-worker-browser.ts && pnpm exec tsx --tsconfig tsconfig.base.json tests/test-csharp-worker-lifecycle-browser.ts && pnpm exec tsx --tsconfig tsconfig.base.json tests/test-csharp-prepared-boundary-browser.ts",
165
- "test:csharp-worker-browser-matrix": "pnpm materialize:csharp-role-assets && TRACECODE_CSHARP_BROWSER_SMOKE=1 TRACECODE_CSHARP_BROWSER_ENGINE=chromium pnpm exec tsx --tsconfig tsconfig.base.json tests/test-csharp-worker-browser.ts && TRACECODE_CSHARP_BROWSER_SMOKE=1 TRACECODE_CSHARP_BROWSER_ENGINE=firefox pnpm exec tsx --tsconfig tsconfig.base.json tests/test-csharp-worker-browser.ts && TRACECODE_CSHARP_BROWSER_SMOKE=1 TRACECODE_CSHARP_BROWSER_ENGINE=webkit pnpm exec tsx --tsconfig tsconfig.base.json tests/test-csharp-worker-browser.ts",
174
+ "test:csharp-worker-browser-matrix": "pnpm materialize:csharp-role-assets && for engine in chromium firefox webkit; do TSX_TSCONFIG_PATH=tsconfig.base.json TRACECODE_CSHARP_BROWSER_SMOKE=1 TRACECODE_CSHARP_BROWSER_ENGINE=$engine node --import tsx tests/test-csharp-worker-browser.ts && TSX_TSCONFIG_PATH=tsconfig.base.json TRACECODE_CSHARP_BROWSER_ENGINE=$engine node --import tsx tests/test-csharp-prepared-boundary-browser.ts || exit; done",
166
175
  "test:cpp-runtime": "pnpm exec tsx --tsconfig tsconfig.base.json tests/test-cpp-runtime.ts",
167
176
  "test:cpp-conformance": "pnpm exec tsx --tsconfig tsconfig.base.json tests/test-cpp-conformance.ts",
168
177
  "test:cpp-script-lambda-trace": "pnpm exec tsx --tsconfig tsconfig.base.json tests/test-cpp-script-lambda-trace.ts",
@@ -2,23 +2,23 @@
2
2
  "schema": "tracecode.runtime-assets-lock.v1",
3
3
  "harness": {
4
4
  "name": "@tracecode/harness",
5
- "version": "0.16.4",
6
- "releaseId": "@tracecode/harness@0.16.4+sha256.af3783bba7880dfac3b84fe91f86eba8c9e9d99e710ae2533d475f4396cbe03d"
5
+ "version": "0.16.6",
6
+ "releaseId": "@tracecode/harness@0.16.6+sha256.ef4c9a8eac24498f6a5aa23d39ecaf63efaaaf168d4470fb8de60d8ba0ccbca6"
7
7
  },
8
8
  "treeSha256Algorithm": "sha256-path-nul-bytes-nul-v1",
9
- "packageTreeSha256": "af3783bba7880dfac3b84fe91f86eba8c9e9d99e710ae2533d475f4396cbe03d",
10
- "totalPackagedRuntimeBytes": 151629893,
9
+ "packageTreeSha256": "ef4c9a8eac24498f6a5aa23d39ecaf63efaaaf168d4470fb8de60d8ba0ccbca6",
10
+ "totalPackagedRuntimeBytes": 151720964,
11
11
  "components": {
12
12
  "cpp": {
13
- "releaseId": "cpp+sha256.f7ec285e637629ebd2b8b9da47b5df04150d50cb4a9f00efe23f864b1e3e6957",
14
- "treeSha256": "f7ec285e637629ebd2b8b9da47b5df04150d50cb4a9f00efe23f864b1e3e6957",
15
- "totalBytes": 877989,
13
+ "releaseId": "cpp+sha256.9340d58c47a65abceff7fa7a783b57d01550d697013c2b50782aec77e6b19816",
14
+ "treeSha256": "9340d58c47a65abceff7fa7a783b57d01550d697013c2b50782aec77e6b19816",
15
+ "totalBytes": 878379,
16
16
  "files": [
17
17
  {
18
18
  "path": "workers/cpp/cpp-worker.js",
19
- "size": 614906,
20
- "sha256": "cf4210093a1fc80238e01471b707978a6392d5d2d600292d8570713c3d143cb6",
21
- "integrity": "sha256-z0IQCTofyAI44BRxtweXimOS1dLWACkthXBxPD0UPLY=",
19
+ "size": 615296,
20
+ "sha256": "7f0cd1e899c357ace33cf18ea2b9026c0964845a661771493e2f76e6ff41052f",
21
+ "integrity": "sha256-fwzR6JnDV6zjPPGOorkCbAlkhFpmF3FJPi925v9BBS8=",
22
22
  "mediaType": "text/javascript"
23
23
  },
24
24
  {
@@ -31,15 +31,15 @@
31
31
  ]
32
32
  },
33
33
  "csharp": {
34
- "releaseId": "csharp+sha256.c5668959d8778cff140d31d9607959cd6813801ac70d6b7d08a151ca666cf9ab",
35
- "treeSha256": "c5668959d8778cff140d31d9607959cd6813801ac70d6b7d08a151ca666cf9ab",
36
- "totalBytes": 63253709,
34
+ "releaseId": "csharp+sha256.25b83301cc80d13079573f9232daa26689f548d654d84ee974abb8c3e6781ee5",
35
+ "treeSha256": "25b83301cc80d13079573f9232daa26689f548d654d84ee974abb8c3e6781ee5",
36
+ "totalBytes": 63338790,
37
37
  "files": [
38
38
  {
39
39
  "path": "workers/csharp/csharp-worker.js",
40
- "size": 150523,
41
- "sha256": "c30fefcbd233168ff00369b6103206abb4c87ea7d554fbe129335a77aa7c22cc",
42
- "integrity": "sha256-ww/vy9IzFo/wA2m2EDIGq7TIfqfVVPvhKTNad6p8Isw=",
40
+ "size": 155773,
41
+ "sha256": "706e07281beade272d5c5111f4930b46c387a1140b27428d5b843b822a396f1c",
42
+ "integrity": "sha256-cG4HKBvq3ictXFER9JMLRsOHoRQLJ0KNW4Q7gio5bxw=",
43
43
  "mediaType": "text/javascript"
44
44
  },
45
45
  {
@@ -58,23 +58,23 @@
58
58
  },
59
59
  {
60
60
  "path": "workers/vendor/csharp-runner/_framework/assemblies-02.pack",
61
- "size": 2392677,
62
- "sha256": "816cf9063e9a4bf32007fb15cedcd68617658a6184727b3ba2f67019d25732d9",
63
- "integrity": "sha256-gWz5Bj6aS/MgB/sVztzWhhdlimGEcns7ovZwGdJXMtk=",
61
+ "size": 2394266,
62
+ "sha256": "c3538c279f756dacdcfe7b91ab2a017778e45d37c4625519e7e9d5c716dd3a57",
63
+ "integrity": "sha256-w1OMJ591bazc/nuRqyoBd3jkXTfEYlUZ5+nVxxbdOlc=",
64
64
  "mediaType": "application/octet-stream"
65
65
  },
66
66
  {
67
67
  "path": "workers/vendor/csharp-runner/_framework/assemblies-03.pack",
68
- "size": 2389068,
69
- "sha256": "236655690bbc9d6c02c00c64f9ee48460b3951a531601debf60e735064caa658",
70
- "integrity": "sha256-I2ZVaQu8nWwCwAxk+e5IRgs5UaUxYB3r9g5zUGTKplg=",
68
+ "size": 2397213,
69
+ "sha256": "857eebf21f91e987d5ec8f2f21a922eb688f256555d455777b6dfdf169d7fb48",
70
+ "integrity": "sha256-hX7r8h+R6YfV7I8vIaki62iPJWVV1FV3e2398WnX+0g=",
71
71
  "mediaType": "application/octet-stream"
72
72
  },
73
73
  {
74
74
  "path": "workers/vendor/csharp-runner/_framework/dotnet.boot.js",
75
75
  "size": 23688,
76
- "sha256": "e5e55ca994af04e2d3250efafb2b7f0c264f02b5838ef6c30be2f060b2e7abce",
77
- "integrity": "sha256-5eVcqZSvBOLTJQ76+yt/DCZPArWDjvbDC+LwYLLnq84=",
76
+ "sha256": "1c6493928c05985df26c87bbe7a42d96922674968f165f7fdee18bfe4538138e",
77
+ "integrity": "sha256-HGSTkowFmF3ybIe756QtlpImdJaPFl9/3uGL/kU4E44=",
78
78
  "mediaType": "text/javascript"
79
79
  },
80
80
  {
@@ -1185,16 +1185,23 @@
1185
1185
  },
1186
1186
  {
1187
1187
  "path": "workers/vendor/csharp/_framework/TraceCode.CSharpHost.wasm",
1188
- "size": 600341,
1189
- "sha256": "d67f1437f52f504154844b16041752912b57760d43b0f009a6328b91e6500cff",
1190
- "integrity": "sha256-1n8UN/UvUEFUhEsWBBdSkStXdg1DsPAJpjKLkeZQDP8=",
1188
+ "size": 609045,
1189
+ "sha256": "26f9d49b079d8eec55a2bf58d3eb79181b9ddcb0939b2e88900e69d95bfe1343",
1190
+ "integrity": "sha256-JvnUmwedjuxVor9Y0+t5GBud3LCTmy6IkA5p2Vv+E0M=",
1191
1191
  "mediaType": "application/wasm"
1192
1192
  },
1193
1193
  {
1194
1194
  "path": "workers/vendor/csharp/_framework/TraceCode.CSharpJudgeRuntime.wasm",
1195
- "size": 88853,
1196
- "sha256": "05e590971bbf1750170091a366c25edcb3bb43f888835aeb307983bdbc293731",
1197
- "integrity": "sha256-BeWQlxu/F1AXAJGjZsJe3LO7Q/iIg1rrMHmDvbwpNzE=",
1195
+ "size": 93973,
1196
+ "sha256": "fa90eda3aad42debb9d4d73f4463cd47b7dd1477058c4e3f9d392e1e7b1bc227",
1197
+ "integrity": "sha256-+pDto6rULeu51Nc/RGPNR7fdFHcFjE4/nTkuHnsbwic=",
1198
+ "mediaType": "application/wasm"
1199
+ },
1200
+ {
1201
+ "path": "workers/vendor/csharp/_framework/TraceCode.TraceClrWire.wasm",
1202
+ "size": 42261,
1203
+ "sha256": "bc3cdf1f6939098b0733baf6c8cb02d4e39efaf8c0935ddd4657e251147867a1",
1204
+ "integrity": "sha256-vDzfH2k5CYsHM7r2yMsC1OOe+vjAk13dRlfiURR4Z6E=",
1198
1205
  "mediaType": "application/wasm"
1199
1206
  },
1200
1207
  {
@@ -1234,9 +1241,9 @@
1234
1241
  },
1235
1242
  {
1236
1243
  "path": "workers/vendor/csharp/_framework/dotnet.boot.js",
1237
- "size": 48400,
1238
- "sha256": "f446c287a3fbc9c2c1c652f06cbcbe2e9119c866d2cf1a22ac8d427e49031736",
1239
- "integrity": "sha256-9EbCh6P7ycLBxlLwbLy+LpEZyGbSzxoirI1CfkkDFzY=",
1244
+ "size": 48588,
1245
+ "sha256": "c5fb7a2dbbbefb240e4c9404ae202aedbd2f73824c71fefb9a69dcca72f2a683",
1246
+ "integrity": "sha256-xft6Lbu++yQOTJQEriAq7b0vc4JMcf77mmncynLypoM=",
1240
1247
  "mediaType": "text/javascript"
1241
1248
  },
1242
1249
  {
@@ -1263,8 +1270,8 @@
1263
1270
  {
1264
1271
  "path": "workers/vendor/csharp/_framework/dotnet.native.wasm",
1265
1272
  "size": 3005101,
1266
- "sha256": "dfb056c4aa63210d3999b3239df8ff1de0d5a798d6a7d25ecc7e1ba99fe9092a",
1267
- "integrity": "sha256-37BWxKpjIQ05mbMjnfj/HeDVp5jWp9JezH4bqZ/pCSo=",
1273
+ "sha256": "c5c8cb73a90392e70fd1c303f85ca70468b7fb940c1f2f80a5d4c6a4a95c8184",
1274
+ "integrity": "sha256-xcjLc6kDkucP0cMD+FynBGi3+5QMHy+ApdTGpKlcgYQ=",
1268
1275
  "mediaType": "application/wasm"
1269
1276
  },
1270
1277
  {
@@ -1717,16 +1724,16 @@
1717
1724
  },
1718
1725
  {
1719
1726
  "path": "workers/vendor/csharp/_framework/supportFiles/TraceCode.CSharpHost.dll",
1720
- "size": 600576,
1721
- "sha256": "b557073b2b448560c0742fe9d1303690b35303730e1cc7221acdab31358f3e4d",
1722
- "integrity": "sha256-tVcHOytEhWDAdC/p0TA2kLNTA3MOHMciGs2rMTWPPk0=",
1727
+ "size": 609280,
1728
+ "sha256": "0d4e134c0888b852a01951badfa08f507e28b5b64f29d9f16168e188548033fa",
1729
+ "integrity": "sha256-DU4TTAiIuFKgGVG636CPUH4otbZPKdnxYWjhiFSAM/o=",
1723
1730
  "mediaType": "application/octet-stream"
1724
1731
  },
1725
1732
  {
1726
1733
  "path": "workers/vendor/csharp/_framework/supportFiles/TraceCode.CSharpJudgeRuntime.dll",
1727
- "size": 89088,
1728
- "sha256": "76c31619c874bdce7d33530037be9b9cfd6352ff152b20457742f608bf0d3397",
1729
- "integrity": "sha256-dsMWGch0vc59M1MAN76bnP1jUv8VKyBFd0L2CL8NM5c=",
1734
+ "size": 94208,
1735
+ "sha256": "a659062910ef9f9b2e7a41d16223908aa5ec8f63981597cfa97c4e8f9eda54c4",
1736
+ "integrity": "sha256-plkGKRDvn5suekHRYiOQiqXsj2OYFZfPqXxOj57aVMQ=",
1730
1737
  "mediaType": "application/octet-stream"
1731
1738
  },
1732
1739
  {
@@ -1837,15 +1844,15 @@
1837
1844
  ]
1838
1845
  },
1839
1846
  "javascript": {
1840
- "releaseId": "javascript+sha256.b8a0cb68bfd698c61e76b60c2846f65153482c7e0034a0cfe77b83ae906d77ff",
1841
- "treeSha256": "b8a0cb68bfd698c61e76b60c2846f65153482c7e0034a0cfe77b83ae906d77ff",
1842
- "totalBytes": 1202891,
1847
+ "releaseId": "javascript+sha256.2e99bedc70ad8ba39260b07c338afc3cc25ef6eed1d9d7fde598b0497a1a981e",
1848
+ "treeSha256": "2e99bedc70ad8ba39260b07c338afc3cc25ef6eed1d9d7fde598b0497a1a981e",
1849
+ "totalBytes": 1204569,
1843
1850
  "files": [
1844
1851
  {
1845
1852
  "path": "workers/javascript/javascript-project-worker.js",
1846
- "size": 561093,
1847
- "sha256": "019715545f0a552ee538a34525f38b98c967e75a07b8737ad536d8c37de78e52",
1848
- "integrity": "sha256-AZcVVF8KVS7lOKNFJfOLmMln51oHuHN61TbYw33njlI=",
1853
+ "size": 562771,
1854
+ "sha256": "f2272dbe3ba670cd3518b81c137e500b868d92547f84f4fab326e39647e7cb04",
1855
+ "integrity": "sha256-8ictvjumcM01GLgcE35QC4aNklR/hPT6sybjlkfnywQ=",
1849
1856
  "mediaType": "text/javascript"
1850
1857
  },
1851
1858
  {
@@ -1865,9 +1872,9 @@
1865
1872
  ]
1866
1873
  },
1867
1874
  "python": {
1868
- "releaseId": "python+sha256.ed863ad996ef8a63adc9f083f1d98e52851e5b19d930c97db4b1463aa3a9fc71",
1869
- "treeSha256": "ed863ad996ef8a63adc9f083f1d98e52851e5b19d930c97db4b1463aa3a9fc71",
1870
- "totalBytes": 75901287,
1875
+ "releaseId": "python+sha256.03ea58bb2847423becc2062888653e6a3175a2903915c95fb0b7b82444a9678f",
1876
+ "treeSha256": "03ea58bb2847423becc2062888653e6a3175a2903915c95fb0b7b82444a9678f",
1877
+ "totalBytes": 75905209,
1871
1878
  "files": [
1872
1879
  {
1873
1880
  "path": "workers/python/generated-python-harness-snippets.js",
@@ -1948,9 +1955,9 @@
1948
1955
  },
1949
1956
  {
1950
1957
  "path": "workers/python/python-worker.js",
1951
- "size": 371036,
1952
- "sha256": "3cda89afaa2a5d3b94303ee0b90e0a34bd3caa1fd682e24d8de0bc7da26d28fc",
1953
- "integrity": "sha256-PNqJr6oqXTuUMD7guQ4KNL08qh/WguJNjeC8faJtKPw=",
1958
+ "size": 374958,
1959
+ "sha256": "d9249256d4ca31a0ec07f6808eae01e67096e4dd17d12f20b77439860ed4ab3a",
1960
+ "integrity": "sha256-2SSSVtTKMaDsB/aAjq4B5nCW5N0X0S8gt3Q5hg7Uqzo=",
1954
1961
  "mediaType": "text/javascript"
1955
1962
  },
1956
1963
  {
@@ -2076,28 +2083,28 @@
2076
2083
  },
2077
2084
  "roles": {
2078
2085
  "general": {
2079
- "artifact": "csharp-bundle.ccb3b907ca9ac499fcbb5bfcd69e9b15b2e91c4795b3447dae45bbce2101a39b.zip",
2080
- "artifactBytes": 18090801,
2081
- "artifactSha256": "ccb3b907ca9ac499fcbb5bfcd69e9b15b2e91c4795b3447dae45bbce2101a39b",
2082
- "fileCount": 241,
2083
- "treeSha256": "048b8965cf9da12e855984e4b9c123f0efd609ca3509e3610005e8ab03775732",
2084
- "uncompressedBytes": 50278333
2086
+ "artifact": "csharp-bundle.fec59d84ca62d184052542d144d3f2a2104f3508ce5ddff6f6eefa9ea2575b6e.zip",
2087
+ "artifactBytes": 18115878,
2088
+ "artifactSha256": "fec59d84ca62d184052542d144d3f2a2104f3508ce5ddff6f6eefa9ea2575b6e",
2089
+ "fileCount": 242,
2090
+ "treeSha256": "99c0887631de223b8929ec032067004bb4536be746bc687952ef4c6c4f633a42",
2091
+ "uncompressedBytes": 50348430
2085
2092
  },
2086
2093
  "compiler": {
2087
- "artifact": "csharp-bundle.ccb3b907ca9ac499fcbb5bfcd69e9b15b2e91c4795b3447dae45bbce2101a39b.zip",
2088
- "artifactBytes": 18090801,
2089
- "artifactSha256": "ccb3b907ca9ac499fcbb5bfcd69e9b15b2e91c4795b3447dae45bbce2101a39b",
2090
- "fileCount": 241,
2091
- "treeSha256": "048b8965cf9da12e855984e4b9c123f0efd609ca3509e3610005e8ab03775732",
2092
- "uncompressedBytes": 50278333
2094
+ "artifact": "csharp-bundle.fec59d84ca62d184052542d144d3f2a2104f3508ce5ddff6f6eefa9ea2575b6e.zip",
2095
+ "artifactBytes": 18115878,
2096
+ "artifactSha256": "fec59d84ca62d184052542d144d3f2a2104f3508ce5ddff6f6eefa9ea2575b6e",
2097
+ "fileCount": 242,
2098
+ "treeSha256": "99c0887631de223b8929ec032067004bb4536be746bc687952ef4c6c4f633a42",
2099
+ "uncompressedBytes": 50348430
2093
2100
  },
2094
2101
  "runner": {
2095
- "artifact": "csharp-bundle.544a1a0d3cea836a8e973ee09b2cc480ebbf87440baa197f984928fb31780ac7.zip",
2096
- "artifactBytes": 4677741,
2097
- "artifactSha256": "544a1a0d3cea836a8e973ee09b2cc480ebbf87440baa197f984928fb31780ac7",
2102
+ "artifact": "csharp-bundle.ed7edfe55366ff19659e9e67849e4bbe331226f8425898359ada3be0c72dbda9.zip",
2103
+ "artifactBytes": 4678859,
2104
+ "artifactSha256": "ed7edfe55366ff19659e9e67849e4bbe331226f8425898359ada3be0c72dbda9",
2098
2105
  "fileCount": 12,
2099
- "treeSha256": "84428c9bfc1d4dd085a314b3199e809ad9201dc87f0eb7cda8bdb5bf10295654",
2100
- "uncompressedBytes": 12824853
2106
+ "treeSha256": "c1fd0d46132ba3a202e8eb71311a04521ca315a138f261add36fb6e11cfc61a2",
2107
+ "uncompressedBytes": 12834587
2101
2108
  }
2102
2109
  }
2103
2110
  }
@@ -13927,51 +13927,27 @@ async function loadTraceccCompiler(request) {
13927
13927
  if (traceccCompilerPromise) return traceccCompilerPromise;
13928
13928
  traceccCompilerPromise = (async () => {
13929
13929
  const [
13930
- compilerResponse,
13931
- resourceResponse,
13930
+ compilerAsset,
13931
+ resourceAsset,
13932
13932
  ] = await Promise.all([
13933
- fetchPinnedTraceccAssetResponse(
13934
- 'TraceCC compiler',
13935
- String(request?.traceccCompilerUrl || '')
13933
+ loadTraceccCompilerAsset(
13934
+ request?.traceccCompilerUrl,
13935
+ 'compiler'
13936
13936
  ),
13937
- fetchPinnedTraceccAssetResponse(
13938
- 'TraceCC resources',
13939
- String(request?.traceccResourcesUrl || '')
13937
+ loadTraceccCompilerAsset(
13938
+ request?.traceccResourcesUrl,
13939
+ 'resources'
13940
13940
  ),
13941
13941
  ]);
13942
- if (!compilerResponse.ok) {
13943
- throw new Error(
13944
- `TraceCC compiler fetch failed (${compilerResponse.status} ${compilerResponse.statusText})`
13945
- );
13942
+ if (!(compilerAsset instanceof Uint8Array)) {
13943
+ throw new Error('TraceCC compiler bytes are unavailable.');
13946
13944
  }
13947
- if (!resourceResponse.ok) {
13948
- throw new Error(
13949
- `TraceCC resource fetch failed (${resourceResponse.status} ${resourceResponse.statusText})`
13950
- );
13945
+ if (!(resourceAsset instanceof Uint8Array)) {
13946
+ throw new Error('TraceCC resource bytes are unavailable.');
13951
13947
  }
13952
- const compilerBytes =
13953
- Number(compilerResponse.headers.get('content-length')) || 0;
13954
- const compilerContentType = String(
13955
- compilerResponse.headers.get('content-type') || ''
13956
- )
13957
- .split(';', 1)[0]
13958
- .trim()
13959
- .toLowerCase();
13960
- const modulePromise =
13961
- request?.compileStreaming !== false &&
13962
- typeof WebAssembly.compileStreaming === 'function' &&
13963
- compilerContentType === 'application/wasm'
13964
- ? WebAssembly.compileStreaming(compilerResponse)
13965
- : compilerResponse
13966
- .arrayBuffer()
13967
- .then((buffer) => WebAssembly.compile(buffer));
13968
- const [
13969
- module,
13970
- resourceBuffer,
13971
- ] = await Promise.all([
13972
- modulePromise,
13973
- resourceResponse.arrayBuffer(),
13974
- ]);
13948
+ const compilerBytes = compilerAsset.byteLength;
13949
+ const resourceBuffer = arrayBufferFromBytes(resourceAsset);
13950
+ const module = await WebAssembly.compile(compilerAsset);
13975
13951
  const memoryImports = WebAssembly.Module.imports(module).filter(
13976
13952
  (item) => item.kind === 'memory'
13977
13953
  );
@@ -14004,7 +13980,7 @@ async function loadTraceccCompiler(request) {
14004
13980
  fsTemplate: fs,
14005
13981
  compilerBytes,
14006
13982
  linkerBytes: compilerBytes,
14007
- resourceBytes: resourceBuffer.byteLength,
13983
+ resourceBytes: resourceAsset.byteLength,
14008
13984
  reactorPromise: null,
14009
13985
  };
14010
13986
  })();
@@ -14088,6 +14064,29 @@ async function loadTraceccCompilationAssets(request) {
14088
14064
  );
14089
14065
  }
14090
14066
 
14067
+ async function prewarmTraceccAssets(request) {
14068
+ const assets = await Promise.all([
14069
+ loadTraceccCompilerAsset(
14070
+ request?.traceccCompilerUrl,
14071
+ 'compiler'
14072
+ ),
14073
+ loadTraceccCompilerAsset(
14074
+ request?.traceccResourcesUrl,
14075
+ 'resources'
14076
+ ),
14077
+ loadTraceccCompilationAssets(request),
14078
+ ]);
14079
+ const [compiler, resources, compilationAssets] = assets;
14080
+ return {
14081
+ success: true,
14082
+ compilerBytes: compiler?.byteLength || 0,
14083
+ resourceBytes: resources?.byteLength || 0,
14084
+ pchBytes: compilationAssets.pch?.bytes?.byteLength || 0,
14085
+ runtimeObjectBytes:
14086
+ compilationAssets.runtimeObject?.bytes?.byteLength || 0,
14087
+ };
14088
+ }
14089
+
14091
14090
  function mountTraceccCompilationAssets(fs, assets) {
14092
14091
  const mountedRoots = new Set(fs.readOnlyFiles);
14093
14092
  for (const asset of Object.values(assets)) {
@@ -16145,8 +16144,11 @@ self.onmessage = (event) => {
16145
16144
  if (
16146
16145
  (traceccCompilerWorker &&
16147
16146
  type !== 'init' &&
16148
- type !== 'compile-trusted-tracecc') ||
16149
- (!traceccCompilerWorker && type === 'compile-trusted-tracecc')
16147
+ type !== 'compile-trusted-tracecc' &&
16148
+ type !== 'prewarm-trusted-tracecc-assets') ||
16149
+ (!traceccCompilerWorker &&
16150
+ (type === 'compile-trusted-tracecc' ||
16151
+ type === 'prewarm-trusted-tracecc-assets'))
16150
16152
  ) {
16151
16153
  trustedCppWorkerPostMessage({
16152
16154
  id,
@@ -16154,7 +16156,7 @@ self.onmessage = (event) => {
16154
16156
  type: 'error',
16155
16157
  payload: {
16156
16158
  error: traceccCompilerWorker
16157
- ? `The TraceCC compiler Worker at ${String(self.location?.href || '')} rejected "${String(type)}"; it accepts only initialization and trusted compile requests.`
16159
+ ? `The TraceCC compiler Worker at ${String(self.location?.href || '')} rejected "${String(type)}"; it accepts only initialization, asset prewarm, and trusted compile requests.`
16158
16160
  : 'Trusted TraceCC compilation is unavailable in a learner runner.',
16159
16161
  },
16160
16162
  });
@@ -16201,6 +16203,14 @@ self.onmessage = (event) => {
16201
16203
  case 'compile-trusted-tracecc':
16202
16204
  result = await handleTrustedTraceccCompile(payload);
16203
16205
  break;
16206
+ case 'prewarm-trusted-tracecc-assets':
16207
+ if (payload?.source !== 'tracecc-prewarm-assets-v1') {
16208
+ throw new Error(
16209
+ 'The trusted TraceCC prewarm lane only accepts the fixed asset protocol.'
16210
+ );
16211
+ }
16212
+ result = await prewarmTraceccAssets(payload);
16213
+ break;
16204
16214
  case 'execute-project-cpp':
16205
16215
  result = await withRuntimeUserAuthorityLockdown(
16206
16216
  () => handleProjectCpp(