As many of you know, one can build PHP engine in a number of ways which
are binary-incompatible - debug/no debug, thread-safe/not thread safe,
etc. Also, for windows we have now anther dimension - we could build
with VC6, VC8, VC9, etc. Loading modules built with another, binary
incompatible version, could lead to crashes and malfunctions, thus Zend
extension and PHP extension loaders check these options, stored in
special structure, to match module ones with engine ones.
Now the problem is that when we need to add dimensions, we will have to
change structures and maybe even edit some extensions, and as we have
more dimensions it becomes less manageable and more "hackish".
I think that it would be better if we adopted more clean and scalable
solution for that. I propose having one string build ID, which would
look something like: "API20071006,NTS,Debug,VC8" and would be rquired to
match exactly in the engine and the module. This should be relatively
easy to generate when compiling.
Pro:
1. Easy, robust and scalable way to match current and any future build
flavors
2. You can easily create "private" build flavors when testing
binary-incompatible changes
3. Build data is in readable form even inside binary, so binaries could
be automatically checked by Unix tools.
Contra:
1. Well, it's change :)
What do you think?
--
Stanislav Malyshev, Zend Software Architect
[email protected] http://www.zend.com/
(408)253-8829 MSN: [email protected]
Stanislav Malyshev, Zend Software Architect
[email protected] http://www.zend.com/
(408)253-8829 MSN: [email protected]