On 11.12.2020 at 16:39, Calvin Buckley wrote: > Might be better in php-internals (haven't subbed yet), but: > > I noticed one of the new facilities in PHP 8 was generating arginfo > from a PHP stub. This is pretty useful for reasons elaborated > elsewhere, but I'm wondering how this should be used for PECL > extensions. I noticed what PHP itself does is keep the generated > arginfo header. My questions are: > > 1. Should this be used at all PECL extensions yet? That is, is this > some PHP facility that isn't ready for external usage yet?
It's fine to use it right away. > 2. I noticed the build system deletes the stub after it's built the > object files. Since I might want to keep the header (for PHP 7.x > users), this is a bit annoying, especially as PHP itself keeps them. I don't think that this is supposed to happen. Is there some extension specific clean-up involved? > 3. Are the headers that get generated have any guarantees on usability > in PHP 7.x? They are not usable on PHP 7 due to some missing macros. It is possible to use define the macros for older PHP versions, but you may be better off (at least for BC reasons) to add @generate-legacy-arginfo to the stub file; this should generate a _legacy_arginfo.h file for inclusion when building for PHP 7. > 4. Part of #2, because it deletes the headers, it makes rebuilding if > you generate a change in source *very* annoying, because the header > won't be found. See above (question 2). > 5. Actually downloading PHP-Parser during build is really unexpected. I > assume if I have it on my include path it won't do that, but for > isolated builds it could be really confusing. I assume if I ship > arginfo header in a release tarball, it won't do that? Indeed. If _arginfo.h is available and up to date (there is a SHA1 hash in the file), rebuilding should not happen. Christoph -- PECL development discussion Mailing List (https://pecl.php.net/) To unsubscribe, visit: https://www.php.net/unsub.php