On Fri, Jan 21, 2011 at 3:40 PM, Clint Moore <[email protected]> wrote: > On Fri, Jan 21, 2011 at 5:28 AM, Michael Snoyman <[email protected]> wrote: >> On Fri, Jan 21, 2011 at 2:30 PM, Clint Moore <[email protected]> wrote: >> Looks like you've done a good job so far, and have even put in a fair >> amount of docs. Impressive! Just some minor thoughts: > > Well thanks for the encouragement! > >> * I think you should consider using ByteStrings instead of Strings in >> a lot of places (eg, headers). > > Ugh! I forgot to include in my email that that was the first thing I > am going to do. I'm actually working on that now. > >> * In m2_parse, it looks to me like usage of Parsec is overkill, since >> a simple break would work. As a plus, if you also switch to >> ByteString, you could use breakByte which will give you a highly >> optimized parsing function. > > Now this I wouldn't have thought of. I'll go back into m2_parse and > look it over again. > >> * For response_body, I'd **really** avoid usage of String. In fact, >> some form of enumerator would be very good there. But at the very >> least, please switch to a lazy ByteString. > > Yep, definitely bytestrings everywhere. I guess I was overly excited > to get it in front of someone and kinda jumped the gun on releasing > it. There'll be a new version tomorrow. > >> I can't really say too much more without knowing more of the internals >> of zeromq and mongrel2, but I think this is a good project to have >> going for the Haskell community. Thank you. > > Again, I appreciate the complement! > >> Obviously I'm biased here, but I'd love to see a WAI wrapper for >> mongrel2. Would you be interested in either having this package >> provide a WAI interface, or writing a separate package that wraps this >> package and provides one? I'd be happy to offer some help if you're >> interested. > > One of the reasons the handler is so simply implemented is so that, at > least I hope, is that it makes it very simple to implement handlers. > Incidentally, WAI was the first library I was going to start with for > implementing some handlers myself. I figure the more handlers I write > the more bugs I'll catch. >
Glad to hear you were already working on the bytestring switch, I hope I didn't focus on that too much ;). If you *are* planning on writing a WAI handler for this, you will need to provide something more powerful for the response body than lazy bytestrings. Well, either that, or use some ugly forkIO/unsafeInterleaveIO tricks that I don't mention in polite company. Out of curiosity, does mongrel2 provide any kind of optimization for serving files via a sendfile system call? I would be surprised if it didn't. Michael _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
