Bug #65948 [Com]: extension and PHP API version mismatch
| From: | wzis at hotmail dot com | Date: | Thu, 24 Oct 2013 22:13:08 +0000 |
| Subject: | Bug #65948 [Com]: extension and PHP API version mismatch | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-182456@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=65948&edit=1
ID: 65948
Comment by: wzis at hotmail dot com
Reported by: wzis at hotmail dot com
Summary: extension and PHP API version mismatch
Status: Wont fix
Type: Bug
Package: *General Issues
Operating System: Linux
PHP Version: Irrelevant
Block user comment: N
Private report: N
New Comment:
Not very true: On UNIX/Linux systems, you can still have multiple versions of libc installed at
different locations if that is really you need, and you can let a program to use the version of libc
by setting LD_LIBRARY_PATH: but since on UNIX/Linux systems, the API backward compatibility is
maintained very well, there is no such need to install a different version of libc in normal
situation.
On Solaris, a program binary built on Solaris 8 can still work on Solaris 11, that's more than
15 years in time span.
As for ABI compatibility, even freebsd wants to make ABI compatible with Linux.
So the PHP's way of only maintaining API (in your sense may be ABI, but this is even on same
platform even with same OS version) compatibility within just the x.y.z for all z, that's the
worst of any computer programming language API/ABI's compatibility.
Previous Comments:
------------------------------------------------------------------------
[2013-10-24 10:55:17] johannes@php.net
First: Please don't confuse ABI and API compatibility. API compatibility we have to a way
larger degree. So many things just need a recompilation. ABI, binary compatibility is what we are
talking about.
Yes, operating system core APIs have quite some restrictions on ABI compatibility, this leads to
some maintenance hell in some areas like use of special #defines to enable specific features or bug
fixes or ...
There the restrictions make sense - you can run only one libc on a host. With PHP this isn't
the case.
That said: We are aware of the fact that we might do better by having a stricter defined API and
keeping that stable. For none of the active contributors (who are volunteers) this is not a big
issue, though. If you want to help in that area this is welcome. Some basic thoughts are in these
RFCs:
https://wiki.php.net/rfc/php_native_interface
https://wiki.php.net/rfc/remove_zend_api
------------------------------------------------------------------------
[2013-10-24 00:16:35] wzis at hotmail dot com
If glibc follows the PHP in way of doing API compatibility, it will be nightmare for 3rd party
software developers.
------------------------------------------------------------------------
[2013-10-24 00:12:25] wzis at hotmail dot com
But API should be very stable: one example is glibc: even though it has been many version releases,
but so long you compile a program on a version of glibc, and only run that binary on system with
that version of glibc or newer, the program can run successfully.
------------------------------------------------------------------------
[2013-10-23 23:12:09] johannes@php.net
If you want to do experiments in that area you could do magic by creating your own get_module()
function which detects the PHP version, but we change structures as we see need between releases.
You are mentioning 5.1 versus 5.5 that's 8 years of development work with lots of improvements.
We care a lot about binary compatibility between bug fix releases (x.y.z++) but not feature releases
(x.y++.z)
------------------------------------------------------------------------
[2013-10-23 23:00:34] wzis at hotmail dot com
If we only use very minimum PHP API functions and data structures, is there a way to achieve build
once, run on multiple versions?
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=65948
--
Edit this bug report at https://bugs.php.net/bug.php?id=65948&edit=1