www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.ldc - LDC 0.10.0 has been released!

reply "David Nadlinger" <see klickverbot.at> writes:
On behalf of the LDC team, I am happy to announce that LDC 0.10.0
has officially been released!

LDC is a compiler for the D programming language that uses the
LLVM framework for code generation to take advantage of its
extensive optimization capabilities and wide target architecture
support.

Except for cosmetics and documentation, this release is almost
identical to the first beta version, which was released a few
days ago. As preparations for the next DMD release have already
been started, we have decided to push out the release in its
current state even if a few new issues were found.

We are planning to follow up this release with a new version
(0.10.1) as soon as possible. It will address the most severe
bugs and also incorporate the upcoming DMD 2.061 frontend.


Changes/Project Status
---

Due to the long time since the last official LDC release, it is
infeasible to give an in-depth list of changes here. Thus, just a
summary of the project status; the next release notes will
feature a changelog again.

LDC generally strives to deviate from DMD, the reference
compiler, as little as possible in user-visible behavior. It
includes a DMD-compatible driver (ldmd), and passes the D2 test
suite on x86/x86_64, with a few known exceptions:

   - Built-in profile and coverage information generation is not
supported.

   - Exception chaining is not implemented yet (throwing from a
cleanup handler while an exception is already in flight; LDC will
not propagate the correct exception).

   - Variadic argument support on x86_64 is unreliable; code using
plain extern(C) and extern(D) variadics might work by chance, but
there are known bugs. Additionally, LDC does not require the
"__va_argsave" hack necessary for DMD, which unfortunately leads
to source incompatibilities if it is enabled via version(X86_64).

As for D1, there are no known DStress regressions on Linux x86_64
compared to the last LDC release, except for some test cases
which no longer pass because of frontend changes. Due to both
those frontend updates and some changes in LLVM's
atomics/intrinsics interface, LDC unfortunately cannot be built
against the last Tango release (0.9.99); it is necessary to use
Tango from SVN trunk.

In terms of operating systems, LDC is well-tested and officially
supported on Linux x86/x86_64 and OS X 10.7+. It should be
possible to use it on other Posix-ish systems (e.g. FreeBSD) as
well, but keep in mind that it receives very little testing
there. Work on Windows x64 support is progressing steadily – stay
tuned for a preview release, which might be ready as early as
next January!

Please note that for D2, OS X Lion (or higher) is unfortunately a
hard requirement, as LLVM relies on the operating system for
thread-local storage support, which was first introduced in 10.7.


Package downloads
----

The below binary packages are »DMD-style« self-contained packages
that require no installation and have no external dependencies
besides the system linker (gcc). They are based on LLVM 3.2 and
have been built on Ubuntu 10.04 resp. OS X 10.7. The x86_64
packages contain 64 bit compiler binaries, which support
generating both 32 and 64 bit executables.

Alternatively, you can easily build LDC from source yourself, see
http://wiki.dlang.org/LDC for instructions. This is also required
if you want to use LDC as a D1 compiler. If anybody wants to
contribute binary packages for D1, we will be happy to accept
them, but we chose not to officially release such for the time
being, as D1 support has received nowhere near the amount of
testing recently that D2 did.

https://github.com/downloads/ldc-developers/ldc/ldc-0.10.0-src.tar.gz
https://github.com/downloads/ldc-developers/ldc/ldc2-0.10.0-linux-x86_64.tar.gz
https://github.com/downloads/ldc-developers/ldc/ldc2-0.10.0-linux-x86_64.tar.xz
https://github.com/downloads/ldc-developers/ldc/ldc2-0.10.0-linux-x86.tar.gz
https://github.com/downloads/ldc-developers/ldc/ldc2-0.10.0-linux-x86.tar.xz
https://github.com/downloads/ldc-developers/ldc/ldc2-0.10.0-osx-x86_64.tar.gz
https://github.com/downloads/ldc-developers/ldc/ldc2-0.10.0-osx-x86_64.tar.xz

MD5 checksums:
f7a34136a2f057e7f3b966dcb1a82d69  ldc2-0.10.0-linux-x86_64.tar.gz
cffc112a5c2a7ea1da23108382756fdd  ldc2-0.10.0-linux-x86_64.tar.xz
6ccf81b6003937c9c053176340b389fb  ldc2-0.10.0-linux-x86.tar.gz
907699bf1453cb11c4d7d552579e55d6  ldc2-0.10.0-linux-x86.tar.xz
480e7a0e2b535555b7d47593c3a45584  ldc2-0.10.0-osx-x86_64.tar.gz
65354322e6dd3b812084b5a8322bf38e  ldc2-0.10.0-osx-x86_64.tar.xz

SHA-1 checksums:
6cfd64f89d74655dc2896d428ac26331c963f00a  ldc-0.10.0-src.tar.gz
79780c5300f417dd1356c3cfc237c1c05c85e347
ldc2-0.10.0-linux-x86_64.tar.gz
4ecc1d6afa8cc8587f5e2f261e35af54dcdc537a
ldc2-0.10.0-linux-x86_64.tar.xz
215a484009c690c1f12c7bf5343c503965ea01cb
ldc2-0.10.0-linux-x86.tar.gz
3b75765d60ec59ae03accd56b2f967ff352fd79d
ldc2-0.10.0-linux-x86.tar.xz
b8261accdafc181c2beedb67f7c3d9d5e047789e
ldc2-0.10.0-osx-x86_64.tar.gz
4af0f1e97b1c63f938b9253c9206e200438af9ec
ldc2-0.10.0-osx-x86_64.tar.xz


Acknowledgments
---

Many people have made essential contributions to this release,
but special thanks to Alexey Prokhin, who is on a hiatus from D
right now but has implemented most of the initial D2 support in
LDC, and to Jernej Krempuš, who contributed extensive work on
vector operation support.

Also, a big thank you to Alex Rønne Petersen, who set up regular
LDC CI builds on the the Lycus Foundation machines, and the
Travis guys (http://travis-ci.org) for not kicking us off their
CI service for putting too much pressure on their systems.

Last but not least, thanks to our distribution packagers for
their work: Jonathan Mercier, who maintains the packages in the
official Fedora repositories, and Sven-Hendrik Haase, who does
the same for Arch Linux. (We would be happy to have packages in
more distributions, especially Debian and its derivatives – let
us know if you can help!)


Contact
---

Generally, the shiny new digitalmars.D.ldc newsgroup
(http://forum.dlang.org) is the place to go for any questions
regarding LDC.

For further information, please refer to the D wiki:
http://wiki.dlang.org/LDC

In particular, for further information about reporting bugs see
http://wiki.dlang.org/Reporting_LDC_issues.

Oh, and new contributors are always very welcome – LDC is an
entirely community-driven effort. So, if you are interested in
compiler hacking, just visit the wiki for more information on how
to help, or ask away on the forums or the project IRC channel.


David
Dec 17 2012
next sibling parent reply "Kiith-Sa" <kiithsacmp gmail.com> writes:
Thanks for including builds (I've given up my attempts to use GDC 
due to its compilation being a PITA).

I have a bug (works with DMD 2.060, not with this LDMD2 build),
but it's in a medium-sized codebase and I don't have time to find
a minimal test case right now, so not posting to bugtracker (yet).

The bug is in my D:YAML (https://github.com/kiith-sa/D-YAML) 
library:
Compilation works fine, is successful, but at runtime following 
exceptions get thrown:


object.Exception
object.Exception /build/src/ldc/runtime/druntime/src/object_.d(108): 
need opCmp for class TypeInfo_e
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
object.Exception
object.Exception /build/src/ldc/runtime/druntime/src/object_.d(108): 
need opCmp for class TypeInfo_Aya


I've looked at LDC druntime source; TypeInfo_e and TypeInfo_Aya 
classes both are derived from TypeInfo, which overrides Object's 
opCmp, while Object's opCmp throws the exception. So I don't know 
what's going on.

(Again, these exceptions don't get thrown with DMD 2.060)
Dec 17 2012
parent reply "David Nadlinger" <see klickverbot.at> writes:
On Monday, 17 December 2012 at 19:54:23 UTC, Kiith-Sa wrote:
 object.Exception
 object.Exception /build/src/ldc/runtime/druntime/src/object_.d(108): 
 need opCmp for class TypeInfo_e
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 object.Exception
 object.Exception /build/src/ldc/runtime/druntime/src/object_.d(108): 
 need opCmp for class TypeInfo_Aya
Is there a reasonably easy way to reproduce the bug? If so, please add the issue to the bug tracker. It doesn't need to be a minmal test case just yet. David
Dec 17 2012
parent "Kiith-Sa" <kiithsacmp gmail.com> writes:
On Monday, 17 December 2012 at 19:56:41 UTC, David Nadlinger 
wrote:
 On Monday, 17 December 2012 at 19:54:23 UTC, Kiith-Sa wrote:
 object.Exception
 object.Exception /build/src/ldc/runtime/druntime/src/object_.d(108): 
 need opCmp for class TypeInfo_e
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 object.Exception
 object.Exception /build/src/ldc/runtime/druntime/src/object_.d(108): 
 need opCmp for class TypeInfo_Aya
Is there a reasonably easy way to reproduce the bug? If so, please add the issue to the bug tracker. It doesn't need to be a minmal test case just yet. David
OK, done.
Dec 17 2012
prev sibling parent reply "ponce" <spam spam.org> writes:
On Monday, 17 December 2012 at 18:20:46 UTC, David Nadlinger
wrote:
 On behalf of the LDC team, I am happy to announce that LDC 
 0.10.0
 has officially been released!
Congratulations David, Any chance for Windows build?
Dec 20 2012
parent Kai Nacke <kai redstar.de> writes:
On 21.12.2012 01:47, ponce wrote:
 Any chance for Windows build?
I will prepare a Windows build after the merge of 2.061. The Win64 additions to Phobos of 2.061 are a precondition to do something useful.
Dec 21 2012