Re: Generating arginfo from stub files

From: Date: Tue, 23 Jul 2019 15:00:00 +0000
Subject: Re: Generating arginfo from stub files
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-106252@lists.php.net to get a copy of this message
On Tue, Jun 18, 2019 at 5:10 PM Nikita Popov <nikita.ppv@gmail.com> wrote: > Hi internals, > > In PHP 8 it will be possible to add reflectible argument and return type > information for internal functions (it was previously theoretically > possible as well, but forbidden by policy for php-src for multiple reasons, > which have now been resolved). > > It will take quite a bit of effort to add this information for hundreds of > builtin functions. I would like to take this chance to improve the way in > which arginfo structures are specified, and make it more ergonomic and > future proof. Here is an example of a typed arginfo structure: > > ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_alias, 0, 2, > _IS_BOOL, 0) > ZEND_ARG_TYPE_INFO(0, user_class_name, IS_STRING, 0) > ZEND_ARG_TYPE_INFO(0, alias_name, IS_STRING, 0) > ZEND_ARG_TYPE_INFO(0, autoload, _IS_BOOL, 0) > ZEND_END_ARG_INFO() > > Rather than writing this out by hand, I would like arginfo structures to > be generated from PHP stub files that contain definitions like this: > > function class_alias(string $user_class_name, string $alias_name, bool > $autoload = true): bool {} > > I've created a proof of concept implementation for this at > https://github.com/php/php-src/pull/4284. Function signatures > are > specified in a xyz.stub.php file from which xyz_arginfo.h is generated. > This file can then be included in the implementation. Nothing about the > arginfo implementation itself changes. > > What do you think about providing this mechanism? > > Nikita > Any more feedback on this? The existing discussion has been mostly around "can we get the type information from some existing source?" to which the answer is "nope": Nothing that already exists is accurate enough for php-src. Nikita

« previous php.internals (#106252) next »