mdounin at mdounin.ru
Fri Sep 7 08:47:41 UTC 2012
On Fri, Sep 07, 2012 at 10:07:08AM +0800, Joshua Zhu wrote:
> Hi Michael,
> On Fri, Sep 7, 2012 at 12:27 AM, Michael Shadle <mike503 at gmail.com> wrote:
> > Maxim,
> > I knew the ABI reasoning was behind it as this has came up at least once before. Just wanted to express it again. Curious how tengine does it with very small performance loss still based off the nginx code base. Perhaps something to look at? :) that's all.
> We already know the limitations pointed out by Maxim and thank Maxim
> for making it clear several times. Definitely it's difficult to solve
> them, especially the ABI problem. The approach we'll take is keeping
> the ABI of the stable versions as conservative as we can, i.e. we'll
> not change the ABI of a stable branch. And the ABI changes will just
> happen in a development branch.
> In such a way it may reduce the value of dynamically loaded modules,
> but it's better than nothing.
The question isn't really about "keeping ABI in the stable
branch", checking version signature is more or less enough here
(unless you apply patches which change the ABI within the same
It's more about what happens once you'll try to load a module
compiled with --with-ipv6 into nginx compiled without this flag
(or vice versa). Layout of the ngx_connection_t structure will be
different in nginx itself and the module, and the resulting code
will happily do various unexpected thing.
And the same thing may even happen without any changes in
configure arguments - e.g. if OS was upgraded and nginx
now detects some new feature it want to use.
More information about the nginx