Jump to page: 1 2 3
Thread overview
LDC 0.14.0 alpha1 released! Please help test!
Aug 02, 2014
Kai Nacke
Aug 02, 2014
bearophile
Aug 02, 2014
David Nadlinger
Aug 02, 2014
Trass3r
Aug 02, 2014
John
Aug 02, 2014
bearophile
Aug 03, 2014
John
Aug 03, 2014
Russel Winder
Aug 03, 2014
Dicebot
Aug 03, 2014
FrankLike
Aug 03, 2014
FrankLike
Aug 03, 2014
Dicebot
Aug 03, 2014
David Nadlinger
Aug 03, 2014
Dicebot
Aug 03, 2014
David Nadlinger
Aug 03, 2014
Dicebot
Aug 05, 2014
John Colvin
Aug 05, 2014
Dicebot
Aug 11, 2014
Dicebot
Aug 11, 2014
Dicebot
Aug 04, 2014
FrankLike
Aug 05, 2014
Trass3r
Aug 05, 2014
FrankLike
Aug 06, 2014
Trass3r
Aug 08, 2014
Kai Nacke
August 02, 2014
Hi everyone!

The first alpha release of LDC release 0.14.0 is here! It is based on the 2.065.0 front-end and
LLVM 3.1-3.4.2 (OS X: LLVM 3.2/3.4.2 only).

This release contains some exciting new features like shared libraries on Linux!
Be sure to read the preliminary change log at the GitHub release page which also has the package download links:
https://github.com/ldc-developers/ldc/releases/tag/v0.14.0-alpha1

MD5 checksums for the release packages:

16cec8be4c694082f6dc80c72e447e2b ldc-0.14.0-alpha1-src.tar.gz
cbdd5446c15db0ebd563e06e6e7f57ed ldc2-0.14.0-alpha1-linux-x86.tar.gz
8c16b0746765295446acbc7775ac4162 ldc2-0.14.0-alpha1-linux-x86.tar.xz
a70e9f3e6aab43de958185553c1ee0ad ldc2-0.14.0-alpha1-linux-x86_64.tar.gz
3c2a231e75531e6e36f42d1eea4fed48 ldc2-0.14.0-alpha1-linux-x86_64.tar.xz
5e379188d9d366423caa69d948c11772 ldc2-0.14.0-alpha1-mingw-x86.7z
c2bbbd9595208ee3afe05253c40a84d0 ldc2-0.14.0-alpha1-mingw-x86.zip
b017833757a9871d2ac798988de58cb6 ldc2-0.14.0-alpha1-osx-x86_64.tar.gz
c2d8b1bd501bfa59a84f8409194bb6c0 ldc2-0.14.0-alpha1-osx-x86_64.tar.xz

As always, the Win32/MinGW packages require a recent version of the
mingw-w64 toolchain, see the (new) README file for details.

There is no Win64/MSVC package yet. Nevertheless the implementation had made a
huge step forward thanks to the help from Trass3r.

Please be sure to report any bugs at
https://github.com/ldc-developers/ldc/issues, and feel free to drop by
at the digitalmars.D.ldc forums
(http://forum.dlang.org/group/digitalmars.D.ldc) for any questions or
comments.

Thanks to everybody involved in making this happen!

Regards,
Kai
August 02, 2014
Kai Nacke:

> 5e379188d9d366423caa69d948c11772 ldc2-0.14.0-alpha1-mingw-x86.7z

It seems to work.
I presume there is no "unsafe FP optimizations" yet.
I think ldmd2 doesn't show the -nogc switch.
I have not seen a significant reduction of the produced binary sizes.

Bye,
bearophile
August 02, 2014
On 2 Aug 2014, at 17:41, bearophile via digitalmars-d-ldc wrote:
> I have not seen a significant reduction of the produced binary sizes.

The MinGW linker unfortunately does not support --gc-sections. As of now, the feature unfortunately is Linux-only.

Cheers,
David
August 02, 2014
> There is no Win64/MSVC package yet. Nevertheless the implementation had made a
> huge step forward thanks to the help from Trass3r.

The biggest remaining issue is exception handling.
That patch from Twobit has not seen any progress afaik.
It sort of works but doesn't put things into comdats and thus may be related to the large executable size.
August 02, 2014
On Saturday, 2 August 2014 at 15:11:52 UTC, Kai Nacke wrote:
> Hi everyone!
>
> The first alpha release of LDC release 0.14.0 is here! It is based on the 2.065.0 front-end and
> LLVM 3.1-3.4.2 (OS X: LLVM 3.2/3.4.2 only).


I have tried it on Ubuntu 64-bit machine.

It's generating small and fast executables!!
My interest for D is getting rekindled again! Thank you guys! :D
August 02, 2014
John:

> It's generating small and fast executables!!

What kind of executable sizes are you seeing? Like, what's the size for a hello world with writeln on a 64 bit Ubuntu?

Bye,
bearophile
August 03, 2014
On Saturday, 2 August 2014 at 23:22:35 UTC, bearophile wrote:
> What kind of executable sizes are you seeing? Like, what's the size for a hello world with writeln on a 64 bit Ubuntu?

helloworld.d with writeln
dmd 472 KB
ldc 286 KB

stopwatch example from http://dlang.org/phobos/std_datetime.html#.StopWatch
dmd  1.1 MB
ldc  322 KB

The ldc version of stopwatch runs more than 10x faster.

And the Average times displayed by the stopwatch is crazy:
(dmd) Average time: 4000.00 hnsecs (approx)
(ldc) Average time:    1.00 hnsecs (approx)


August 03, 2014
On Sat, 2014-08-02 at 22:50 +0000, John via digitalmars-d-ldc wrote: […]
> It's generating small and fast executables!!
> My interest for D is getting rekindled again! Thank you guys! :D

I did a quick test of one tiny calculation, maximum optimization switched on:

Compiler: size: elapse time
DMD v2.065: 1134444: 8.782991
GDC 4.9.1: 10073177: 8.837684
LDC master 22b74dc41a69ea49b4bb9dba588ed13611a9609f: 363973: 8.619940

So I can't say anything about fast, but I can clearly see small. This is on Debian Sid.

I think for compilation times: DMD < LDC < GDC

-- 
Russel. ============================================================================= Dr Russel Winder      t: +44 20 7585 2200   voip: sip:russel.winder@ekiga.net 41 Buckmaster Road    m: +44 7770 465 077   xmpp: russel@winder.org.uk London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder


August 03, 2014
For this simple program:

```
import std.stdio, std.algorithm;

void main()
{
    auto arr = [ 1, 2, 3, 4 ];
    writeln(arr.map!(a => 2*a));
}
```

-rwxr-xr-x  1 dicebot users 581K Aug  3 16:52 dmd
-rwxr-xr-x  1 dicebot users 3.6M Aug  3 17:24 gdc
-rwxr-xr-x  1 dicebot users 2.2M Aug  3 16:54 ldc-old
-rwxr-xr-x  1 dicebot users 410K Aug  3 17:21 ldc-new

It is quite interesting that dmd binary size is so smaller than gdc and old ldc output - probably something related to frontend symbol emitting difference. I have also checked `nm -a` output and can confirmed that `ldc-new` is the only one that does not have inlined map symbols (including lambda) in the resulting binary.

output for stripped binaries:

-rwxr-xr-x  1 dicebot users 387K Aug  3 17:27 dmd
-rwxr-xr-x  1 dicebot users 2.6M Aug  3 17:27 gdc
-rwxr-xr-x  1 dicebot users 1.1M Aug  3 17:27 ldc-old
-rwxr-xr-x  1 dicebot users 274K Aug  3 17:27 ldc-new

compiling small vibe.d application that uses Diet templates:

-rwxr-xr-x 1 dicebot users  16M Aug  3 17:30 diet-dmd
-rwxr-xr-x 1 dicebot users 8.2M Aug  3 17:31 diet-ldc-new
August 03, 2014
P.S. I have noticed that now libdruntime.a is not included into libphobos2.a and needs to be package too, is it intended or just unforeseen side effect of shared library support?
« First   ‹ Prev
1 2 3