> > De : Pierre Joye [mailto:pierre....@gmail.com]

> >

> > I tend to prefer separate files and add the right source at configure
time.

> > It is then easier to keep fixes, features, etc. in sync.

> >

> > However both solutions may work, if we decide to go for one or another

> > solution. We can add support for the packaging/install in pickle and the

> > website.

To reply to Pierre's question about the way we choose to keep extensions

compatible with 5 and 7, I see that the choice was already made :), we will

duplicate the code and maintain two distinct code trees :(

 

As the decision is, hopefully, not official yet, may I suggest another
solution ?

 

I am currently working on a PHP extension generator. The objective here, is

that the developer writes as few code as possible and that this code uses an

abstraction layer as rich as possible to keep it compatible with as many

different environments as possible. This allows to lower the skills level
and

the workload required to develop & maintain a PHP extension, especially

when the extension must be compatible with different PHP

engines/versions.

 

The future need to port PECL extensions massively to PHP 7 is the perfect

occasion to convert them to use such a tool. The existing code should be

modified to fit the tool but, once done, the code size is greatly reduced
and

the same source code can be used for every supported target environment

(current scope is PHP 5.x, PHP 7, HHVM). When an extension developer

leaves, thanks to the extension synthetic description and to the reduced

amount of code, the extension is easier to take over. Last, it makes BC
breaks

in the C API easier to manage as there are chances that the BC break is

abstracted (just need to adapt the generator). In this case, the generator
is

modified, not the extension source code.

 

The developer just describes the extension (in yaml or json) and writes the

function/methods bodies using compatibility macros for as many features as

possible. In order to build the extension, a specialized code generator

generates 'ready-to-compile' code for the PHP engine/version you chose

(code is generated using twig templates, making generator development

easier).

 

Finally, the tool, even with a limited abstraction scope, can be used for
any

existing and future extension as, for the features which are not

generated/wrapped yet, the user can provide any C code to be included as-

is.

 

Please, have a look at the flaupretre/php-ext-gen repository in github,
especially

the examples and doc subdirectories, and give me your opinion.

 

Regards

 

Fran

Reply via email to