########################################
# external (non-mod_perl) APR:: issues #
########################################

* As mike chamberlain told me over irc, apr-ext/perlio was faling for
  him because of the modperl_perl_gensym not being resolved in
  APR/PerlIO.so. I didn't see that error since on linux by default
  symbols resolution is lazy and since that part of the api wasn't
  tested I did see the problem. On MacOSX the loading is RTLD_NOW
  (non-lazy) so it detects any missing symbols problems immediately.

  Luckily DynaLoader allows us to force the non-lazy mode by setting
  an env var: PERL_DL_NONLAZY=1. We need to force this env variable on
  when building with MP_MAINTAINER=1. I suppose that it should be
  added to the autogenerated t/TEST and t/SMOKE. and to
  t/conf/modperl_extra.pl ($ENV{PERL_DL_NONLAZY}=1) so it affects the
  server-side as well as the client-side (normally env var aren't
  propogated to the server).

* APR::Pool relies on interpreter management function:
  modperl_interp_unselect. At the moment I've worked around it by
  defining an empty function in APR.xs. But a cleaner solution is
  desirable.

* modules that we need to add tests for in apr-ext:
  APR::IpSubnet
