Re: Call for participation: Annotating internal function argument and return types
| From: | Dik Takken | Date: | Mon, 12 Aug 2019 18:59:00 +0000 |
| Subject: | Re: Call for participation: Annotating internal function argument and return types | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-106562@lists.php.net to get a copy of this message | ||
Hi,
I'd be happy to donate some time to this effort as well. If you just
assign me a file or directory (not too much at once please) I can create
a PR that covers that part of the code base.
Would that work for you?
Regards,
Dik
On 10-08-19 12:56, Nikita Popov wrote:
> Hi,
>
> Lack of type information for internal functions in Reflection is a
> long-standing issue. In PHP 8 we finally have all the necessary technical
> groundwork done to support argument and return type annotations on internal
> functions at scale.
>
> The only thing left is to actually add those type annotations ... to many
> hundreds of functions. This is something everyone can help with, as it does
> not need expertise in C.
>
> I've opened a sample PR to show the process:
> https://github.com/php/php-src/pull/4499
>
> Here, we take some existing arginfo structures in basic_functions.c and
> convert them into stubs in basic_functions.stub.php. We can take the
> argument names from the existing arginfo. To figure out the types, we need
> to look at the implementation (the php.net documentation tends to lie about
> details).
>
> For example, the first function, set_time_limit is defined in
>
> https://github.com/php/php-src/blob/172c71980df0fe4c9d62c3365f0a2cdb139e3e86/main/main.c#L1501.
> We see that it accepts an "l" parameter, which is an int. We see that it
> uses RETVAL_TRUE and RETVAL_FALSE, which means the return value is a bool.
>
> Once this is done, we need to auto-generate new arginfo data. If you have a
> development setup, this is done automatically when running "make".
> Otherwise, it's possible to manually run "php scripts/dev/gen_stub.php
> ext/standard/basic_functions.stub.php".
>
> Any help would be appreciated :)
>
> Regards,
> Nikita
>