Hey, I just found you via Google as I was trying to find out why ..... Nginx is not supporting dynamic loading of modules, for the very obvious issues the other posters seem to have too.
However, Maxim, you claim, that one reason is performance. While performance of course matters, I'd like to know why you say so.
Can you please go a little bit more into the technical details why a dynamic loaded module does not perform as well as a statically linked "module"?
Of course, a compiler could use global optimization techniques to perform interprocedual optimizations, but I don't believe (yet), that the impact shall be that high.
2nd) statically linked libraries speed up process bootup, but this is neglect-able for a long-running process.
3rd) of course, at least for the core modules, they could use #ifdef's inside the request structs and friends (just as you stated) in order to further optimize resource (ie. memory) usage.
So, I'm only interested in the performance arguments (not zero-downtime upgrade,...), so I can understand a little better.
Many thanks in advance,
Christian.