www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - ldc and gdc

reply Adam Ruppe <destructionator gmail.com> writes:
LDC and GDC are both alive and pretty well up to date with D2. They
have some advantages that make them favored to some people.

But, they are kinda hard to find and get to a point where you can use
them. dmd is trivially easy to "install" and use. You just download it
and run, and it just works in the vast majority of cases.


Are there binary packages available for their D2 builds, complete
with phobos and druntime, for both Windows and Linux? I'd really like
to see binary zips of them comparable to dmd in ease of use.

Once they exist, can we get them linked to in the main changelog or
something similar?


Basically, I want them to be mostly equal alternatives to dmd so
people can pick from the three with ease. Then, when people complain
"gdc is out of date" we can say "actually, it's right there in the
change log right next to dmd". When people say "I'd prefer ldc
to dmd", we can say "that's ok, it's right there, make any choice
you like".

It seems to me to be a relatively easy answer to a lot of reddit,
etc. questions.
Aug 04 2011
next sibling parent =?UTF-8?B?QWxleCBSw7hubmUgUGV0ZXJzZW4=?= <xtzgzorex gmail.com> writes:
On 04-08-2011 15:43, Adam Ruppe wrote:
 LDC and GDC are both alive and pretty well up to date with D2. They
 have some advantages that make them favored to some people.

 But, they are kinda hard to find and get to a point where you can use
 them. dmd is trivially easy to "install" and use. You just download it
 and run, and it just works in the vast majority of cases.


 Are there binary packages available for their D2 builds, complete
 with phobos and druntime, for both Windows and Linux? I'd really like
 to see binary zips of them comparable to dmd in ease of use.

 Once they exist, can we get them linked to in the main changelog or
 something similar?


 Basically, I want them to be mostly equal alternatives to dmd so
 people can pick from the three with ease. Then, when people complain
 "gdc is out of date" we can say "actually, it's right there in the
 change log right next to dmd". When people say "I'd prefer ldc
 to dmd", we can say "that's ok, it's right there, make any choice
 you like".

 It seems to me to be a relatively easy answer to a lot of reddit,
 etc. questions.

On a slightly related note, it would be cool to have LDC and GDC hosted under the GitHub organization. Having everything in one place would make everyone's life easier. I think the LDC folks have been moving towards this. - Alex
Aug 04 2011
prev sibling next sibling parent reply Trass3r <un known.com> writes:
 Are there binary packages available for their D2 builds, complete
 with phobos and druntime, for both Windows and Linux? I'd really like
 to see binary zips of them comparable to dmd in ease of use.

GDC packages are available for Windoze thx to Daniel Green (and that's really helpful, compiling this yourself is painful). Compiling it on Linux is really straightforward, just follow the build instructions. Don't know if there's a need for prebuilt packages. But I guess I could pack my version upon request. LDC2 is not that user-friendly currently since phobos and druntime aren't included in the main repo. Also they aren't built by default when running make and they aren't installed properly with make install. On the other hand it could be built painlessly on Windows since it uses CMake. So packages would indeed make sense in this case, but I don't know if it's reasonable to do so since LDC2 is still in flux.
Aug 04 2011
next sibling parent Trass3r <un known.com> writes:
Am 04.08.2011, 16:17 Uhr, schrieb Trass3r <un known.com>:
 Compiling GDC on Linux is really straightforward, just follow the build  
 instructions. Don't know if there's a need for prebuilt packages.

Also I guess most people would expect a proper Linux package like a PPA for Ubuntu with automatic updates rather than getting a zip file.
Aug 04 2011
prev sibling next sibling parent reply Adam Ruppe <destructionator gmail.com> writes:
Trass3r wrote:
 GDC packages are available for Windoze thx to Daniel Green

Fantastic! Can we get them linked on the main site's download page?
 Compiling it on Linux is really straightforward, just follow the build
 instructions.

I don't know... the gdc itself wasn't so bad (aside from taking forever, just waiting on tar zxf for gcc was a huge huge wait) but the instructions didn't even mention the runtime and phobos. I had some weird compile errors on that when I tried. Maybe it's straightforward if you've done it once before, but I don't think it is as a first time user.
 I don't know if it's reasonable to do so since LDC2 is still in flux.

So is dmd!
 Also I guess most people would expect a proper Linux package like a
 PPA for Ubuntu with automatic updates rather than getting a zip file.

Blargh, I'd prefer a zip to that by a lot, especially since I don't use ubuntu. A zip should work on almost any distribution.
Aug 04 2011
parent Adam Ruppe <destructionator gmail.com> writes:
Trass3r wrote:
 phobos is automatically compiled as part of the build process (and
 installed as well).

For whatever reason, it didn't work on my box :S
Aug 04 2011
prev sibling parent Trass3r <un known.com> writes:
 I don't know... the gdc itself wasn't so bad (aside from taking forever,
 just waiting on tar zxf for gcc was a huge huge wait) but the

Make sure you only download the gcc-core package to avoid all the other frontends.
 instructions didn't even mention the runtime and phobos. I had some
 weird compile errors on that when I tried.

phobos is automatically compiled as part of the build process (and installed as well).
Aug 04 2011
prev sibling next sibling parent reply "Marco Leise" <Marco.Leise gmx.de> writes:
By the way... the druntime and phobos patches for LDC - are they  
applicable to GDC and DMD as well? I'm asking because I could imagine  
installing druntime, phobos, DMD, GDC and LDC and all three compilers  
would use the same installation of the standard library.
Aug 04 2011
next sibling parent reply "Jonathan M Davis" <jmdavisProg gmx.com> writes:
 By the way... the druntime and phobos patches for LDC - are they
 applicable to GDC and DMD as well? I'm asking because I could imagine
 installing druntime, phobos, DMD, GDC and LDC and all three compilers
 would use the same installation of the standard library.

They _can't_ all use the same installations. At minimum, druntime must be different for each of them. That's expected and by design. Whether Phobos needs to be different for each or not as far as source goes, I don't know (hopefully not, but there might be a reason why it has to). But since the compiled library includes both druntime and Phobos, that can't be shared. - Jonathan M Davis
Aug 04 2011
parent reply Jacob Carlborg <doob me.com> writes:
On 2011-08-04 22:37, Marco Leise wrote:
 Am 04.08.2011, 19:34 Uhr, schrieb Jonathan M Davis <jmdavisProg gmx.com>:

 By the way... the druntime and phobos patches for LDC - are they
 applicable to GDC and DMD as well? I'm asking because I could imagine
 installing druntime, phobos, DMD, GDC and LDC and all three compilers
 would use the same installation of the standard library.

They _can't_ all use the same installations. At minimum, druntime must be different for each of them. That's expected and by design. Whether Phobos needs to be different for each or not as far as source goes, I don't know (hopefully not, but there might be a reason why it has to). But since the compiled library includes both druntime and Phobos, that can't be shared. - Jonathan M Davis

Thank you for the clarification. My impression was that druntime was created to make it possible to use either phobos or tango. If the compiled library includes both (with which compiler anyway? both GDC and LDC?) I figure that I could not install any two of the three compilers in their default locations on Linux, correct? If I take the time to create packages for Gentoo for the alternative compilers that is good to know. Symlinks and altered library names for druntime/phobos would be required. But with a mix of DMD1, DMD2, GDC, LDC, Phobos and Tango things could become messy :p

In the future, DVM could be used for this. DVM lets you easily install different versions of a D compiler and switch among them. Although it currently only supports DMD. DVM: https://bitbucket.org/doob/dvm -- /Jacob Carlborg
Aug 04 2011
parent reply Jacob Carlborg <doob me.com> writes:
On 2011-08-05 11:53, Marco Leise wrote:
 I have noticed DVM around.
 The situation on Gentoo is typically that when there are different
 versions of the same package, that can be installed in different
 'slots'. A dependency of these packages is a control file for eselect, a
 tool to switch between the currently active implementation (OpenJDK, Sun
 Java, ...), package version (boost) and several other system
 configuration options. 'python' for example ends up as a symlink to
 either python2.7 or python3.1 and there are corresponding directory
 names for the libraries. It would be ideal if dmd was a symlink to
 either dmd1 or dmd2 and they would both use a separate dmd.conf. But
 since the source code is available for a while now that should be easy
 to make possible.
 I have never used DVM, but I imagine it works like Maven or the Eclipse
 updater. So it would download precompiled compilers and libraries into
 the user's home directory, right? With Gentoo being a source
 distribution it is usually avoided to download binaries from the
 internet so I guess DVM would be one of two options to install D
 compilers on Gentoo. The difference in usage would be like this for an
 installation:
 dvm: "dvm install 1.068"
 portage: "emerge =dmd-1.068"
 and this for setting the system-wide default compiler:
 dvm use 1.068 -d
 eselect dmd set dmd1
 Granted, the portage version would only allow one dmd 1 compiler to be
 installed at a time, but that is ok for most users. I guess in theory
 there could even be slots for every single release of dmd. This is
 already done for Boost and automake in practice (with major revisions).
 OTOH there is no option to set the compiler for the current shell, but
 maybe "export DMD=dmd1", "make posix.mak" should work.

It seems like DVM and portage/eselect are similar. I think it's a huge advantage to be able to have multiple versions of DMD installed. I use both D1 and D2, (mostly D1). I also think it's especially useful when there's almost always something that breaks in a new release of DMD. Then you can easily go back to an older version if you need to. BTW, Nick Sabalausky is working on making it possible to install DMD from github via DVM. -- /Jacob Carlborg
Aug 06 2011
parent Christian Manning <cmanning999 gmail.com> writes:
On 06/08/2011 12:02, Marco Leise wrote:
 Am 06.08.2011, 11:16 Uhr, schrieb Jacob Carlborg <doob me.com>:

 On 2011-08-05 11:53, Marco Leise wrote:
 I have noticed DVM around.
 The situation on Gentoo is typically that when there are different
 versions of the same package, that can be installed in different
 'slots'. A dependency of these packages is a control file for eselect, a
 tool to switch between the currently active implementation (OpenJDK, Sun
 Java, ...), package version (boost) and several other system
 configuration options. 'python' for example ends up as a symlink to
 either python2.7 or python3.1 and there are corresponding directory
 names for the libraries. It would be ideal if dmd was a symlink to
 either dmd1 or dmd2 and they would both use a separate dmd.conf. But
 since the source code is available for a while now that should be easy
 to make possible.
 I have never used DVM, but I imagine it works like Maven or the Eclipse
 updater. So it would download precompiled compilers and libraries into
 the user's home directory, right? With Gentoo being a source
 distribution it is usually avoided to download binaries from the
 internet so I guess DVM would be one of two options to install D
 compilers on Gentoo. The difference in usage would be like this for an
 installation:
 dvm: "dvm install 1.068"
 portage: "emerge =dmd-1.068"
 and this for setting the system-wide default compiler:
 dvm use 1.068 -d
 eselect dmd set dmd1
 Granted, the portage version would only allow one dmd 1 compiler to be
 installed at a time, but that is ok for most users. I guess in theory
 there could even be slots for every single release of dmd. This is
 already done for Boost and automake in practice (with major revisions).
 OTOH there is no option to set the compiler for the current shell, but
 maybe "export DMD=dmd1", "make posix.mak" should work.

It seems like DVM and portage/eselect are similar. I think it's a huge advantage to be able to have multiple versions of DMD installed. I use both D1 and D2, (mostly D1). I also think it's especially useful when there's almost always something that breaks in a new release of DMD. Then you can easily go back to an older version if you need to. BTW, Nick Sabalausky is working on making it possible to install DMD from github via DVM.

Even if this begins to sound childish, I have to add for completeness sake that in portage you have the version number 9999 to indicate a build from online source repositories. So dmd-9999 would be the Github version. The source tree is cloned into /usr/portage/distfiles/git-src/ and updated each time the package is being reinstalled. Additional tools like 'smart-live-rebuild' have emerged to make rebuilding changed repositories easier.

emerge -1 live-rebuild is very handy for this if you're on the portage alphas.
Aug 06 2011
prev sibling next sibling parent "Marco Leise" <Marco.Leise gmx.de> writes:
Am 04.08.2011, 19:34 Uhr, schrieb Jonathan M Davis <jmdavisProg gmx.com>:

 By the way... the druntime and phobos patches for LDC - are they
 applicable to GDC and DMD as well? I'm asking because I could imagine
 installing druntime, phobos, DMD, GDC and LDC and all three compilers
 would use the same installation of the standard library.

They _can't_ all use the same installations. At minimum, druntime must be different for each of them. That's expected and by design. Whether Phobos needs to be different for each or not as far as source goes, I don't know (hopefully not, but there might be a reason why it has to). But since the compiled library includes both druntime and Phobos, that can't be shared. - Jonathan M Davis

Thank you for the clarification. My impression was that druntime was created to make it possible to use either phobos or tango. If the compiled library includes both (with which compiler anyway? both GDC and LDC?) I figure that I could not install any two of the three compilers in their default locations on Linux, correct? If I take the time to create packages for Gentoo for the alternative compilers that is good to know. Symlinks and altered library names for druntime/phobos would be required. But with a mix of DMD1, DMD2, GDC, LDC, Phobos and Tango things could become messy :p
Aug 04 2011
prev sibling next sibling parent "Marco Leise" <Marco.Leise gmx.de> writes:
Am 05.08.2011, 08:35 Uhr, schrieb Jacob Carlborg <doob me.com>:

 On 2011-08-04 22:37, Marco Leise wrote:
 Am 04.08.2011, 19:34 Uhr, schrieb Jonathan M Davis  
 <jmdavisProg gmx.com>:

 By the way... the druntime and phobos patches for LDC - are they
 applicable to GDC and DMD as well? I'm asking because I could imagine
 installing druntime, phobos, DMD, GDC and LDC and all three compilers
 would use the same installation of the standard library.

They _can't_ all use the same installations. At minimum, druntime must be different for each of them. That's expected and by design. Whether Phobos needs to be different for each or not as far as source goes, I don't know (hopefully not, but there might be a reason why it has to). But since the compiled library includes both druntime and Phobos, that can't be shared. - Jonathan M Davis

Thank you for the clarification. My impression was that druntime was created to make it possible to use either phobos or tango. If the compiled library includes both (with which compiler anyway? both GDC and LDC?) I figure that I could not install any two of the three compilers in their default locations on Linux, correct? If I take the time to create packages for Gentoo for the alternative compilers that is good to know. Symlinks and altered library names for druntime/phobos would be required. But with a mix of DMD1, DMD2, GDC, LDC, Phobos and Tango things could become messy :p

In the future, DVM could be used for this. DVM lets you easily install different versions of a D compiler and switch among them. Although it currently only supports DMD. DVM: https://bitbucket.org/doob/dvm

I have noticed DVM around. The situation on Gentoo is typically that when there are different versions of the same package, that can be installed in different 'slots'. A dependency of these packages is a control file for eselect, a tool to switch between the currently active implementation (OpenJDK, Sun Java, ...), package version (boost) and several other system configuration options. 'python' for example ends up as a symlink to either python2.7 or python3.1 and there are corresponding directory names for the libraries. It would be ideal if dmd was a symlink to either dmd1 or dmd2 and they would both use a separate dmd.conf. But since the source code is available for a while now that should be easy to make possible. I have never used DVM, but I imagine it works like Maven or the Eclipse updater. So it would download precompiled compilers and libraries into the user's home directory, right? With Gentoo being a source distribution it is usually avoided to download binaries from the internet so I guess DVM would be one of two options to install D compilers on Gentoo. The difference in usage would be like this for an installation: dvm: "dvm install 1.068" portage: "emerge =dmd-1.068" and this for setting the system-wide default compiler: dvm use 1.068 -d eselect dmd set dmd1 Granted, the portage version would only allow one dmd 1 compiler to be installed at a time, but that is ok for most users. I guess in theory there could even be slots for every single release of dmd. This is already done for Boost and automake in practice (with major revisions). OTOH there is no option to set the compiler for the current shell, but maybe "export DMD=dmd1", "make posix.mak" should work.
Aug 05 2011
prev sibling parent "Marco Leise" <Marco.Leise gmx.de> writes:
Am 06.08.2011, 11:16 Uhr, schrieb Jacob Carlborg <doob me.com>:

 On 2011-08-05 11:53, Marco Leise wrote:
 I have noticed DVM around.
 The situation on Gentoo is typically that when there are different
 versions of the same package, that can be installed in different
 'slots'. A dependency of these packages is a control file for eselect, a
 tool to switch between the currently active implementation (OpenJDK, Sun
 Java, ...), package version (boost) and several other system
 configuration options. 'python' for example ends up as a symlink to
 either python2.7 or python3.1 and there are corresponding directory
 names for the libraries. It would be ideal if dmd was a symlink to
 either dmd1 or dmd2 and they would both use a separate dmd.conf. But
 since the source code is available for a while now that should be easy
 to make possible.
 I have never used DVM, but I imagine it works like Maven or the Eclipse
 updater. So it would download precompiled compilers and libraries into
 the user's home directory, right? With Gentoo being a source
 distribution it is usually avoided to download binaries from the
 internet so I guess DVM would be one of two options to install D
 compilers on Gentoo. The difference in usage would be like this for an
 installation:
 dvm: "dvm install 1.068"
 portage: "emerge =dmd-1.068"
 and this for setting the system-wide default compiler:
 dvm use 1.068 -d
 eselect dmd set dmd1
 Granted, the portage version would only allow one dmd 1 compiler to be
 installed at a time, but that is ok for most users. I guess in theory
 there could even be slots for every single release of dmd. This is
 already done for Boost and automake in practice (with major revisions).
 OTOH there is no option to set the compiler for the current shell, but
 maybe "export DMD=dmd1", "make posix.mak" should work.

It seems like DVM and portage/eselect are similar. I think it's a huge advantage to be able to have multiple versions of DMD installed. I use both D1 and D2, (mostly D1). I also think it's especially useful when there's almost always something that breaks in a new release of DMD. Then you can easily go back to an older version if you need to. BTW, Nick Sabalausky is working on making it possible to install DMD from github via DVM.

Even if this begins to sound childish, I have to add for completeness sake that in portage you have the version number 9999 to indicate a build from online source repositories. So dmd-9999 would be the Github version. The source tree is cloned into /usr/portage/distfiles/git-src/ and updated each time the package is being reinstalled. Additional tools like 'smart-live-rebuild' have emerged to make rebuilding changed repositories easier.
Aug 06 2011
prev sibling next sibling parent reply Kagamin <spam here.lot> writes:
Adam Ruppe Wrote:

 Are there binary packages available for their D2 builds, complete
 with phobos and druntime, for both Windows and Linux?

Last I checked LDC stood for "Linux D compiler". It was due to some complications with exceptions in llvm on windows, but I'm almost sure clang does it.
Aug 04 2011
parent reply Christian Kamm <kamm-incasoftware removethis.de> writes:
Kagamin wrote:
 Last I checked LDC stood for "Linux D compiler". It was due to some
 complications with exceptions in llvm on windows, but I'm almost sure
 clang does it.

I've wondered about that for a while and just checked it: Running the clang 2.9 Mingw32 binaries through wine on a simple exception handling test leads to assembly that misses code for the catch clause as well as eh tables (I assume Mingw should use dwarf/unwind based eh). Compiling with -triple i686-pc-win32 leads to an error eh.cc:3:14: error: cannot use 'throw' with exceptions disabled. So I don't think clang can do exceptions on Windows.
Aug 04 2011
next sibling parent bearophile <bearophileHUGS lycos.com> writes:
Christian Kamm:

 So I don't think clang can do exceptions on Windows.

The LLVM 3.0 changelog (that's not finished yet) says "LLVM 3.0 will be the last release of llvm-gcc.". So I presume to compile C++ code on Windows with LLVM you will only be able to use dragonegg (I am not sure dragonegg supports exceptions on Windows). Bye, bearophile
Aug 04 2011
prev sibling parent reply David Nadlinger <see klickverbot.at> writes:
On 8/4/11 8:18 PM, Christian Kamm wrote:
 So I don't think clang can do exceptions on Windows.

The last time I checked, x86_64 SEH support (not for 32 bit) was in the works by some clang guy, but I didn't have a closer look at the changes. David
Aug 04 2011
parent Kagamin <spam here.lot> writes:
David Nadlinger Wrote:

 On 8/4/11 8:18 PM, Christian Kamm wrote:
 So I don't think clang can do exceptions on Windows.

The last time I checked, x86_64 SEH support (not for 32 bit) was in the works by some clang guy, but I didn't have a closer look at the changes. David

http://lists.cs.uiuc.edu/pipermail/llvmdev/2011-April/039526.html This guy?
Aug 04 2011
prev sibling next sibling parent "Jonathan M Davis" <jmdavisProg gmx.com> writes:
 Am 04.08.2011, 19:34 Uhr, schrieb Jonathan M Davis <jmdavisProg gmx.com>:
 By the way... the druntime and phobos patches for LDC - are they
 applicable to GDC and DMD as well? I'm asking because I could imagine
 installing druntime, phobos, DMD, GDC and LDC and all three compilers
 would use the same installation of the standard library.

They _can't_ all use the same installations. At minimum, druntime must be different for each of them. That's expected and by design. Whether Phobos needs to be different for each or not as far as source goes, I don't know (hopefully not, but there might be a reason why it has to). But since the compiled library includes both druntime and Phobos, that can't be shared. - Jonathan M Davis

Thank you for the clarification. My impression was that druntime was created to make it possible to use either phobos or tango. If the compiled library includes both (with which compiler anyway? both GDC and LDC?) I figure that I could not install any two of the three compilers in their default locations on Linux, correct? If I take the time to create packages for Gentoo for the alternative compilers that is good to know. Symlinks and altered library names for druntime/phobos would be required. But with a mix of DMD1, DMD2, GDC, LDC, Phobos and Tango things could become messy

For D1, Phobos and Tango were incompatible, because they used different runtimes. druntime was created for D2 (from Tango's runtime, I believe) so that it would be possible for Phobos and Tango to coexist in D2 (though Tango hasn't really been officially ported over to D2 yet). So, druntime _does_ help with mixing Phobos and Tango. The problem is that druntime includes stuff which is compiler-specific. It's low-level stuff that must vary from compiler to compiler. As such, dmd, gdc, and ldc are all going to need somewhat different versions of druntime. That shouldn't be true for Phobos, but I don't know what the exact situation with gdc and ldc is. But regardless, you're getting one compiled library out of the deal, so that's going to be compiler-specific. And so yes, mixing dmd, gdc, and ldc on the same system could get a bit interesting in terms of how it affects libraries and whatnot. Adding D1 versions of them into the mix would make it that much worse. But I've never tried gdc or ldc, and I always install dmd in my home directory, so I don't know what it takes to get them all to mix nicely in /usr or /opt. dmd.conf should take of the problem easily enough for dmd, but I don't know how all that works with gdc and ldc. So, if you're looking to manage packages for Gentoo, good luck. It should be quite doable, but there are definite obstacles. - Jonathan M Davis
Aug 04 2011
prev sibling next sibling parent Caligo <iteronvexor gmail.com> writes:
--bcaec548a3f55a2acf04a9b49377
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

On Thu, Aug 4, 2011 at 9:09 AM, Alex R=F8nne Petersen <xtzgzorex gmail.com>=
wrote:

 On 04-08-2011 15:43, Adam Ruppe wrote:

 LDC and GDC are both alive and pretty well up to date with D2. They
 have some advantages that make them favored to some people.

 But, they are kinda hard to find and get to a point where you can use
 them. dmd is trivially easy to "install" and use. You just download it
 and run, and it just works in the vast majority of cases.


 Are there binary packages available for their D2 builds, complete
 with phobos and druntime, for both Windows and Linux? I'd really like
 to see binary zips of them comparable to dmd in ease of use.

 Once they exist, can we get them linked to in the main changelog or
 something similar?


 Basically, I want them to be mostly equal alternatives to dmd so
 people can pick from the three with ease. Then, when people complain
 "gdc is out of date" we can say "actually, it's right there in the
 change log right next to dmd". When people say "I'd prefer ldc
 to dmd", we can say "that's ok, it's right there, make any choice
 you like".

 It seems to me to be a relatively easy answer to a lot of reddit,
 etc. questions.

On a slightly related note, it would be cool to have LDC and GDC hosted under the GitHub organization. Having everything in one place would make everyone's life easier. I think the LDC folks have been moving towards th=

 - Alex

+1 --bcaec548a3f55a2acf04a9b49377 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable <br><br><div class=3D"gmail_quote">On Thu, Aug 4, 2011 at 9:09 AM, Alex R= =F8nne Petersen <span dir=3D"ltr">&lt;<a href=3D"mailto:xtzgzorex gmail.com= ">xtzgzorex gmail.com</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_q= uote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1e= x;"> <div><div></div><div class=3D"h5">On 04-08-2011 15:43, Adam Ruppe wrote:<br=

x #ccc solid;padding-left:1ex"> LDC and GDC are both alive and pretty well up to date with D2. They<br> have some advantages that make them favored to some people.<br> <br> But, they are kinda hard to find and get to a point where you can use<br> them. dmd is trivially easy to &quot;install&quot; and use. You just downlo= ad it<br> and run, and it just works in the vast majority of cases.<br> <br> <br> Are there binary packages available for their D2 builds, complete<br> with phobos and druntime, for both Windows and Linux? I&#39;d really like<b= r> to see binary zips of them comparable to dmd in ease of use.<br> <br> Once they exist, can we get them linked to in the main changelog or<br> something similar?<br> <br> <br> Basically, I want them to be mostly equal alternatives to dmd so<br> people can pick from the three with ease. Then, when people complain<br> &quot;gdc is out of date&quot; we can say &quot;actually, it&#39;s right th= ere in the<br> change log right next to dmd&quot;. When people say &quot;I&#39;d prefer ld= c<br> to dmd&quot;, we can say &quot;that&#39;s ok, it&#39;s right there, make an= y choice<br> you like&quot;.<br> <br> It seems to me to be a relatively easy answer to a lot of reddit,<br> etc. questions.<br> </blockquote> <br></div></div> On a slightly related note, it would be cool to have LDC and GDC hosted und= er the GitHub organization. Having everything in one place would make every= one&#39;s life easier. I think the LDC folks have been moving towards this.= <br> <font color=3D"#888888"> <br> - Alex<br> </font></blockquote></div><br>+1<br> --bcaec548a3f55a2acf04a9b49377--
Aug 04 2011
prev sibling parent "Marco Leise" <Marco.Leise gmx.de> writes:
Am 04.08.2011, 23:14 Uhr, schrieb Jonathan M Davis <jmdavisProg gmx.com>:

 Am 04.08.2011, 19:34 Uhr, schrieb Jonathan M Davis  
 <jmdavisProg gmx.com>:
 By the way... the druntime and phobos patches for LDC - are they
 applicable to GDC and DMD as well? I'm asking because I could imagine
 installing druntime, phobos, DMD, GDC and LDC and all three compilers
 would use the same installation of the standard library.

They _can't_ all use the same installations. At minimum, druntime

 different for each of them. That's expected and by design. Whether  

 needs to be different for each or not as far as source goes, I don't  

 (hopefully not, but there might be a reason why it has to). But since  

 compiled library includes both druntime and Phobos, that can't be  

 - Jonathan M Davis

Thank you for the clarification. My impression was that druntime was created to make it possible to use either phobos or tango. If the compiled library includes both (with which compiler anyway? both GDC and LDC?) I figure that I could not install any two of the three compilers in their default locations on Linux, correct? If I take the time to create packages for Gentoo for the alternative compilers that is good to know. Symlinks and altered library names for druntime/phobos would be required. But with a mix of DMD1, DMD2, GDC, LDC, Phobos and Tango things could become messy

For D1, Phobos and Tango were incompatible, because they used different runtimes. druntime was created for D2 (from Tango's runtime, I believe) so that it would be possible for Phobos and Tango to coexist in D2 (though Tango hasn't really been officially ported over to D2 yet). So, druntime _does_ help with mixing Phobos and Tango. The problem is that druntime includes stuff which is compiler-specific. It's low-level stuff that must vary from compiler to compiler. As such, dmd, gdc, and ldc are all going to need somewhat different versions of druntime. That shouldn't be true for Phobos, but I don't know what the exact situation with gdc and ldc is. But regardless, you're getting one compiled library out of the deal, so that's going to be compiler-specific. And so yes, mixing dmd, gdc, and ldc on the same system could get a bit interesting in terms of how it affects libraries and whatnot. Adding D1 versions of them into the mix would make it that much worse. But I've never tried gdc or ldc, and I always install dmd in my home directory, so I don't know what it takes to get them all to mix nicely in /usr or /opt. dmd.conf should take of the problem easily enough for dmd, but I don't know how all that works with gdc and ldc. So, if you're looking to manage packages for Gentoo, good luck. It should be quite doable, but there are definite obstacles. - Jonathan M Davis

I fully agree that Phobos and Tango should be independent from druntime and the compiler. I'd say they must be. Otherwise gdc and ldc would counter the work done on the separation of runtime and standard library.
Aug 05 2011