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 + +