Jump to page: 1 2 3
Thread overview
LDC 0.11.0 Beta 3
Jun 05, 2013
David Nadlinger
Jun 07, 2013
bearophile
Jun 07, 2013
David Nadlinger
Jun 07, 2013
bearophile
Jun 09, 2013
Piotr Szturmaj
Jun 07, 2013
David Nadlinger
Jun 07, 2013
bearophile
Jun 07, 2013
bearophile
Jun 08, 2013
bearophile
Jun 08, 2013
bearophile
Jun 19, 2013
David Nadlinger
Jun 22, 2013
bearophile
Jun 22, 2013
bearophile
Jun 22, 2013
bearophile
Jun 27, 2013
bearophile
Jun 30, 2013
bearophile
Jun 30, 2013
Kai Nacke
Jun 30, 2013
Kai Nacke
Jun 30, 2013
Kai Nacke
Jun 30, 2013
bearophile
Jun 30, 2013
Kai Nacke
Jul 02, 2013
Kai Nacke
Jul 02, 2013
bearophile
June 05, 2013
Here is the third round of beta packages for LDC 0.11.0. We are still missing a proper release announcement, but here is a quick overview of the most important facts:

 - Based on the DMD 2.062 frontend.
 - D1 is no longer supported.
 - The GC to stack promotion optimizer pass is enabled by default on -O2 and higher. Still *very* conservative, though, due to a change in the signature of the relevant druntime functions.
 - The LDC_global_crt_ctor/LDC_global_crt_dtor pragmas allow registering functions to be run during C runtime startup/shutdown. This is mostly helpful for implementing druntime itself.
 - The LDC_never_inline pragma can now be used to mark functions that should never be inlined.
 - As with recent versions of DMD, .di file generation now strips functions bodies. The '-Hkeep-all-bodies' command line has been added to disable this, like '-inline' does for DMD.
 - '-O' now is equivalent to '-O3' (instead of '-O2').
 - LDMD now correctly parses extra arguments for -run and no longer drops -deps.
 - Passing large static arrays by value no longer leads to horribly inefficient code and long compile times.
 - A large number of code generation bugs has been fixed, see the GitHub issue tracker [we are missing a nice overview].


Platform support
---
 - Linux x86/x86_64: Stable
 - OS X 10.7+: Stable (does *not* work on Snow Leopard and below)
 - Win32/MinGW: An alpha-quality version is available as part of this release. For use together with [1], see [2] for an overview of the current state.
 - Win64/MSVC: Not officially part of this release yet, a preview version is available here: http://forum.dlang.org/post/vscpokspiejlckivqsuq@forum.dlang.org

For the current state on other platforms such as Linux/PPC64 and ARM, please refer to the LDC wiki. [3]


Package download
---

http://d32gngvpvl2pi1.cloudfront.net/ldc2-0.11.0-beta3-linux-x86.tar.gz
http://d32gngvpvl2pi1.cloudfront.net/ldc2-0.11.0-beta3-linux-x86.tar.xz
http://d32gngvpvl2pi1.cloudfront.net/ldc2-0.11.0-beta3-linux-x86_64.tar.gz
http://d32gngvpvl2pi1.cloudfront.net/ldc2-0.11.0-beta3-linux-x86_64.tar.xz
http://d32gngvpvl2pi1.cloudfront.net/ldc2-0.11.0-beta3-mingw-x86.7z
http://d32gngvpvl2pi1.cloudfront.net/ldc2-0.11.0-beta3-osx-x86_64.tar.gz
http://d32gngvpvl2pi1.cloudfront.net/ldc2-0.11.0-beta3-osx-x86_64.tar.xz
http://d32gngvpvl2pi1.cloudfront.net/ldc-0.11.0-beta3-src.tar.gz

MD5 checksums:

efc5863f6e5378849ff3d5b3b094bfc4  ldc2-0.11.0-beta3-linux-x86.tar.gz
36b78ff5d788a1eb1dc875910cd5fd25  ldc2-0.11.0-beta3-linux-x86.tar.xz
041679f78109876074c8cf11a151a2f2  ldc2-0.11.0-beta3-linux-x86_64.tar.gz
1768b0e4695256f6c18e908390edf2f2  ldc2-0.11.0-beta3-linux-x86_64.tar.xz
f70b31ae997bbf3d4505a26d1f5fa8ce  ldc2-0.11.0-beta3-mingw-x86.7z
fc0fe396d20a735b00c070c07da79906  ldc2-0.11.0-beta3-osx-x86_64.tar.gz
0fe50724975df55ee0e6b0094fc05acb  ldc2-0.11.0-beta3-osx-x86_64.tar.xz
e9d14e674a68a5ca688140e845105046  ldc-0.11.0-beta3-src.tar.gz


There are virtually no differences to beta 2, except for a tweak to how the build system locates LLVM, a cosmetic fix to the debug info compiler info field, and a few MinGW-specific fixes which were erroneously omitted from the last version.

If no unexpected major issues crop up, I'd propose to make this the final release (except for the file names, that is) – in hindsight, I should have gone for "-rc1" instead of "-beta3". Any other regressions and big issues would be fixed in 0.11.1, which I hope we can release in another week or so. This upcoming release would also be built against LLVM 3.3 to work around the exception-related crashes on OS X (see below), and thus necessarily include the bool i1->i8 transition.

Sounds good?

 — David



[1] http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/rubenvb/gcc-4.8-dw2-release/i686-w64-mingw32-gcc-dw2-4.8.0-win32_rubenvb.7z/download
[2] http://klickverbot.at/blog/2013/05/the-state-of-ldc-on-windows/
[3] http://wiki.dlang.org/LDC
June 07, 2013
I am compiling some of my code with ldc2 on Windows, and I have found this, reduced:


import core.stdc.stdio: printf;
struct Foo {
    double[2] a;
}
auto foos = [Foo([0.0, 0.0]), Foo([10.0, 20.0])];
void main() {
    auto b1 = foos[0];
    auto b2 = foos[1];
    double[2] d = 0;
    d[] = b1.a[] - b2.a[];
    printf("%0.9f %0.9f\n", d[0], d[1]);
}



...>ldmd2 -run test.d
0.000000000 0.000000000

...>dmd -run test.d
-10.000000000 -20.000000000

I have found another bug that is less easy to reduce...

Bye,
bearophile
June 07, 2013
On Friday, 7 June 2013 at 13:34:21 UTC, bearophile wrote:
> I am compiling some of my code with ldc2 on Windows, and I have found this, reduced:
>
>
> import core.stdc.stdio: printf;
> struct Foo {
>     double[2] a;
> }
> auto foos = [Foo([0.0, 0.0]), Foo([10.0, 20.0])];
> void main() {
>     auto b1 = foos[0];
>     auto b2 = foos[1];
>     double[2] d = 0;
>     d[] = b1.a[] - b2.a[];
>     printf("%0.9f %0.9f\n", d[0], d[1]);
> }

Thanks for the report. Please post this to https://github.com/ldc-developers/ldc/issues though.

David
June 07, 2013
On Friday, 7 June 2013 at 13:34:21 UTC, bearophile wrote:
> I have found another bug that is less easy to reduce...

By the way, thanks for the great (!) test case.

David
June 07, 2013
David Nadlinger:

> Thanks for the report. Please post this to https://github.com/ldc-developers/ldc/issues though.

I am not registered on github :-(

Bye,
bearophile
June 07, 2013
I have not yet found a way to reduced the second bug I have found. I will try some more.

I think the list of compiler switches can be rationalized a bit, to make it more easy to understand for users.

How do I increase the stack size? With DMD I increase it adding something like -L/STACK:1000000 on the command line.

Is -O4 really performing Link-time optimization?

What about the culr (std.net.curl)? I presume the ones compiled for dmd are not good.

Bye,
bearophile
June 07, 2013
How do I disable and how I enable the "fast floating point math" in ldc2?

In GCC I use "-ffast-math" to enable it, and it's disable on default. It's enabled with -Ofast.

Bye and thank you,
bearophile
June 08, 2013
> I have found another bug that is less easy to reduce...

I have localized it, it took some time:


import std.math: fmod;
import std.stdio: printf;
void main() {
    double r = fmod(2.3 + 3.0, 3.0);
    printf("%f\n", r);
}


...>dmd -run test.d
2.300000

...>ldmd2 -run test.d
0.000000

Bye,
bearophile
June 08, 2013
> import std.math: fmod;
> import std.stdio: printf;
> void main() {
>     double r = fmod(2.3 + 3.0, 3.0);
>     printf("%f\n", r);
> }

And this works with ldc2:

import core.stdc.math: fmod;

Bye,
bearophile
June 09, 2013
W dniu 07.06.2013 15:56, bearophile pisze:
> David Nadlinger:
>
>> Thanks for the report. Please post this to
>> https://github.com/ldc-developers/ldc/issues though.
>
> I am not registered on github :-(

It will take 2 mins :-)

> Bye,
> bearophile

« First   ‹ Prev
1 2 3