Apache 2.0 STATUS:
-Last modified at [$Date: 1999/12/02 06:33:05 $]
+Last modified at [$Date: 2000/04/18 18:47:52 $]
Release:
- 2.0: In pre-alpha development
-
-Plan:
-
- * Vague goal of an alpha or beta release in 1999. Commit-then-review
- is active.
+ 2.0a3 : vague plans to release in April sometime.
+ 2.0a2 : released March 31, 2000
+ 2.0a1 : released March 10, 2000
RELEASE SHOWSTOPPERS:
-
- * Complete HAVE_SENDFILE work. Need to add iovec head and tail pointers to
- the iol sendfile API and make it work under Unix.
- Status: Bill <stoddard@raleigh.ibm.com> is working on this
-
- * Pipes to CGI scripts are not being timed out
- Status: code has been added to APR to support timing out pipes.
- This needs to be used in Apache now.
+ * Win32: Get mod_auth_digest working under win32
+ - APR_HAS_RANDOM should be defined on windows and there is a
+ lib/apr/misc/win32/rand.c which is basically a copy of what
+ mod_auth_digest used to use.
+
+ * Re-work configuration for top level Apache. Work should start with
+ trying to clean the autoconf stuff. If and only if this proves
+ impossible to do (very unlikely), autoconf should be removed and we
+ will roll our own config implementation.
+ NOTE: When this is implemented, it would be really nice if the
+ default cgi module on Unix with a threaded MPM is the cgid
+ module. This should be override-able of course.
+ Status: Jim Jagielski is looking into this.
+
+ * Fix SAFEREAD.
+ see <Pine.LNX.4.21.0004101511380.7822-100000@twinlark.arctic.org>
+
+ * MPMs should have responsibility for closing sockets and
+ registering the socket cleanup. Stop registering multiple
+ cleanups for each socket. Move socket close code out of
+ http_connection.c and into the MPMs.
+ Status:
+
+ * Reliable piped logs look broken everywhere. Each MPM includes essentially
+ identical code to ap_register_other_child(), etc. Most of this code can
+ be moved out of the MPMs and into some common file (http_core.c?).
+ Dean says presumably you mean an os-specific file?
* Put back resource limit code
- * Port mod_rewrite
- Status: Paul Reder <rederpj@raleigh.ibm.com> is working on this.
-
- * Port mod_mime_magic
- Status: Paul Reder <rederpj@raleigh.ibm.com> is working on this.
-
* suEXEC doesn't work
Status: Manoj has posted an patch to fix this.
<19991103003605.A20612@samosa.mindspring.com>
- * Windows NT port isn't done
- Status: Bill <stoddard@raleigh.ibm.com> is working on MPM and APR.
- Remaining work:
- 1. Add back ability to run Apache as a service
- 2. Fix Win9* specific code in the winnt MPM
- 3. Get the MPM working in multi process mode (one parent & one child)
- 4. Test access logging with multiple threads. Will the native file I/O
- calls serialize automagically like the CRT calls or do we need to
- add region locking each time we write to the access/error logs?
+ * Win32: Enable the Windows MPM to honor max_requests_per_child
+ Status: Bill will fix this.
+
+ * Win32: Get Apache working on Windows 95/98. The following work
+ (at least) needs to be done:
+ - winnt MPM: Fix 95/98 code paths in the winnt MPM. There is some NT
+ specific code that is still not in NT only code paths
+ - APR sendfile uses TransmitFile which is not available on
+ 95/98.
+ - ap_stat uses GetFileAttributeEx which is not available on
+ 95/98
+
+ Status:
+
+ * Win32: Test access logging with multiple threads. Will the
+ native file I/O calls serialize automagically like the
+ CRT calls or do we need to add region locking each time
+ we access the logs?
+ Status:
* Current 2.0 code is not tested on many Unix platforms. Make 2.0
work on most, if not all the systems 1.3 did
Status: Autoconf and APR will get us most of the way there.
- * The module API is a weird combination of the old table and the new
- hook system. Switch completely to the new hook system
- Status: Ben Laurie is working on this.
+ * The handler hook needs to use the new registration system
* Modules. Which modules do not work yet, can we get a list?
* We need a thread-safe resolver, at least on Unix.
- Status: The best known candidate would be something from BIND
- (v8 or v9?) The only other option would be to mutex all the
- resolver calls,
+ Status: The best known candidate would be something from
+ BIND v9.
+
+ * Switch from HSRegex to PCRE. New code should be src/lib/pcre/
+ (ftp://cus.cam.ac.uk/pub/software/programs/pcre/)
+ Status: Greg +1
+
RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP:
+ * Configuration Modules. Allow a new module type that reads
+ a config file and sets up an internal tree structure for
+ configuration.
+
+ * "make distclean" leaves (at least these) turds:
+ lib/.deps
+ lib/apr/.deps
+ lib/apr/shmem/unix/mm/config.log
+ lib/apr/shmem/unix/mm/mm_conf.h
+ lib/apr/shmem/unix/mm/libtool
+ lib/apr/shmem/unix/mm/config.status
+ lib/apr/shmem/unix/mm/Makefile
+ lib/apr/shmem/unix/mm/mm-config
+ main/a
+ modules/.deps
+ modules/mpm/.deps
+ os/.deps
+
+ * the top-level configure.in appears to use $USE_MAINTAINER_MODE = yes
+ to set -Wall/etc. flags, and the APR configure.in appears to use
+ --with-debug. both seem like more of a hardwired pain compaired
+ to the pre-2.0 method of setting EXTRA_CFLAGS.
+
+ * Win32: Reuse accept socket after transmitfile/close
+ This is not a bug, but would be nice to get this feature in
+ before ship.
+
+ * Win32: Enable the winnt MPM to use the new scoreboard API
+
+ * Win32: Graceful restart of a service is broken (code does shutdown then start)
+
+ * Dynamically loadable MPMs
+ Enable users of the binary distributions of Apache to be able to
+ dynamically load the MPM.
+
+ Dean says this probably isn't a good idea. For example consider
+ -lpthread, you couldn't have the same core run with pthreads,
+ prefork, and gnu pth without a lot of headaches is my guess.
+
+ * Platforms that do not support fork (primarily Win32 and AS/400)
+ Consider introducing HAVE_FORK feature macro. Architect start-up code
+ that avoids initializing all the modules in the parent process on
+ platforms that do not support fork.
* Clean the code. There are a lot of places we used APR but didn't
remove the hacks that were required for the cross-platform code in
1.3. We need to make the code look like APR was supposed to be there.
- * Go throught the Bug DB and research the bugs marked "suspended". People
- were told these would be considered for inclusion in Apache 2.0, it
- would be nice to actually do so.
+ * Go throught the 1.3 Bug DB and research the bugs marked "suspended".
+ People were told these would be considered for inclusion in Apache 2.0,
+ it would be nice to actually do so.
- * Win32: Migrate the MPM over to use APR thread/process calls. This would eliminate
- some code in the Win32 branch that essentially duplicates what is in APR.
- Status: Bill <stoddard@raleigh.ibm.com> is working on this.
+ * Win32: Migrate the MPM over to use APR thread/process calls. This
+ would eliminate some code in the Win32 branch that essentially
+ duplicates what is in APR.
- * Move I/O layering into APR.
+ Bill says we need a new procattr, APR_CREATE_SUSPENDED (or
+ something similar) to direct ap_create_process to create the
+ process suspended. We also need a call to wake up the suspended
+ process This may not be able to be implemented everywhere though.
- * There are still a number of places in the code where we are loosing error
- status (i.e. throwing away the error returned by a system call and replacing
- it with a generic error code)
+ Status:
- * APRize the stat function. CRT stat() is about 30% slower on Windows than
- the equivalent native Windows call. The APR call should return the Unix
- style stat structure, just to keep it familier.
+ * Move I/O layering into APR.
+
+ * There are still a number of places in the code where we are
+ loosing error status (i.e. throwing away the error returned by a
+ system call and replacing it with a generic error code)
- * Implement reliable piped logs on Windows
- Status: Bill <stoddard@raleigh.ibm.com> has prototype code (not reliable) in 1.3.
- Should be much cleaner with APR in 2.0.
+ * Win32: Implement reliable piped logs on Windows
+ Status:
* Switch to autoconf, et al. for configuration.
Status: Manoj has placed an initial version into the 2.0
repository. Todos include:
- - Support selection of modules (including MPMs; only Dexter
- works right now). Probably involved creating a directory for
- each module
- - "make install" and "make depend" should work
+ - "make install" should work
- a tool to simplfy third-party module building should be
written. Something like apxs
- Add a lot more checks to satisfy the various platforms, e.g.
for threading
* Use APR to get rid of more platform dependancies.
- Status: Ryan Bloom <rbb@raleigh.ibm.com> is working on this.
+ Status: Ryan Bloom <rbb@covalenet.net> is working on this.
* The connection status table is not very efficient. Also, very few stats
are exported to the connection status table (easy to fix), and mod_status
is ugly.
+ * Optimise the name-based <VirtualHost> implementation so that it uses
+ a hash table instead of a linear linked list scan.
+
+ * Mass vhosting version of suEXEC.
+
+ * Provide a sane API for handling the request's environment variables.
+
+ * configuration option to use *DBM
+ Status: Greg +1 (volunteers)
+
+ * add SDBM into src/lib/sdbm/ as a default/fallback DBM implementation.
+ SDBM is used by Perl, mod_dav, mod_sssl, others for basic DBM support.
+ Status: Greg +1 (volunteers)
+
Other bugs that need fixing:
* MaxRequestsPerChild measures connections, not requests.
behavior. Dean has suggested getting rid of regex containers
completely.
- * SIGSEGV on Linux seems to only kill a thread, not a whole process;
- we need to work around this, probably by bouncing the signal to
- the sigwait thread. But this will hurt debugability.
+ * SIGSEGV on Linux (glibc 2.1.2) isn't caught properly by a
+ sigwaiting thread. We need to work around this, perhaps unless
+ there is hope soon for a fixed glibc.
Other features that need writing:
* Finish infrastructure in core for async MPMs
- Status: ?
+ Status: post 2.0
* TODO in source -- just do an egrep on "TODO" and see what's there
- * Work on other MPMs. Possible MPMs discussed or in progress include:
-
- - Dean Gaudet's async MPM
- Status: dean is unlikely to begin work on this any time soon...
- has lots of ideas he'll share with folks willing to begin
- tackling the issues. this is apache 2.1 material.
-
- - Zach Brown's <zab@zabbo.net> Linux siginfo MPM
- Status: ?
-
Documentation that needs writing:
+ * Mod_status docs are needed.
* The concept of MPMs, especially if we ship more than one MPM for a
given platform
- * New directives in the various MPMs
+ * New directives in the various MPMs and appropriate links from
+ obsolete directives in core.html to the MPM documentation.
+
+ * Revise manual/stopping.html and the last part of
+ manual/misc/perf-tuning.html to take account of the MPMs.
* API documentation
Status: Ben Laurie has written some hooks documentation
does not show the contents of new files until later.
Available Patches:
-
* Mike Abbott's <mja@trudge.engr.sgi.com> patches to improve
performance
Status: These were written for 1.3, and are awaiting a port to