mdounin at mdounin.ru
Thu Sep 6 10:34:24 UTC 2012
On Thu, Sep 06, 2012 at 12:10:46AM -0700, Michael Shadle wrote:
> the basic concept of "modules" are pluggable instruments to extend
> something else.
> having to compile it in makes it less modular. DSO support would make
> package management in distributions seamless.
> minor differences in any one single module means you need to recompile
> the entire binary for that small change instead of a single .so for
> example being changed and the server gracefully reloading.
The main problem with dynamically loaded modules is ABI, and
that's why we don't support it now. With even minor difference in
nginx core you'll need to recompile all modules - else you'll see
unexpected behaviour here and there due to ABI changes.
Moreover, right now we don't maintain ABI even within single
source code base - various structure layout may change depending
on various configure options and test results. That is, if one
needs to compile loadable modules - the only valid option now is
to compile them with nginx itself, else expect problems.
With this in mind it doesn't really make sense to support dynamic
modules. Especially if you also consider resulting performance
loss (and nginx's seamless upgrade process as mentioned by Reinis).
So the question isn't really about dynamic modules by itself.
Question is about (at least tracking of) ABI provided for modules.
For now it's something mostly nonexistent.
Not even talking about resulting problems due to use of other
libraries n loaded modules. I've seen Apache segfaulting due to
incompatible libraries used in modules more than once, and I don't
really want to see the same with nginx.
More information about the nginx