-
Notifications
You must be signed in to change notification settings - Fork 286
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
use travis-ci build matrix to test different compilers #901
Conversation
MartinNowak
commented
Nov 21, 2014
- fixes unittest all relevant compilers #734
- dmd-2.065.0, dmd-2.066.1, ldc-0.14.0, gdc-4.9.0
- fixes vibe-d#734 - dmd-2.065.0, dmd-2.066.1, ldc-0.14.0, gdc-4.9.0
DMD-2.066.1 is the only one passing right now. |
I use gdc to build gdcproject.org, so either the download version is missing a bugfix I did for vibe.d (which means someone needs to build new binaries), or there is a new change to vibe.d master that causes an ICE - maybe a change that is 2.066.1 specific? |
Quick question out of context, how do you deal with druntime's Borland inline assembly in gdc? I'm looking forward to maintaining vibe.d compatibility eventually and fibers require some asm magic so I'm a bit puzzled at how you manage to get them working without Borland asm support |
LDC 0.14.0 definitely will not pass for frontend reasons if DMD 2.065 doesn't either. I've also fixed a few LDC codegen bugs that affected vibe.d a while back, and they aren't in the 0.14 releases yet. The 0.15.0 beta should build vibe.d master from a month ago or so; haven't checked the tests since. |
@etcimon - by the time I get round to 2.066 update, it'll be written in assembly (as opposed to inlined in D code). Ucontext is the current workaround on Linux, but bloats the size of Thread. |
Do you mean GCC-inline assembly? Could you point me to the relevant source code from GDC? |
This is what currently happens on Linux (and all other Posix thread compliant systems): https://github.com/D-Programming-GDC/GDC/blob/99c2f902471889528f96aa89d3f5b28598843078/libphobos/libdruntime/core/thread.d#L3355 This is where the replaced assembly will end up being located to: https://github.com/D-Programming-GDC/GDC/blob/99c2f902471889528f96aa89d3f5b28598843078/libphobos/libdruntime/core/threadasm.S#L415 |
According to my research, the GDC inline assembly could also be used for LDC if it were inline GCC rather than a .S file. I'm still unsure about why the druntime/phobos library for each compiler couldn't simply be merged in the official repository with I think my work on SIMD would be a proper example for what I mean: https://github.com/etcimon/botan/blob/master/source/botan/utils/simd/emmintrin.d In this case, each compiler version is covered in the module, no need for a separate makefile. It should be this way for most parts of the official druntime, or am I missing something? |
- ICE when initializing static class members to void - the static variable would probably end up in the binary even though it was only used to check for a property https://issues.dlang.org/show_bug.cgi?id=13194
- ldc segfaults while building a nested context for ClientTask.execute function (not sure why it does build a context) - apparently fixed in ldc-0.15.0-beta1
f2f16bc
to
8fe6f5a
Compare
- the lambda is emitted to libvibe-d.a but only as local symbol (small t in nm) - fixed by templatizing the auto function (lambda is generated on first call)
8fe6f5a
to
68fb42f
Compare
I added workarounds for the different compilers, ready to merge now. |
Wonderful ! |
There are no binary releases and it's fairly unstable both from dmd's and vibe.d's site (e.g. the new std.concurrency.Scheduler isn't really finished). |
@ibuclaw :
I guess you used dub build. It works fine. What triggers a SEGV is |
Updated to use travis-ci's D support. |
LDC 0.15.1 is out with 2.066.1 support. Could it be added to the build matrix ? |
0233410
to
2fe6ef1
Compare
Done |
Use travis-ci build matrix to test different compilers