Hi,

Cool!  Nice updates :)

On the version # question a few days back, I agree this is 4.x update.  For a 
5.x release, in addition to what you listed below, I'd add:

-- integrate SSL support directly (comm driver, api's)
-- integrate the comm drivers
-- figure out some better build environment for windows
-- ensure 64bit works everywhere
-- finally re-factor the Tcl management
-- make aolserver really just a loaded Tcl module

The last two would be disruptive but interesting or maybe just dumb on closer 
inspection.  Basically, aolserver could use the ns_itcl stuff along with Tcl 
package to better leverage existing extensions. As a module overall, the basic 
startup and event loop stuff could be exposed as commands instead of special 
case startup code in a custom binary.  I think that could get aolserver/tcl 
closer to command-line PHP type flexibility which enables, e.g., "crush" in 
drupal.  May be too much effort but something to explore.

-Jim




On Oct 19, 2011, at 1:45 AM, Jeff Rogers wrote:

> Hey all, me again.
> 
> For those of you who don't monitor the commits list I wanted to share a few 
> changes I've recently made as well as a few I'm still thinking about.
> 
> - implemented native decoding of strings in ns_returnfile.  This allows 
> filenames that are not utf-8 to be passed, similar to tcl core functions.
> 
> - committed a long-outstanding patch to address a fastpath caching bug where 
> incorrect file content could be delivered in a system when inodes are rapidly 
> being reused.  Added a new config option "cacheminage" to control this 
> behavior.
> 
> - implemented a suggestion to re-run pre-auth and post-auth filters on 
> internal redirects.  As this could break assumptions in unusual situations, 
> there is a config option "filterredirect" to disable it. Among other things, 
> this addresses an issue in openacs that made it complicated to handle 404 
> errors.  Also fixed a server crash when there is an error in the configured 
> error page.
> 
> - added flags to insert a filter at the beginning of the list of registered 
> filters instead of only at the end, and to order filters by priority.
> 
> - exposed the gzip flag to tcl scripts (ns_conn gzip)
> 
> - added another new filter, "pre-write" which runs after content has been 
> returned but before it has been sent over the network.  To make this useful, 
> there is a new method to ns_conn to examine and set the response content that 
> is about to be sent.  This could be useful for implementing something like 
> apache's mod_pagespeed, which rewrites content to do things like merge 
> javascript and css files to reduce external requests, or just strip 
> extraneous whitespace from a page.
> 
> - added a tuning knob "maxaccept" to let the driver accept more than one 
> connection per spin.  The SF RFE for this referenced a paper that found this 
> type of change could improve performance and reduce dropped connections under 
> load;  I unfortunately don't have a network capable of simulating enough load 
> to stress this so I cannot claim any measured improvement.
> 
> I also have a few other ideas I haven't gotten around to adding (or even 
> necessarily thinking through completely) yet:
> 
> - removing encoding and gzip compression from the normal response writing 
> codepath (Ns_ConnFlush) and making them into pre-write filters.
> 
> - adding an api to name C-coded filters and handler procs such that they 
> could be used by the tcl ns_register_filter/ns_register_proc commands. This 
> could eliminate a few special-purpose commands that do this same thing for 
> particular operations (ns_register_fastpath and ns_register_filter_shortcut).
> 
> - add support for chunked encoding for requests, digest authentication, and 
> Expect: 100-continue.  I've heard that these are already supported in 
> NaviServer, so this may be a fairly simple cut&paste enhancement.
> 
> - replace c-coded versions of many file operations with equivalent tcl-coded 
> versions.  Many of these functions (e.g., ns_mkdir, ns_cp) come from before 
> tcl had equivalent functionality, but tcl now has that functionality, and 
> it's better (native decoding).
> 
> - replace ns_share with tcl version built around nsv, if not eliminating it 
> entirely.
> 
> - remove other really old code like tclx keylist support.  I honestly don't 
> know if this is still being used, perhaps it could be kept around in a 
> "nscompat" module along with other things like ns_var and ns_share).  I'm a 
> bit reluctant to break compatibility without an easy switch to un-break it.
> 
> - make content sending event based, by pushing it back to the driver thread, 
> a task thread, or a completely new writer thread, rather than blocking a conn 
> thread if the content is big and the network is slow. There is support for 
> doing this at the tcl level, but it would be nice to have it implicitly 
> happen everywhere.
> 
> - let queue-waits be set up from a conn thread and the conn re-queued in the 
> driver thread.  This would let you do database operations before making 
> network calls and still wait for those calls to complete without tying up 
> conn threads.  This would mean a rather esoteric coding style but I think it 
> would make for a really powerful mashup engine.
> 
> Some of these are pretty disruptive (especially the last two), and 
> introducing incompatibilities (even ones with an easy off switch) is not 
> something to be taken lightly;  does anyone else think a new 4.5.2 release 
> with the recent bugfixes and non-disruptive new features could be done, and 
> then slightly disruptive stuff (i.e., moving c-coded commands to tcl) could 
> be targeted at 4.6?
> 
> Naturally, I'm also interested in any feedback on anything I've done or 
> suggested also.
> 
> Cheers,
> -J
> 
> 
> --
> AOLserver - http://www.aolserver.com/
> 
> To Remove yourself from this list, simply send an email to 
> <lists...@listserv.aol.com> with the
> body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject: 
> field of your email blank.


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to 
<lists...@listserv.aol.com> with the
body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject: 
field of your email blank.

Reply via email to