[cfe-dev] Clang 3.5 Release Pre-Pre-Pre-Announcement

Nico Weber thakis at chromium.org
Sun May 18 14:31:42 PDT 2014


On Sun, May 18, 2014 at 1:34 PM, Alp Toker <alp at nuanti.com> wrote:

>
> On 16/05/2014 22:36, Reid Kleckner wrote:
>
>> On Fri, May 16, 2014 at 11:49 AM, Alp Toker <alp at nuanti.com <mailto:
>> alp at nuanti.com>> wrote:
>>
>>
>>     On 16/05/2014 21:20, Richard wrote:
>>
>>         In article <4FBFE344-19A4-4A9A-9C93-AB9A4554D6CE at gmail.com
>>         <mailto:4FBFE344-19A4-4A9A-9C93-AB9A4554D6CE at gmail.com>>,
>>              Bill Wendling <isanbard at gmail.com
>>
>>         <mailto:isanbard at gmail.com>> writes:
>>
>>             Have you been sleeping poorly worried about the Clang 3.5
>>             release? Well,
>>             this may help! The plan right now is to start testing in
>>             July with August
>>             as the target release month. There isn't a schedule yet,
>>             of course. But it
>>             should be a goodly amount of time for all y'all to prepare
>>             for the release
>>             process.
>>
>>             If you have any questions, please let me know. If you'd
>>             like to volunteer
>>             to be a tester, also let me know. :-)
>>
>>         I have some packaging changes I'd like to see in place for the 3.5
>>         packaging.  The changes include some more utilities in the
>>         package for
>>         refactoring tool developers and there is an issue with the way the
>>         Windows packages are being built that causes them to omit many
>>         of the
>>         things in the unix packages.  Again, this is to make it easier to
>>         write refactoring tools.
>>
>>
>>     So far the idea with the Windows installer has been to provide a
>>     toolchain rather than a complete SDK, but it'd be nice to see if
>>     we can head in that direction, perhaps with a separate SDK package.
>>
>>     CC'ing in Hans who has opinions on this.
>>
>>     Which files did you want to include specifically?
>>
>>
>> Initially I didn't want to do this because it bloats the installation.
>>  The package itself is compressed, so a lot of the code duplication is
>> mitigated.
>>
>> Normally people solve this with shared libraries, and I assumed that's
>> what we did on Linux, where we have a shared library build.  Turns out I
>> was wrong, our pre-built binaries are totally static.  So maybe this
>> doesn't matter as much as I thought it did.
>>
>> Relatedly, I think at some point we should add LLVM_EXPORT annotations to
>> APIs in Support/ADT, IR, Target, etc,
>>
>
>
> I agree that it would be absolutely fantastic to support shared library /
> dll builds in the configuration you describe and think we should work
> towards that.
>
> I hope however that we _never_ attempt to do it with annotations like
> LLVM_EXPORT in the source core, nor with export lists. The reason:
>
> 1) They're a complete pain to maintain for developers not working on
> Windows.
>

I don't have a dog in this race either way, but I should point out that if
you build with -fvisibility=hidden and let your annotation expand
to __attribute__((visibility("default"))) while compiling your library and
to nothing for clients of your library, non-Windows shared builds will work
exactly when the the Windows shared build works. (This is how the Chromium
components build works, and it works fairly well there as far as I can
tell.)


>
> 2) Even on Windows, there are at least two possible dynamic linking
> configurations:
>   (a) several modular DLLs
>   (b) LLVM.dll + clang.dll
>   (c) LLVMClang.dll
>
> Annotations could only ever support one of the above given that what's
> exported and what's imported is different for each.
>
>
>  so that we can reduce our .dynsym count and actually support an LLVM.dll
>> on Windows.
>>
>
> So, it strikes me that this problem has great parallels with LTO,
> specifically the task of calculating the minimal set of symbols and
> interdependencies between modules (in this case shared libraries and
> executables).
>
> Perhaps we can treat this as a technology problem and hook into LTO or
> introduce some similar analysis to calculate shared library import /
> exports without having to pepper them throughout the source code.
>
> Rafael and I were discussing something like in person recently. Rafael,
> can you think of a way the LTO machinery could assist in determining DLL
> imports and exports at build time?
>
>
>  However, I know there is *strong* resistance in some camps due to the
>> burden this would impose.
>>
>
> That resistance is valid. Annotations have been a total mess in the
> projects I've seen them applied. Apart from LLVM I'm sure other projects
> like WebKit / Chromium wanting to support DLL builds would benefit from any
> solution we come up with.
>
>
> Alp.
>
>
> --
> http://www.nuanti.com
> the browser experts
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20140518/fdbfb634/attachment.html>


More information about the cfe-dev mailing list