WIP: user-script AOT multipart refresh (#15624)#15679
Conversation
…15624). Add MultipartNativeJitHelper and MultipartRuntime bridge for multipart/form-data populate into native sg_* tables; disable stale MCJIT cache during user-script AOT link so refresh LLVM matches current SuperglobalRefreshUserScriptLlvm. Runtime populate still under investigation — FileUploadWebAotExecuteTest red. Co-authored-by: Cursor <cursoragent@cursor.com>
…ipart prerequisites. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Maintainer triage 2026-07-04: PR body correctly marks FileUploadWeb AOT gate red — not merge-ready. Blocker note (empty |
|
Maintainer triage 2026-07-04: repro still expected-red per PR body — |
|
Maintainer triage 2026-07-04: PR body confirms FileUploadWeb AOT gate still red ( |
|
Maintainer triage 2026-07-04: bootstrap link+helloworld green on master. Re-ran issue repro scope — still WIP per PR body (FileUploadWebAotExecuteTest red). Hold merge until |
|
Maintainer review (2026-07-04): Not merge-ready — PR body confirms FileUploadWebAotExecuteTest still red ( |
|
Maintainer triage (2026-07-04): Not merge-ready — PR body documents FileUploadWeb AOT gate still red ( Related open FCC/superglobal work: #15624. |
|
Maintainer triage (2026-07-04): Confirmed WIP — PR body documents FileUploadWeb AOT gate still red ( Bootstrap link + helloworld green on |
|
Maintainer triage 2026-07-04: PR still WIP per body (AOT execute gate red — isset on FILES doc is false). Holding merge until FileUploadWeb repro is green locally. |
|
Maintainer triage 2026-07-05: keeping open as WIP — PR body confirms FileUploadWeb AOT execute gate still red ( Bootstrap gates on master this run: |
|
Maintainer triage 2026-07-05: still WIP — PR body notes FileUploadWebAotExecuteTest red ( |
|
Maintainer triage 2026-07-05: Still WIP per PR body — FileUploadWeb AOT gate red ( |
|
Maintainer triage 2026-07-05: left open — PR body documents FileUploadWeb AOT gate still red ( |
Summary
MultipartNativeJitHelper(php-in-PHP multipart populate into native__hashtable__*, SSOTMultipartParser)MultipartRuntimebridge__compiler_multipart_populate_post_bodyfor user-script AOT refreshSuperglobalRefreshUserScriptLlvmPOST populate through the bridge (readsCONTENT_TYPE+REQUEST_BODY)compile.php: forcePHP_COMPILER_CACHE=0andPHP_COMPILER_SELFHOST_AOT=0during user-script AOT link (Regression: 006-FileUploadWeb AOT execute — multipart POST no longer populates $_FILES, binary renders empty state (lib/Web/MultipartParser.php) #15624 stale-cache guard)Verification (Docker, not green yet)
./script/docker-exec.sh -- bash -lc 'source script/php-env.sh && cd /compiler && rm -rf examples/006-FileUploadWeb/.phpc .php-compiler-cache && ./phpc build --project examples/006-FileUploadWeb && FILE_UPLOAD_WEB_AOT_SMOKE_GATE=1 vendor/bin/phpunit --filter FileUploadWebAotExecuteTest'Result: FAIL — binary runs exit 0 but
isset($_FILES['doc'])false / empty upload state.Unit (pass):
Blocker / next
Bridge + helper symbols link (
nm … | grep multipart_populate) but runtime$_FILESremains empty. Likely needs runtime trace ofsg_FILESafter__compiler_multipart_populate_post_body(native ht writes from nested JIT helper) — may share root cause withRuntimeSuperglobalRefreshTest::testTwoRequestsDifferentQueryString($_GETempty on user-script AOT).Closes #15624 when FileUploadWeb AOT execute gate is green.
Made with Cursor