dougm 01/05/08 15:26:07 Modified: todo README deprecated_features.txt missing_old_features.txt possible_new_features.txt Added: todo api.txt Removed: todo Apache-class.txt Log: update todos Revision Changes Path 1.3 +10 -5 modperl-2.0/todo/README Index: README =================================================================== RCS file: /home/cvs/modperl-2.0/todo/README,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- README 2001/01/02 19:03:05 1.2 +++ README 2001/05/08 22:25:56 1.3 @@ -1,14 +1,17 @@ this directory contains notes on whats left to be done, covering all areas including: -o interptreter management -o Perl interfaces to Apache structures -o Perl interfaces to Apache API functions -o I/O + filtering +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 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 @@ -17,8 +20,10 @@ somewhat prioritized into: +- api.txt + - missing_old_features.txt - deprecated_features.txt -- possible_new_features.txt \ No newline at end of file +- possible_new_features.txt 1.2 +11 -1 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.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- deprecated_features.txt 2001/01/02 19:03:06 1.1 +++ deprecated_features.txt 2001/05/08 22:25:57 1.2 @@ -4,9 +4,19 @@ c) be a form that was nothing like 1.xx (e.g. Apache::Leek) d) split off into something standalone on cpan +- PerlSendHeader (implemented in 2.0 as "PerlOptions +ParseHeaders") + should have a compat wrapper + +- PerlTaintCheck, PerlWarn (implemented in 2.0 with PerlSwitches) + should have a compat wrapper + - MaxModPerlRequestsPerChild + +- $r->seqno, $r->sent_header, $r->cgi_env, $r->cgi_var, + $r->query_string, $r->basic_http_header, $r->new_read, + $r->write_client, $r->read_client_block, $r->translate_name -- $r->seqno +- $r->content, $r->args in-a-list-context (exist in Apache::compat) - $Apache::Server::Starting, $Apache::Server::ReStarting 1.2 +16 -10 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.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- missing_old_features.txt 2001/01/02 19:03:06 1.1 +++ missing_old_features.txt 2001/05/08 22:25:59 1.2 @@ -2,10 +2,20 @@ implemented unless otherwise noted. there are more missing features listed in deprecated_features.txt -- test suite - - DirectiveHandlers +- PerlCleanupHandler + +- Perl{Set,Add}Var + +- PerlSetupEnv (currently on by default w/ SetHandler perl-script) + +- PerlSetEnv, PerlPassEnv + +- PerlModule, PerlRequire: not yet implemented + +- pod directives (=pod,=back,=cut) and __END__ + - <Perl> sections - modperl_include #perl @@ -14,8 +24,6 @@ - PerlFreshRestart -- PerlSendHeader - - cgi emulation, i.e. %ENV/END{}/@INC/exit() management - set Perl ids after fork $( $) $< $> (child_init) @@ -26,14 +34,12 @@ core modules: ------------ - -- Apache, Apache::Server, Apache::Connection -- Apache::Constants, Apache::Constants::Exports +- Apache::ModuleConfig -- Apache::ModuleConfig, Apache::CmdParms +- Apache::File, Apache::Util -- Apache::File, Apache::Log, Apache::URI, Apache::Util +- see also: xs/maps/apache_function.map addon modules: ------------- @@ -54,4 +60,4 @@ - Apache::ExtUtils -- Bundle::Apache \ No newline at end of file +- Bundle::Apache 1.3 +5 -7 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.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- possible_new_features.txt 2001/01/02 19:48:45 1.2 +++ possible_new_features.txt 2001/05/08 22:26:00 1.3 @@ -16,8 +16,6 @@ - @ARGV magic, tie to query string -- overload %ENV magic to call subprocess_env when a value is set - - sub handler : method ($) {} call $class->new($r) and pass the returned object as the first and only arg to the method handler @@ -27,6 +25,8 @@ optimization features: --------------------- +- use 5.7.1+'s PerlIO rather than tied filehandles + - copy-on-write SvPVX - hook Perl malloc into apr_pool @@ -42,15 +42,13 @@ trigger) - use subpools per-callback/handler (might trim some memory bloat) + note: creating subpools requires a malloc mutex lock with threaded + mpms api: --- -- Apache->http_message(501); #rc code returns a string - - improve the "stacked handlers" implementation, including: - + config merging of AV*'s - + allow push_handlers to have an additional argument, an array ref, which will be passed to the handler as arguments, e.g. $r->push_handlers("PerlHandler", \&some_sub, ['one', 'two', 'etc']); @@ -82,4 +80,4 @@ apache features that would be neat for mod_perl: ----------------------------------------------- -- "autoload" hook for configuration directives \ No newline at end of file +- "autoload" hook for configuration directives 1.1 modperl-2.0/todo/api.txt Index: api.txt =================================================================== important parts of the api that are missing in no particular order ------------------------------------------ tied filehandle interface: -CLOSE, GETC, PRINTF, READLINE APR::Table tie mechanism: $r->headers_out->{KEY} is not currently supported might want to make this optional, disabled by default missing: APR::Table->do $r->finfo: need apr_finfo_t <-> struct stat conversion (might already be there, haven't looked close enough yet) $r->header_{in,out}: deprecated, but should be included in Apache::compat $r->no_cache: does not yet manage Pragma, Cache-control headers as 1.x did $r->pnotes: not yet implemented $r->subprocess_env: in void context should populate %ENV as 1.x does $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->module: not yet implemented Apache->server_root_relative: needs to default to current pool (pconf at startup, r->pool at request time) Apache::Util::* not very usable at the moment. also need to default to current pool (pconf at startup, r->pool at request time) missing: size_string() missing: validate_password() (now lives in APR) enhancements: consider jeff baker's more robust implementation of my_escape_html(), which should probably be made in apache-2.0 itself Apache->define: exists as Apache::exists_config_define, which should stay, Apache::compat could implement a wrapper. $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. $r->print: does not yet honor $| $r->{hard,reset,soft,kill}_timeout: do not exist in 2.0. should be deprecated. consider adding noops in Apache::compat $r->auth_{name,type}: are not yet writable. will also require locking. $r->get_basic_auth_pw: does not yet default AuthType and AuthName as 1.x does $r->as_string: not yet implemented Apache::{Server,Process} classes: require mutex lock for writing Apache->untaint: not yet implemented, required for Apache::Registry Apache->exit: not yet implemented maybe use die $r/PROPAGATE instead of tie-ing $@ ? Apache->import: not yet implemented, required for exit/warn overridding $r->current_callback: not yet implemented $r->{get,set,push}_handlers: need to deal properly with modification of the current handler phase we're running. $r->dir_config: depends on Perl{Set,Add}Var Apache->httpd_conf: depends on <Perl> sections $r->location: not yet implemented 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->gensym: >> Apache::compat ? $r->post_connection: alias not implemented $r->slurp_filename: optimized version not yet implemented (compat version exists in Apache::compat) $r->{stash,clear}_rgy_endav: not yet implemented, nor is any END block management Apache->unescape_url{_info}: not yet implemented. should be moved to Apache::Util $r->content_language: deprecate in favor of $r->content_languages? would require that apache-2.0 is also rid of r->content_language usage apr_array_header_t: needs an interface, either methods and/or tied array interface Apache::perl_hook: should have this or something check if PerlOptions allows the given handler/feature to be used. 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.