stas        2003/11/18 13:45:18

  Modified:    .        ROADMAP STATUS
               ModPerl-Registry TODO
               todo     README api.txt bugs_build bugs_registry
                        deprecated_features.txt features_maybe
                        features_missing features_new filters.txt
                        missing_old_features.txt possible_new_features.txt
                        release
  Log:
  the big todo list reorg, work in progress
  
  Revision  Changes    Path
  1.7       +0 -84     modperl-2.0/ROADMAP
  
        <<Binary file>>
  
  
  1.73      +3 -351    modperl-2.0/STATUS
  
  Index: STATUS
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/STATUS,v
  retrieving revision 1.72
  retrieving revision 1.73
  diff -u -u -r1.72 -r1.73
  --- STATUS    17 Nov 2003 02:10:58 -0000      1.72
  +++ STATUS    18 Nov 2003 21:45:18 -0000      1.73
  @@ -16,353 +16,5 @@
      1.99_02    : Released Jun 01, 2002
      1.99_01    : Released Apr 06, 2002
   
  -
  -   ====================================================
  -   === We are still using the todo/ directory to    ===
  -   === track some status; please look there too ... ===
  -   ====================================================
  -
  -
  -
  -Release Showstoppers:
  ----------------------
  -
  -Available Patches:
  -------------------
  -
  -* Fixing Apache->warn("foo")
  -
  -  Report: http://mathforum.org/epigone/modperl-dev/noxtramcay/[EMAIL PROTECTED]
  -  Thread: http://mathforum.org/epigone/modperl-dev/noxtramcay
  -  Status: pending Apache::Log compat issues, this and other methods
  -          might be dropped.
  -----
  -
  -* The Apache::Scoreboard XS implemenation with tests is awaiting to be
  -  committed
  -
  -  Report: http://mathforum.org/epigone/modperl-dev/zehporbreh/[EMAIL PROTECTED]
  -  Status: (stas) needs to be cleaned up and committed
  -
  -----
  -
  -* protect registry classes from bad scripts which try to assassinate $r
  -  Report: http://marc.theaimsgroup.com/?l=apache-modperl-dev&m=106153785129782&w=2
  -  Status: (stas) i'm not sure whether we really need this feature,
  -          since it's the first time in the last 6 years we had a
  -          problem with bad user code of this kind. let's keep it in
  -          the patches until we have a real need for it.
  -
  -
  -
  -
  -
  -Platforms on which mod_perl won't build/load
  ---------------------------------------------
  -
  -OS      Ver Mod Comments
  -----------------------------------------------------------------------
  -OpenBSD 2.9 DSO Builds but won't start, with segfaults in the
  -                Perl lexer. I wasn't even able to start mp1-dso with
  -                the customly built perl (tried 5.6.1 .. 5.9.0)
  -                -- the segfault is again in lexer. It seems that
  -                the standard OpenBSD perl package has been heavily
  -                patched, when the core system perl 5.6.0 package was
  -                built, since I can run 'make test' on mp1-dso, but not
  -                with a customly built 5.6.0 with the same
  -                options. Since 2.9 is no longer supported by OpenBSD,
  -                there is no 5.6.1 or higher to try, so at this moment
  -                we simply give up on 2.9. We think that the static mp2
  -                build should work just fine (once it's available).
  -
  -AIX     3.3 DSO Works with -berok to ignore linking errors (symbol
  -                resolution).  Should replace -berok with a proper
  -                symbol resolution at linking time, but I had not much
  -                success with using this approach (dlopen fails).
  -
  -FreeBSD ??  DSO Works with non-threaded perl (4.8-RELEASE and
  -                5.1-RELEASE)
  -                http://marc.theaimsgroup.com/?l=apache-modperl&m=106399870822612&w=2
  -                It doesn't work with threaded perl/worker mpm,
  -                seemingly because of the problems with threads on
  -                FreeBSD (not sure what version).
  -
  -
  -Needs Patch or Further Investigation:
  --------------------------------------
  -* per-server cleanups core dump or are otherwise ineffective
  -    Apache->server->process->pconf->cleanup_register(sub { ...  });
  -
  -* META.yml. Generate META.yml (make dist does that), add Apache-Test
  -  as a private resource, so it won't be attempted to be indexed by
  -  PAUSE, add NO_META=>1 to WriteMakefile() which tells EU::MM not to
  -  overwrite META.yml.
  -
  -* <Perl> sections:
  -  A few issues with <Perl> sections:
  -  http://marc.theaimsgroup.com/?l=apache-modperl-dev&m=106074969831522&w=2
  -
  -* Recursive <Perl> sections:
  -  
http://www.gossamer-threads.com/archive/mod_perl_C1/dev_F4/%5BMP2_-_BUG_%5D_Issue_handing_Apache_config._error_messages_P70501/
  -  and
  -  http://mathforum.org/epigone/modperl/dartrimpcil
  -
  -* Apache::PerlSections->dump 
  -  It does exist, but it's a completely internal function, not dumping existing 
configuration
  -  as it used to be in 1.x. (needed by Apache::Status, for instance). Need to be 
implemented
  -  and the existing dump method must be moved out of the way
  - 
  -* PassEnv/SetEnv propogation 
  -  
http://www.gossamer-threads.com/archive/mod_perl_C1/dev_F4/%5BMP2_BUG%5D_PerlPassEnv_issues_P70500/
  -
  -* perl Makefile.PL PREFIX=/foo/bar works fine, however Makefile.PL'll
  -  still refuse to build unless MP_INST_APACHE2=1 is passed. It should
  -  refuse to do so only if it finds mod_perl 1.0 installed under that
  -  PREFIX, which can be a tricky check, since the exact logic to figure
  -  out the paths is deep inside EU::MM. Probably it's better to run
  -  'File::Find' and search for 'mod_perl.pm' under PREFIX, if found
  -  check its version and assert only if it's 1.xx
  -
  -* we have a dependency check problem when xs/*/*.h use code from
  -  xs/modperl_xs*.h, when the latter change 'make' won't rebuild the
  -  dependant files
  -
  -* most of the xs wrappers print no "Usage: " when wrong args/wrong
  -  number of args are passed, would be nice to add the usage message
  -  whenever incorrect arguments error is logged. e.g., when
  -  APR::URI->parse() gets the wrong first arg (non-pool) it prints:
  -
  -    p is not of type APR::Pool at ...
  -
  -  whereas it's not so obvious that the function expected the pool
  -  object, neither it specifies which ("arg number") of the arguments
  -  is wrong.
  -
  -  possible solution: add a new field to the map files, which will be
  -  used as a usage message whenever an argument error occurs.
  -
  -* we should stop generating xs/apache_*, at least for a reason that
  -  it's incomplete and will be never complete as we don't keep up with
  -  changes with ap_/apr_ namespace. Also we don't have the logic to
  -  handle cases where functions aren't available on certain
  -  platforms. Importing these unavailable functions may cause loading
  -  problems on some platforms (aix?). If developers need to import
  -  symbols from ap_/apr_ namespace they should use .exp files installed
  -  by httpd/apr/aprutil.
  -
  -* this is probably a documenation issue. Several phases are of type VOID
  -  and docs say:
  -
  -    Handlers of the type C<VOID> will be I<all> executed in the order they
  -    have been registered disregarding their return values. Though in
  -    mod_perl they are expected to return C<Apache::OK>.
  -
  -  may be we shouldn't mark them as VOID then, but RUN_ALL? this is in
  -  user/handlers/intro.pod
  -
  -* Looks like there is an issue with filter configuration, I've noticed that:
  -
  -   PerlInputFilterHandler MyApache::InputFilterGET2HEAD
  -
  -  silently ignores the filter, whereas:
  -
  -   PerlInputFilterHandler +MyApache::InputFilterGET2HEAD
  -
  -  calls the filter. figure out:
  -
  -  - why the loading doesn't happen
  -  - why the error doesn't happen (probably both connected)
  -
  -* 'SetHandler modperl' doesn't reset $|, so if anything turns it on
  -  anywhere, it's going to stay that way. Meaning excessive flushing
  -  probably causing a performance hit. I've tried to add the code to
  -  reset it, but this requires getting a perl interpreter at the early
  -  stage and it breaks several filter tests, which has relied before on
  -  the coincidence that both the response handler and the filter were
  -  run by the same interpreter (in particular this breaks the code
  -  where push_handlers() uses a string as a handler, rather a CODE
  -  reference, see t/filter/TestFilter/both_str_rec_add.pm, to
  -  reproduce the problem, simply s/modperl/perl-script/)
  -
  -* child processes never run END blocks. a good example is
  -  Apache::TestUtil, which doesn't cleanup files and dirs it has
  -  created, because the END block is not run.
  -
  -* Currently modperl_filter_add_{connection|request} check the filter
  -  handler function attrs before accepting the filter. If the module
  -  wasn't preloaded the check fails and filter handler is skipped. We
  -  could have this issue documented (which is OK, but might raise too
  -  many questions), but we could also always preload the filter
  -  handlers. To test see TestFilter::input_msg
  -
  -* we still have a problem with mod_perl starting from a
  -  vhost. consider the following config:
  -
  -  PerlSwitches -I/foo/bar
  -  <VirtualHost TestDirective::perlloadmodule6>
  -     PerlLoadModule TestDirective::perlloadmodule6
  -     ...
  -  </VirtualHost>
  -
  -  The value set by PerlSwitches in the main server is ignored, because
  -  it's not seen by mod_perl starting from vhost.
  -  
  -  overall, currently the early startup in vhost is a bunch of ugly
  -  workaround, which I've added everytime I came up with a config that
  -  wasn't working. Need to come up with a better design decisions.
  -
  -  once this is fixed. I want the perlloadmodule6 to be loaded before
  -  all other perlloadmodule configs, because it tests an important
  -  segfault when perlloadmodule happens to start mod_perl from within a
  -  vhost. but because PerlSwitches from other tests are ignored, it
  -  can't trigger the mod_perl startup in the test suite.
  -
  -* ModPerl::Registry END {} block woes , described in details at the
  -  forwarded message from Jim Schueler
  -  http://marc.theaimsgroup.com/?l=apache-modperl&m=103720834717981&w=2
  -  the whole thread is here:
  -  http://marc.theaimsgroup.com/?t=103713532800003&r=1&w=2
  -
  -* $r->rflush doesn't work. see:
  -  http://marc.theaimsgroup.com/?l=apache-modperl&m=103847990813285&w=2
  -  I also see a weird behavior where it does sends FLUSH buckets but
  -  they all seem to fall through the data, thus not really flushing
  -  anything. this can be easily reproduced with MyApache::FilterSnoop.
  -
  -* directive handlers are supported but need some work for 1.x compat
  -  - Apache::ModuleConfig->get needs a compat method mapping to
  -    Apache::Module->get_config
  -
  -  - Apache::CmdParms::info for CmdParms implemented by Perl modules
  -
  -  - Apache::CmdParms::{GETC,getline} needs compat mapping, similar to
  -    what Apache::Directive->as_string does, but one char or line at a time
  -
  -* Quite a few people reported problems with TestHooks during 'make test'
  -  - http://marc.theaimsgroup.com/?t=102985405500008&r=1&w=2
  -
  -* the issue with crypt_r: in 5.8.0's each perl clone allocates 128K
  -  for crypt_data. This fixed in 5.8.1 and 5.9.0 (#19119 (maint) and 
  -  #19122 (blead)), however this could be quite a waste for those using
  -  5.8.0. perhaps adding a note to performance chapter will do. For
  -  more info see the thread:
  -  http://archive.develooper.com/[EMAIL PROTECTED]/msg93846.html
  -
  -Open Issues or Core Enhancements:
  ----------------------------------
  -
  -* 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).
  -
  -* gcc 3.3 (from cvs 2003-07-28) supports a new option:
  -  -Wdeclaration-after-statement, which we need to enable in the
  -  maintainer mode, to catch any declarations after statements, since
  -  by default gcc doesn't complain about them. Probably need to wait
  -  till gcc-3.3.2 and enable it then.
  -  http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?r1=2.639&r2=2.640&f=h
  -
  -* Testing:
  -  Need to put Philippe's smoking test into the core
  -  -- shouldn't forget to test with perlio enabled and disabled
  -
  -* Apache::Log compat issues:
  -
  -  Apache->warn, Apache::warn, Apache::Server->warn and
  -  Apache->Apache::Server->log_error are all doing:
  -     s = modperl_global_get_server_rec();
  -  and this function is thread safe only during the startup.
  -
  -  possible solutions:
  -
  -  1) enforce that these functions are used only at the server startup
  -
  -  2) require +GlobalRequest, which gives us r->server, now thread
  -     safe (though slow).
  -
  -  3) drop them all from the API and move to compat. 
  -     [remember that Apache::warn is needed for registry scripts to
  -     override warn()]
  -
  -  Report: Message-ID: <[EMAIL PROTECTED]>
  -  Status: <img alt="Doug, contemplating">
  -
  -----
  -
  -* we need a bug reporting utility that can be used post-install, which
  -  should be similar to t/REPORT
  -
  -  Report: http://mathforum.org/epigone/modperl-dev/staiblirroo/[EMAIL PROTECTED]
  -  thread: http://mathforum.org/epigone/modperl-dev/staiblirroo
  -  Status: +1: Stas, Doug
  -          needs to be implemented
  -
  -----
  -
  -* Apache::PerlSections missing features for backwards compatibility:
  - - $Apache::ReadConfig::DocumentRoot
  - - Apache::PerlSections->store(filename)
  -
  -  Report: Philippe M. Chiasson <[EMAIL PROTECTED]>
  -  Status: Philippe M. Chiasson <[EMAIL PROTECTED]> is working on it
  -
  -----
  -
  -* PerlPreConnectionHandler is implemented, but the 'void *csd' arg in
  -  the callback is ignored
  -
  -  Status: no hurry
  -
  -----
  -
  -* 
  -  Report: 
  -  Status:
  -
  -----
  -
  -APR as external Perl glue
  --------------------------
  -
  -- APR::Table now depends on modperl_hash_tie, so it can't be used
  -  outside mod_perl. should probably abstract this function into a new
  -  utils.c object that can be linked by APR.so.
  -
  -  Status: see the next item
  -
  -- APR::PerlIO needs an equivalent of modperl_perl_gensym
  -
  -  Status: we need to abstract those function into a separate object,
  -  which can be linked by APR.so. However I think we should probably
  -  provide a static build and after that see how to do the linking
  -  right. Otherwise we may have collisions with statically linked
  -  symbols and the dynamic ones.
  -
  -  APR::Pool relies on interpreter management functions and therefore
  -  can't be used outside mod_perl.
  -
  -  Status: 
  -
  -Documentation:
  ---------------
  -
  -  -- see: modperl-docs/src/docs/2.0/TODO
  -
  -Patches unlikely to be applied:
  --------------------------------
  -
  -* 
  -  Report: 
  -  Status: 
  -
  +Issues, bugs and features and their implementation status are spread
  +across several files under the todo/ directory
  
  
  
  1.14      +0 -97     modperl-2.0/ModPerl-Registry/TODO
  
        <<Binary file>>
  
  
  1.5       +1 -31     modperl-2.0/todo/README
  
  Index: README
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/todo/README,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -u -r1.4 -r1.5
  --- README    28 Jan 2003 07:33:14 -0000      1.4
  +++ README    18 Nov 2003 21:45:18 -0000      1.5
  @@ -1,31 +1 @@
  -this directory contains notes on whats left to be done, covering all
  -areas including:
  -
  -o interpreter management
  -o hook code and callback mechanism
  -o stacked handlers, method handlers
  -o Perl interfaces to Apache/APR structures
  -o Perl interfaces to Apache/APR API functions
  -o I/O + filtering
  -o protocol module support
  -
  -o <Perl> sections (+in progress, gozer is working on it)
  -
  -o directive handlers
  -o cgi emulation, i.e. %ENV/END{}/@INC/exit() management
  -o 1.x compat mode
  -o pure Perl Apache::* extras (e.g. Apache::Status, etc)
  -o build framework
  -o test framework
  -o examples
  -o docs
  -
  -somewhat prioritized into:
  -
  -- api.txt
  -
  -- missing_old_features.txt
  -
  -- deprecated_features.txt
  -
  -- possible_new_features.txt
  +this directory contains notes on whats left to be done
  \ No newline at end of file
  
  
  
  1.37      +0 -93     modperl-2.0/todo/api.txt
  
  Index: api.txt
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/todo/api.txt,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -u -r1.36 -r1.37
  --- api.txt   26 Sep 2003 19:19:13 -0000      1.36
  +++ api.txt   18 Nov 2003 21:45:18 -0000      1.37
  @@ -1,95 +1,2 @@
  -important parts of the api that are missing
  -in no particular order
  -------------------------------------------
  -
  -missing apr_buckets api:
  -destroy, delete
  -
  -tied filehandle interface:
  - -EOF, TELL, SEEK
  - -READLINE - proper implementation (see comment in Apache::compat)
  - need to attempt to fix that interface so it'll work with IPC::Open* family  
  -
  -$r->finfo:
  -need apr_finfo_t <-> struct stat conversion (might already be there,
  -haven't looked close enough yet)
  -
  -$r->chdir_file:
  -not safe for threaded environments.  should at least unshift @INC with
  -dirname $r->filename.  consider overriding open() to resolve relative
  -filenames.
  -
  -$r->child_terminate:
  -haven't looked into this, but clearly not an option with threaded
  -mpms.  might consider knocking off the current PerlInterpreter
  -instead.
  -
  -$r->log_reason:
  -should be simple, see modperl_log.h
  -
  -Apache->server_root_relative:
  -needs to default to current pool (pconf at startup, r->pool at request
  -time)
  -
  -APR::URI
  -missing $uri->rpath
  -
  -Apache::Util::*
  -escape_path() - (was escape_uri) can be changed in apache not to require a
  -pool
  -
  -$r->cleanup_for_exec needs to be added to Apache::compat as a noop.
  -
  -size_string() - can we use apr_strfsize ?
  -
  -escape_html() -  consider jeff baker's more robust implementation of
  -my_escape_html(), which should probably be made in apache-2.0 itself
  -
  -ht_time() - now requires a pool, temporarily renamed format_time for
  -1.x ht_time compat.  should we just leave as is or see if ht_time can
  -be changed to not require a pool?
  -
  -$r->document_root:
  -cannot currently be modified.  requires locking since it is part of
  -the per-server config structure which is shared between threads
  -
  -$r->send_fd:
  -need to figure out howto map PerlIO <-> apr_file_t
  -at the moment $r->send_fd is implement in Apache::compat, functions,
  -but does not have the performance benefits of ap_send_fd()
  -however, $r->sendfile is a new function that opens the file for you
  -and calls ap_send_fd() underneath. ap_send_fd() in APR doesn't work 
  -with fd's which aren't files and of unknown length, therefore it cannot 
  -be used for implementing 1.x compatible send_fd.
  -
  -Apache::{Server,Process} classes:
  -require mutex lock for writing
  -
  -Apache->import:
  -not yet implemented, required for exit/warn overridding
  -
  -$r->{get,set,push}_handlers:
  -need to deal properly with modification of the current handler phase
  -we're running.
  -
  -Apache->request:
  -need to deal with subclass objects which are not a request_rec
  -(e.g. HASH ref)
  -
  -$r->cgi_header_out:
  -anything in 1.x land actually using it?
  -
   Apache->unescape_url{_info}:
   not yet implemented.  should be moved to Apache::Util
  -
  -mod_perl::import():
  -not yet implemented
  -
  -Apache::FakeRequest:
  -since APR can be used outside of httpd, and we can alloc request_rec
  -and similar structures, it should be possible to bootstrap an
  -inside-httpd interface and outside-httpd interface.  its not really
  -worthwhile looking at until APR actually installs its *.so or *.a
  -libraries somewhere apxs can find them.  and, there's a bunch of util
  -functions (e.g. URI stuff) that is supposed to move from httpd into
  -apr-util.
  
  
  
  1.2       +6 -0      modperl-2.0/todo/bugs_build
  
  Index: bugs_build
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/todo/bugs_build,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -u -r1.1 -r1.2
  --- bugs_build        17 Nov 2003 23:00:34 -0000      1.1
  +++ bugs_build        18 Nov 2003 21:45:18 -0000      1.2
  @@ -54,3 +54,9 @@
   
   * mp2bug -- add the output of 'ldd httpd' to the report
   
  +* source_scan won't create Wrap/Foo/Bar.xs if
  +  xs/maps/modperl_functions.map defines only a boot section:
  +  MODULE=APR::IO PACKAGE=APR::IO BOOT=1 
  +  unless there is at least one function added to the .map file
  +  http://marc.theaimsgroup.com/?l=apache-modperl-dev&m=100702825506778&w=2
  +
  
  
  
  1.2       +103 -1    modperl-2.0/todo/bugs_registry
  
  Index: bugs_registry
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/todo/bugs_registry,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -u -r1.1 -r1.2
  --- bugs_registry     17 Nov 2003 23:00:34 -0000      1.1
  +++ bugs_registry     18 Nov 2003 21:45:18 -0000      1.2
  @@ -8,4 +8,106 @@
             since it's the first time in the last 6 years we had a
             problem with bad user code of this kind. let's keep it in
             the patches until we have a real need for it.
  -  Priority: very low
  \ No newline at end of file
  +  Priority: very low
  +
  +* An open issue with chdir, which is process-scoped. Arthur Bergman
  +  has started the work on ex::threads::safecwd, which is discussed
  +  here: http://www.perl.com/pub/a/2002/06/11/threads.html?page=2
  +
  +RegistryLoader:
  +
  +- chdir() needs to be adjusted when RegistryCooker implements it
  +
  +RegistryCooker:
  +
  +### bugs ###
  +
  +- consider not to use $$ in debug tracing. Not all platforms give out
  +  a different pid for different threads.
  +
  +- some problems with setting the DEBUG() constant based on the value of 
  +  Apache->server->dir_config('ModPerl::RegistryCooker::DEBUG')
  +
  +### missing features ###
  +
  +- port Apache::PerlRunXS
  +
  +- replace the local implementation of finfo() when ported to mod_perl 2.0
  +
  +- $r->chdir_file is not handled/implemented, see todo/api.txt unsafe!
  +
  +- $Apache::Server::CWD doesn't exist
  +
  +- need to figure out what's happening with
  +  ModPerl::Registry::MarkLine, why it's not on by default?
  +
  +- a cousin of convert_script_to_compiled_handler() in 1.x used to have
  +  'undef &{"$o->[PACKAGE]\::handler"}' to avoid redefine handler()
  +  warnings in case a user has used -w. also see the undef_functions on
  +  the next line.
  +
  +- child_terminate is not implemented see
  +  convert_script_to_compiled_handler().
  +
  +- print STDERR is buffered in test handlers, whereas warn() works
  +  normally. select() helps, but STDERR should be unbuffered in first
  +  place.
  +
  +- in namespace_from_filename() should test whether a file is a symlink
  +  and if so use readlink() to get the real filename.
  +
  +- see what can be done to handle HEAD requests without altering the scripts. 
  +  I'm thinking of running the script normally, but send back only the
  +  generated headers.
  + 
  +- documentation
  +
  +### optimizations ###
  +
  +- currently the default is to strip __DATA__|__END__ and everything
  +  after that, which incurs a little overhead because of the s/// on
  +  the contents of the file. This "feature" wasn't in 1.x, so may
  +  consider to make it optional.
  +
  +### nice to have ###
  +
  +- Geoffrey Young has developed Apache::HEADRegistry is just a subclass
  +  of Apache::Registry that is HEAD request aware:
  +  http://mathforum.org/epigone/modperl/starfaxbi/[EMAIL PROTECTED]
  +  consider integrating in the core as the default behavior or a subclass.
  +
  +- Bjarni R. Einarsson <[EMAIL PROTECTED]> has suggested this Registry hack
  +  http://marc.theaimsgroup.com/?l=apache-modperl-dev&m=98961929702745&w=2
  +  Message-ID: <[EMAIL PROTECTED]>
  +
  +- the closure issue:
  +  there was a suggestion from raptor to use goto() to leave the code
  +  unwrapped in the sub handler, which will solve the closure problem,
  +  but the problem is that once you leave a subroutine with goto() you
  +  cannot return, because you aren't in the sub anymore.
  +
  +  barrie has suggested a different approach, which requires adding
  +  special tags to the script which help to parse the code, and shuffle
  +  things around without putting subs inside the 'sub handler', but
  +  this requires a lot of code understanding from a user, and if its
  +  gained it's probably easier to fix the script so closure effect
  +  won't happen. However barrie's suggestion can be easily added, by
  +  overriding convert_script_to_compiled_handler().
  +
  +- global variables persistance: could have the cooker option to flush
  +  globals in the autogenerated package at the end of each
  +  request. (not packages use()'d from this package)
  +
  +- could also try to privide an optional workaround for the problem
  +  with libs collisions as explained here:
  +  
http://perl.apache.org/docs/1.0/guide/porting.html#Name_collisions_with_Modules_and
  +
  +- It's a known kludge with mod_perl scripts coming from mod_cgi which
  +  use -M for file mtime comparisons, but are not aware of the fact
  +  that $^T is not getting reset on each request. So may be the cooker
  +  should have an option to reset $^T on each request.
  +
  +- develop a cooker() that cooks/modifies a registry package based on
  +  PerlSetVar variables. So for example a user can modify a behavior of
  +  an existing package (stat/donotstat...) and giving it a new name at
  +  the same time. Kinda flag-based inheritance.
  
  
  
  1.9       +0 -2      modperl-2.0/todo/deprecated_features.txt
  
  Index: deprecated_features.txt
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/todo/deprecated_features.txt,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -u -r1.8 -r1.9
  --- deprecated_features.txt   28 Jul 2003 10:33:59 -0000      1.8
  +++ deprecated_features.txt   18 Nov 2003 21:45:18 -0000      1.9
  @@ -16,8 +16,6 @@
   
   - modules: 
     + Apache::SIG: dead
  -  + Apache::StatINC: replace with or point to Apache::Reload
  -                     or rewrite in C
     + Apache::Symbol: unknown
     + Apache::Leak: could be made useful
     + Apache::RedirectLogFix: dead
  
  
  
  1.2       +23 -0     modperl-2.0/todo/features_maybe
  
  Index: features_maybe
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/todo/features_maybe,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -u -r1.1 -r1.2
  --- features_maybe    17 Nov 2003 23:00:34 -0000      1.1
  +++ features_maybe    18 Nov 2003 21:45:18 -0000      1.2
  @@ -9,4 +9,27 @@
     Status: most likely nobody will ever want to use this option, so
     don't waste time working on it.
   
  +* Apache::FakeRequest:
  +  since APR can be used outside of httpd, and we can alloc request_rec
  +  and similar structures, it should be possible to bootstrap an
  +  inside-httpd interface and outside-httpd interface.  its not really
  +  worthwhile looking at until APR actually installs its *.so or *.a
  +  libraries somewhere apxs can find them.  and, there's a bunch of util
  +  functions (e.g. URI stuff) that is supposed to move from httpd into
  +  apr-util.
  +
  +* could add support for embedding apache directives into perl
  +  directives values, e.g. interpolating $ServerRoot
  +
  +  PerlSwitches -I$ServerRoot/lib/perl
  +
  +* Since now we have protocol modules, it'd be nice to have a similar
  +  thing to PerlCleanupHandler, which works only for HTTP requests. 
  +  It should probably be called PerlConnectionCleanupHandler.
  +
  +  If we add it we should probably rename PerlCleanupHadndler to
  +  PerlRequestCleanupHandler and keep the old name as a deprecated alias.
  +
  +  We could also have PerlServerCleanupHandler, but that's exactly what
  +  PerlChildExitHandler does. Consider having ServerCleanup as an alias.
   
  
  
  
  1.2       +54 -3     modperl-2.0/todo/features_missing
  
  Index: features_missing
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/todo/features_missing,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -u -r1.1 -r1.2
  --- features_missing  17 Nov 2003 23:00:34 -0000      1.1
  +++ features_missing  18 Nov 2003 21:45:18 -0000      1.2
  @@ -26,10 +26,61 @@
   
   * die 404 (consider deprecating it)
   
  -* mod_perl.pm::import
  +* mod_perl::import
  +  - Apache->import:
  +   required for exit/warn overridding
   
  -- Apache::test: tobe a compat stub around new test framework
  +* Apache::test: tobe a compat stub around new test framework
   
  -- Apache::src: tobe a compat stub around new build framework
  +* Apache::src: tobe a compat stub around new build framework
   
  +* hooks ordering is not implemented yet
  +  Owner: geoff
  +
  +* tied filehandle interface:
  + -EOF, TELL, SEEK
  + -READLINE - proper implementation (see comment in Apache::compat)
  + need to attempt to fix that interface so it'll work with IPC::Open* family  
  +
  +* $r->finfo:
  +  need apr_finfo_t <-> struct stat conversion (might already be there,
  +  haven't looked close enough yet)
  +
  +* $r->chdir_file:
  +  not safe for threaded environments.  should at least unshift @INC
  +  with dirname $r->filename.  consider overriding open() to resolve
  +  relative filenames.
  +
  +* $r->child_terminate:
  +  haven't looked into this, but clearly not an option with threaded
  +  mpms.  might consider knocking off the current PerlInterpreter
  +  instead.
  +
  +* $r->log_reason:
  +  should be simple, see modperl_log.h (currently aliased to log_error
  +  in compat.pm)
  +
  +* APR::URI missing $uri->rpath
  +
  +* size_string() - can we use apr_strfsize ?
  +
  +* escape_html() - consider jeff baker's more robust implementation of
  +  my_escape_html(), which should probably be made in apache-2.0 itself
  +  (is there apache api? or just drop it)
  +
  +* $r->document_root:
  +  cannot currently be modified.  requires locking since it is part of
  +  the per-server config structure which is shared between threads
  +
  +* $r->send_fd:
  +  need to figure out howto map PerlIO <-> apr_file_t
  +  at the moment $r->send_fd is implement in Apache::compat, functions,
  +  but does not have the performance benefits of ap_send_fd()
  +  however, $r->sendfile is a new function that opens the file for you
  +  and calls ap_send_fd() underneath. ap_send_fd() in APR doesn't work 
  +  with fd's which aren't files and of unknown length, therefore it cannot 
  +  be used for implementing 1.x compatible send_fd.
  +  Solution: send_fd will require the length argument and there will be
  +  no send_fd without the length argument as in mp1
  +  Owner: stas
   
  
  
  
  1.2       +7 -0      modperl-2.0/todo/features_new
  
  Index: features_new
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/todo/features_new,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -u -r1.1 -r1.2
  --- features_new      17 Nov 2003 23:00:34 -0000      1.1
  +++ features_new      18 Nov 2003 21:45:18 -0000      1.2
  @@ -31,3 +31,10 @@
   
   * maybe functions in xs/maps/(apache|apr)_functions.map
   
  +* missing apr_buckets api: destroy, delete
  +
  +*  Apache->request:
  +  need to deal with subclass objects which are not a request_rec
  +  (e.g. HASH ref)
  +  Owner: gozer
  +
  
  
  
  1.5       +0 -126    modperl-2.0/todo/filters.txt
  
        <<Binary file>>
  
  
  1.27      +0 -52     modperl-2.0/todo/missing_old_features.txt
  
  Index: missing_old_features.txt
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/todo/missing_old_features.txt,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -u -r1.26 -r1.27
  --- missing_old_features.txt  4 Feb 2003 06:52:15 -0000       1.26
  +++ missing_old_features.txt  18 Nov 2003 21:45:18 -0000      1.27
  @@ -1,55 +1,3 @@
  -this file contains known missing features from 1.3, these are to be
  -implemented unless otherwise noted.  there are more missing features
  -listed in deprecated_features.txt
   
  -- anonymous handler (for push_handlers, add_input_filter, etc), see
  -  modperl_mgv.c: modperl_mgv_name_from_sv
   
  -- PerlModule, PerlRequire, Perl{Set,Add}Var in .htaccess is missing
   
  -- modperl_include #perl
  -
  -- PerlOpCodeMask (experimental in 1.xx)
  -
  -- cgi emulation: %ENV management:
  -   - %ENV is currently only saved/restored for the perl-script
  -     handler, i.e. changes to %ENV outside of a perl-script handler
  -     are not cleared.  of course, "clean" modules would use local() to
  -     modify %ENV, but there should be an option to save/restore
  -     globals outside of the perl-script handler
  - 
  -   - see if we can avoid touching environ[] until a fork() from Perl happens
  -
  -- die 404;
  -
  -- ... others ...
  -
  -
  -core modules:
  -------------
  -
  -- see also: xs/maps/apache_functions.map
  -
  -addon modules:
  --------------
  -
  -- mod_perl.pm::import
  -
  -- Apache::Status (stas: in progress, needs Apache::Peek and a few
  -  other fixes)
  -
  -- Apache::test: tobe a compat stub around new test framework
  -
  -- Apache::src: tobe a compat stub around new build framework
  -
  -- Apache::PerlSections: still missing:
  -   - $Apache::Server::SaveConfig
  -   - $Apache::ReadConfig::DocumentRoot
  -   - $Apache::Server::StrictPerlSections
  -   - Apache::PerlSections->store(filename)
  -
  -- Apache::SizeLimit and Apache::Resource
  -
  -- Apache::ExtUtils
  -
  -- Bundle::Apache
  
  
  
  1.20      +0 -15     modperl-2.0/todo/possible_new_features.txt
  
  Index: possible_new_features.txt
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/todo/possible_new_features.txt,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -u -r1.19 -r1.20
  --- possible_new_features.txt 7 Apr 2003 05:08:54 -0000       1.19
  +++ possible_new_features.txt 18 Nov 2003 21:45:18 -0000      1.20
  @@ -1,21 +1,6 @@
   config features:
   ----------------
   
  -- could add support for embedding apache directives into perl
  -  directives values, e.g. interpolating $ServerRoot
  -
  -  PerlSwitches -I$ServerRoot/lib/perl
  -
  -- Since now we have protocol modules, it'd be nice to have a similar
  -  thing to PerlCleanupHandler, which works only for HTTP requests. 
  -  It should probably be called PerlConnectionCleanupHandler.
  -
  -  If we add it we should probably rename PerlCleanupHadndler to
  -  PerlRequestCleanupHandler and keep the old name as a deprecated alias.
  -
  -  We could also have PerlServerCleanupHandler, but that's exactly what
  -  PerlChildExitHandler does. Consider having ServerCleanup as an alias.
  -
   - tie %ENV to r->subprocess_env so stores are added to
     r->subprocess_env and fetches are looked up in there and elsewhere
     (e.g. HTTP_* from r->headers_in).  see modperl_env.c, current
  
  
  
  1.3       +59 -1     modperl-2.0/todo/release
  
  Index: release
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/todo/release,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -u -r1.2 -r1.3
  --- release   18 Nov 2003 00:54:10 -0000      1.2
  +++ release   18 Nov 2003 21:45:18 -0000      1.3
  @@ -116,11 +116,69 @@
     STATUS: do the cleanup for all handlers, but provide a new config
     option so users can disable it if they know what they are doing.
   
  -* Apache::SizeLimit and Apache::Resource
  +* Apache::SizeLimit
  +  o Need to port tools that restrict the memory size used by processes
  +    for prefork mpms and develop new ones for threaded mpms. Need to
  +    work out the details of the implementation of the garbage
  +    collection thread for the threaded mpms as originally suggested by
  +    doug.  The issue with threads is that there is no way to know the
  +    thread's size, can we use B::Size and B::TerseSize?
  +
  +    prefork:
  +        Apache::SizeLimit (???)
  +        Apache::GTopLimit (???)
  +    threaded:
  +        Garbage Collector thread
  +
  +  => Ideally the tools should work transparently with threaded and
  +  non-threaded mpms, but how?
  +
  +* Apache::Resource
   
   * It'd be nice to have PAUSE and the clients support packages with
     several versions, like mod_perl 1.0 and mod_perl 2.0, since once we
     release it any dependency on mod_perl will be resolved as mod_perl
     2.0, when mod_perl 1.0 may be required instead.
  +
  +* Set/Add overlapping in config which is not doing the right thing. See:
  +  http://marc.theaimsgroup.com/?l=apache-modperl-dev&m=100622977803237&w=2
  +  http://marc.theaimsgroup.com/?t=97984528900002&r=1&w=2
  +
  +* Apache->server_root_relative:
  +  needs to default to current pool (pconf at startup, r->pool at
  +  request time) - solution: require the pool object to be passed. if a
  +  user doesn't have one, make them create one, e.g.:
  +  Apache::server_root_relative(APR::Pool->new, ....). Must make sure
  +  that the returned SV has a copy of that string and doesn't rely on
  +  anything that it's in pool, which will be now destroyed.
  +
  +* $r->cleanup_for_exec  needs to be added to Apache::compat as a noop.
  +  Owner: stas
  +
  +* ht_time() - now requires a pool, temporarily renamed format_time for
  +  1.x ht_time compat.  should we just leave as is or see if ht_time can
  +  be changed to not require a pool?
  +  Status: probably rename it back and just require the
  +  pool. Apache::compat will override this method and if the pool
  +  wasn't passed it'll create one behind the scenes (APR::Pool->new).
  +
  +* Apache::{Server,Process} classes:
  +  require mutex lock for writing (e.g. $s->(error_fname|error_log)
  +  Status: most likely some server/process datastructures aren't
  +  supposed to be modified at request time. So instead of mutex
  +  locking, we think we should simply have a flag that will be down
  +  during the startup and will allow methods modifying $s/$proc structs
  +  (the method will check that flag and if it's up it'll die). At the
  +  beginning of child_end it'll raise the flag and lower it at the end
  +  of child_exit.
  +
  +* push_handlers has a problem when called to add handlers to the
  +  current phase (segfaults, see t/error/push_handlers.t) check that
  +  get_handlers sees that added handler.
  +
  +* Apache::Reload
  +  - needs to handle properly redefined subs warnings
  +
  +
   
   
  
  
  

Reply via email to