Problem
Deploy and temp-file cleanup in compiled web apps need unlink():
Today only VM-adjacent file ops exist in patches; there is no unlink builtin in ext/standard/ with JIT/AOT lowering.
Goal
unlink(string $filename): bool with VM + JIT + AOT parity (libc unlink(2)), matching Zend semantics for missing files (false + warning).
Scope
Implementation hints
| Layer |
Files |
Notes |
| Register |
ext/standard/ manifest, lib/JIT/Builtin/registry |
Follow rename() / #771 pattern |
| VM |
lib/VM.php builtin dispatch |
Return bool |
| JIT |
lib/JIT/Builtin/JitUnlink.php |
char* path from PHP string |
| Capability |
script/capability-matrix.php |
Regenerate row |
// Minimal compliance case:
$file = sys_get_temp_dir() . '/phpc_unlink_test_' . getmypid();
file_put_contents($file, 'x');
var_export(unlink($file));
var_export(unlink($file)); // false
Acceptance criteria
./script/ci-fast.sh --filter UnlinkBuiltin
./script/ci-local.sh --filter unlink.phpt # @group llvm when JIT/AOT enabled
Docker:
docker run --rm -v "$(pwd):/compiler" -w /compiler php-compiler:22.04-dev \
./script/ci-fast.sh --filter UnlinkBuiltin
No GitHub Actions.
Dependencies
Links
Problem
Deploy and temp-file cleanup in compiled web apps need
unlink():Today only VM-adjacent file ops exist in patches; there is no
unlinkbuiltin inext/standard/with JIT/AOT lowering.Goal
unlink(string $filename): boolwith VM + JIT + AOT parity (libcunlink(2)), matching Zend semantics for missing files (false+ warning).Scope
ext/standard/unlink.phporlib/VM/Builtin/delegate toVmFs::unlink/unlink()lib/JIT/Builtin/→JitUnlinkcallingunlink(2)VmFslibc wrapperstest/compliance/cases/standard/unlink.phpttest/unit/UnlinkBuiltinTest.php(success + missing file)Implementation hints
ext/standard/manifest,lib/JIT/Builtin/registryrename()/ #771 patternlib/VM.phpbuiltin dispatchboollib/JIT/Builtin/JitUnlink.phpchar*path from PHP stringscript/capability-matrix.phpAcceptance criteria
./script/ci-fast.sh --filter UnlinkBuiltin ./script/ci-local.sh --filter unlink.phpt # @group llvm when JIT/AOT enabledDocker:
docker run --rm -v "$(pwd):/compiler" -w /compiler php-compiler:22.04-dev \ ./script/ci-fast.sh --filter UnlinkBuiltinNo GitHub Actions.
Dependencies
rename()— sameVmFs/ libc family (can land in either order)Links
unlink()