I'm assuming most people have used SWIG in some capacity.  Since it
supports wrapping C++, it might work with the current C++ library.
With lwes we used it for perl/python/php wrappers, while ruby, dotnet
and java (and of course C) have their own bindings.  This was mostly based
on who wanted to do what development, when I originally wrote it in 1998
it was purely java, a C port followed after that, and then perl but using
xs.  The switch to swig cleaned up quite a bit (although it was Michael Lum
who did most of that).  Now lwes doesn't actually have clients/servers as
its a fire and forget logging mechanism, but for the most part if you
have clean library functions it's pretty easy to get setup.  Once things
slow down a little at OpenX I might have some time to experiment with
it.

The one nice thing about having a C/C++ library that plays nice with SWIG
is it opens support to many languages that you might not otherwise want
to support (see http://www.swig.org/compat.html#SupportedLanguages).

-Anthony

On Tue, Aug 17, 2010 at 01:06:42PM -0700, Bryan Duxbury wrote:
> Yeah, this is basically what I was trying to convey. I think it's absolutely
> critical to have native versions for situations when the extension cannot be
> used, and while I support the idea of sharing a common implementation for
> extensions, I do think we'll end up needing nearly as much wrapper code to
> support the common extension connecting to various languages. If it still
> seems like it's worth pursuing this path, by all means, have at it, and
> we'll see what it ends up looking like.
> 
> On Tue, Aug 17, 2010 at 12:45 PM, Mark Slee <ms...@facebook.com> wrote:
> 
> > I'm forking this part of the e-mail thread with a new subject line, as this
> > has gone in the direction of a specific technical discussion.
> >
> > On this topic, here are my opinions as a Thrift user:
> > - Ease-of-use is absolutely critical
> >  -- Being required to install/maintain PHP/Python/Ruby/etc. extensions is
> > very annoying and a huge barrier to entry, I would much rather just have
> > source that I can use directly
> >  -- When evaluating painkillers (like RPC systems), I first evaluate the
> > option that's easiest for me to evaluate, and if it effectively makes my
> > pain go away, I stick with it and move on with my real work
> >  -- Being able to easily understand generated code in my language of choice
> > is very nice, I like learning/understanding how things work in domains that
> > I understand
> > - I want good enough performance, sometimes I may need really high
> > performance
> >  -- Having extensions available to enable this is great
> >
> > My thoughts as a Thrift developer/community-member:
> > - Offering extensions for greater performance generally makes a lot of
> > sense
> >  -- Sharing core code across these extensions is clearly a good thing
> > - Extension frameworks are often quite complex to get right
> >  -- We'll likely need to find N people with expertise in language-specific
> > extension-writing to develop and maintain them
> >  -- My sense is that these people are harder to find than experts in the
> > languages themselves
> >  -- There may be just as much tricky code required to effectively
> > generate/wrap a common C library for each target language (I think this is
> > what Bryan is getting at)
> > - Seems like extensions would probably only address the binary protocol, we
> > don't want to force all custom protocol implementation into C
> >
> > Balancing these two, I'm supportive of work on C/extension code if there's
> > enough community to support it (which I think will be the hard part... as
> > fewer people truly love programming in C these days *and* deeply understand
> > other language extension models).
> >
> > Either way, I feel quite strongly that we should always continue offering
> > pure language libraries. I'd be really turned off as a user if I had to
> > install language extensions just to try Thrift out. I'm quite confident that
> > imposing this as a requirement would nontrivially stifle growth of the
> > Thrift userbase, which would in turn stifle advancement of the project as a
> > whole (Thrift users are programmers, most of our community members start out
> > as users).
> >
> > Cheers,
> > mcslee
> >
> >
> > -----Original Message-----
> > From: Mayan Moudgill [mailto:ma...@bestweb.net]
> > Sent: Tuesday, August 17, 2010 2:43 AM
> > To: thrift-dev@incubator.apache.org
> > Subject: Re: sharing knowledge means sharing control
> >
> >
> >
> > Bryan Duxbury wrote:
> > > I feel that this suggestion is a bit of a red herring. Sure, you could
> > > implement a tiny fraction of the Thrift "library" in C - maybe just the
> > > protocol? - but then you'd still be stuck needing the full code generator
> > > and a set of related language-specific tools. I'm thinking that even if
> > you
> > > coded up the core of the protocol in C, you'd probably have to put a
> > > language-specific C-extension wrapper on it in order for it to be usable
> > in
> > > the way that all the languages operate.
> > >
> > > Bottom line, I don't think there's near enough benefit to putting the
> > "core"
> > > in a common C blob. I could be convinced otherwise if someone has some
> > > strong ideas.
> > >
> >
> > Why is (was) there a C-version of the Python run-time? Performance maybe?
> >
> > Part of the problem with having N languages is that any fast, optimized,
> > but hard-to-write implementations/features will either have to be
> > written (and debugged!) N times or will end up not being available to
> > everyone. This, among other things, lowers the benefits (and therefore
> > attractiveness) of writing any high-performance code. Which may be why
> > the Thrift run-timess (even the C++ runtime) are fat & slow compared to
> > what it could be.
> >

-- 
------------------------------------------------------------------------
Anthony Molinaro                           <antho...@alumni.caltech.edu>

Reply via email to