diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-08-07 20:51:59 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-08-07 20:51:59 +0900 |
| commit | ae365645730b95d5b01b0df7382b91668d5fa24e (patch) | |
| tree | 962e3abb51132097ff11a79d453e058945ae699c /LICENSE.md | |
| parent | f749a47804cd296a3059cd3f8079c62dbaa5fdc0 (diff) | |
| download | php-shirabe-ae365645730b95d5b01b0df7382b91668d5fa24e.tar.gz php-shirabe-ae365645730b95d5b01b0df7382b91668d5fa24e.tar.zst php-shirabe-ae365645730b95d5b01b0df7382b91668d5fa24e.zip | |
refactor(platform-repository): fetch the PHP runtime in one RPC call
The RuntimeInterface seam asked the worker one question at a time: a round
trip per loaded extension, per ReflectionExtension::info() output and per
constant, so a single `show --platform` cost 70 to 100 of them. A `platform`
dispatch entry now answers all of it as one PHP array, which shirabe-php-rpc
decodes into a OnceLock-cached PlatformInfo, the way the diagnose command
already works.
Composer\Platform\Runtime therefore has no Rust counterpart any more. Its
work belongs to the running interpreter, and invoke()/construct() could only
be ported as a whitelist that panicked on anything unlisted; it is ported as
PHP into the worker instead, and PlatformRepository reads the answers off
PlatformInfo. Accessors panic on a name the payload does not carry, so the
worker and its consumers cannot drift apart unnoticed.
The tests describe the runtime as payload data where they used to mock the
seam, with the datasets unchanged. The one loss is the call-count assertion
of test_inet_pton_regression: the payload reports the result of
`@inet_pton('::')` rather than answering a call.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'LICENSE.md')
0 files changed, 0 insertions, 0 deletions
