You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Konrad Grochowski (JIRA)" <ji...@apache.org> on 2014/11/17 20:31:34 UTC

[jira] [Commented] (THRIFT-2835) Add possibility to distribute generators separately from thrift core, and load them dynamically

    [ https://issues.apache.org/jira/browse/THRIFT-2835?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14215043#comment-14215043 ] 

Konrad Grochowski commented on THRIFT-2835:
-------------------------------------------

sound interesting, yet we have to remember about all problems introduced by dynamic libraries:
 * not only {{.so}} but {{.dll}} has to be supported
 * to allow different compilers to be used iface exe/dll has to be {{extern "C"}} pure C functions and structs (no std::string for passing arguments...)
 * on Windows thrift.exe is statically linked, using dll will introduce 'duplicated symbols' problem (both exe and dll will contain for example {{std::string}} definition) and may force us to move from mingw distribution to dynamically linked MSVC builds and towards DllHell (also - static symbols in exe may force users to use exact same mingw version for generating dll but it would be nice to allow MSVC dlls - if we're talking about full flexibility)
 * dll/so - exe iface has to be versioned and incompatibilities has to be detected at load time - just a reminder :)

I'm not saying I'm against it, just pointing out all things we'll have to remember about :)


> Add possibility to distribute generators separately from thrift core, and load them dynamically
> -----------------------------------------------------------------------------------------------
>
>                 Key: THRIFT-2835
>                 URL: https://issues.apache.org/jira/browse/THRIFT-2835
>             Project: Thrift
>          Issue Type: New Feature
>            Reporter: Anatol Pomozov
>              Labels: fbthrift,
>
> It is a follow-up for discussion with Facebook's fbthrift https://github.com/facebook/fbthrift/issues/48
> fbthrift adds its own generator that creates C++ classes based on their libraries. I do not know how upstreamable this generator but I think other companies would want to do the same - create their own custom generators.
> Currently there is no way to distribute generators separately from the thrift core. Thus the company have to fork whole project and add their own generator. It is what Facebook did.
> The idea is that thrift should be able to load language generators dynamically. i.e. a company foo creates its own generator and puts it to system /usr/lib/thrift/generators/cpp_foo.so When thrift compiler starts - it checks /usr/lib/thrift/generators/ and uses dlopen() to load the shared libraries. The shared library contains information about the generator (name, options, ...) thus it allows thrift core to use this custom third-party generator.
> This allows companies to create and distribute generator will less pain and no need to fork the project.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)