On Mon, Jul 14, 2008 at 5:41 PM, David Reiss <[EMAIL PROTECTED]> wrote: > You need to create a JIRA issue and attach the patch so that you can > click the box that says you agree to have it distributed under the > ASL. After that, we can definitely merge it.
Done: https://issues.apache.org/jira/browse/THRIFT-82 Patrick > --David > > Patrick Collison wrote: >> Hey folks -- any chance of getting this merged? >> >> On Wed, Jun 11, 2008 at 12:51 AM, Patrick Collison <[EMAIL PROTECTED]> >> wrote: >>> On Mon, Jun 9, 2008 at 3:20 PM, Mark Slee <[EMAIL PROTECTED]> wrote: >>>> I'm not sure the attachment made it through. (Was it a file or a link? >>>> Maybe the Apache list doesn't like that...) >>> >>> Hmm, seems like it didn't. It's now at >> http://collison.ie/code/thrift-cl.patch. >>> >>> Cheers, >>> >>> Patrick >>> >>>> Sounds like a cool implementation, and I don't think it violates the >>>> spirit of Thrift since this sounds like a somewhat natural thing to do >>>> in the Lisp world for compatibility. >>>> >>>> -----Original Message----- >>>> From: Patrick Collison [mailto:[EMAIL PROTECTED] >>>> Sent: Monday, June 09, 2008 1:26 AM >>>> To: [EMAIL PROTECTED] >>>> Subject: Common Lisp port >>>> >>>> Hey, >>>> >>>> Attached is a port to Common Lisp. >>>> >>>> It's fairly rough, but since it's now good enough for my uses, I'm >>>> releasing it in case I never get around to cleaning it up fully. >>>> >>>> Some implementation notes: >>>> - It supports both client and server use. >>>> - It depends on Allegro Common Lisp for reading and writing floats (CL >>>> has no portable way of doing this), but adding support here for other >>>> implementations will be trivial. >>>> - It requires ASDF (a Common Lisp packaging system), and depends on the >>>> usocket and trivial-utf-8 libraries. >>>> - The generator works by translating the Thrift IDL to s-expressions >>>> (you can see tutorial.thrift's form at >>>> http://collison.ie/code/thrift-tutorial.lisp), and then doing the actual >>>> compilation in Lisp. Though this compilation will happen every time the >>>> source file is loaded, it's very fast: using Allegro, it takes me around >>>> 10 msec total to compile shared.thrift and tutorial.thrift. Doing the >>>> compilation at load-time is arguably against the spirit of Thrift, but >>>> in practice this approach works quite nicely with CL. Since source-files >>>> are only loaded once per session (which, in deployed systems, tend to >>>> run for days/months), the overhead is negligible, and greatly outweighed >>>> by the advantages (simpler code, more compile-time optimisation). It's >>>> worth pointing out that the load-time compilation is also completely >>>> transparent to the user, and the code generated by the C++ compiler can >>>> be loaded as if it were ordinary Lisp code (indeed, thanks to macros, it >>>> is). >>>> - There's actually another big reason for the intermediate s-exp >>>> approach -- it means ports to Scheme/Arc/Your Favourite Lisp Dialect can >>>> be done without any new C++ generator code. >>>> - It's the smallest port by a fairly large margin -- 892 non-blank lines >>>> total (325 lines of C++, 567 lines of CL). By contrast, Haskell >>>> (say) is 1730 (1285 C++, 445 Haskell), and Ruby is 1845 (848 C++, 997 >>>> Ruby). >>>> >>>> Feedback and improvements are of course welcome. >>>> >>>> Cheers, >>>> >>>> Patrick >>>> >>> >> >
