digitalmars.D - Re: [dmd-internals] DMD now requires a working D compiler to be build
- Vladimir Panteleev (11/14) Mar 08 2015 ( Replying to
- Daniel Murphy (8/16) Mar 08 2015 For now, 2.067.
- David Nadlinger (5/9) Mar 08 2015 I don't think it would be, especially since building the
- Walter Bright (2/10) Mar 08 2015 Trivial in theory, but we all know how fragile that can be in practice.
- Vladimir Panteleev (3/13) Mar 08 2015 OK, then can a file please be added to the DMD source repo which
- Daniel Murphy (18/20) Mar 08 2015 This seems reasonable. We could also add a static assert to provide a
- Vladimir Panteleev (7/14) Mar 09 2015 A machine-readable version is preferable because then Digger can
- Daniel Murphy (4/10) Mar 09 2015 Yes. Any preference on the name?
- Vladimir Panteleev (5/16) Mar 09 2015 It depends, do we have a stable URL structure for DMD downloads
- Daniel Murphy (3/5) Mar 09 2015 Sorta http://downloads.dlang.org/releases/2014/
- Vladimir Panteleev (4/10) Mar 09 2015 That has the year in the URL though...
- Daniel Murphy (3/5) Mar 09 2015 Not that I know of.
- Jacob Carlborg (4/5) Mar 09 2015 This might be easier: http://downloads.dlang.org/releases/2.x/
- Martin Nowak (4/6) Mar 08 2015 From a release building standpoint a new release must be
- ketmar (6/8) Mar 09 2015 sure it is. one more windoze .exe to call for cross-building dmd.exe in=...
- Walter Bright (4/12) Mar 08 2015 Hmm. That does leave us with the problem of bootstrapping it on a new pl...
- deadalnix (2/21) Mar 08 2015 Also: https://issues.dlang.org/show_bug.cgi?id=14255
- David Nadlinger (8/11) Mar 08 2015 Once you fix DMD so that it can cross-compile (or use GDC/LDC),
- Daniel Murphy (3/9) Mar 08 2015 I agree, cross-compiling is the way forward.
- Daniel Murphy (2/4) Mar 08 2015 If it's a new platform, why would 2.067 be able to target it?
- Walter Bright (2/3) Mar 08 2015 Because it'll have a C++ compiler.
- Daniel Murphy (6/9) Mar 08 2015 You'd be able to compile the C++ version of 2.067 on this platform, but
- Walter Bright (2/12) Mar 08 2015 Never needed to build a cross compiler.
- Daniel Murphy (26/27) Mar 08 2015 You did when adding 64-bit targets. ie dmd is a 32->64 and 64->32 cross...
- Walter Bright (5/30) Mar 09 2015 How easy it is to copy the files over would decide which method is more
- Daniel Murphy (13/18) Mar 09 2015 I guess that makes sense. It should be easier to apply a backend patch ...
- Walter Bright (4/19) Mar 09 2015 As far as I'm concerned, if it's running on the same machine, it is not ...
- Daniel Murphy (2/4) Mar 09 2015 I... I don't agree. But luckily it doesn't matter.
- ketmar (6/16) Mar 09 2015 so do you mean that if i need to compile under GNU/Linux, but have=20
- Iain Buclaw via Digitalmars-d (5/21) Mar 09 2015 There's a difference between cross-compiling for a wholly different
- Jonathan M Davis via Digitalmars-d (6/16) Mar 08 2015 I thought that cross-compiling was pretty much always how you port a
- Walter Bright (8/12) Mar 09 2015 About once a week, when I pull all the DMD changes to my machine, it fai...
- Vladimir Panteleev (3/15) Mar 09 2015 What about source Linux distributions, like Gentoo?
- Daniel Murphy (3/5) Mar 09 2015 Download the zip.
- Jonathan M Davis via Digitalmars-d (9/15) Mar 10 2015 And it's not like dmd would be alone with this problem. Other languages'
- "Ola Fosheim =?UTF-8?B?R3LDuHN0YWQi?= (7/10) Mar 10 2015 Yeah, besides you could cross compile to LLVM IR and use whatever
- Andrei Alexandrescu (5/14) Mar 10 2015 I think that's 2.066.1, right?
- Daniel Murphy (4/5) Mar 10 2015 2.066.1 is enough to build idgen.d, but it can't build ddmd on all
- Andrei Alexandrescu (9/14) Mar 10 2015 But this is weird - a release being built is required for building, um,
- Dicebot (4/20) Mar 10 2015 2.067 doesn't have DMD-built idgen yet. This is only applies to
- Andrei Alexandrescu (2/23) Mar 10 2015 Nice, thanks. -- Andrei
- Daniel Murphy (10/17) Mar 10 2015 <= 2.067 does not require a host D compiler at all to build.
( Replying to http://forum.dlang.org/post/54FB47B8.5060204 dawg.eu - sorry, can't post to the ML right now )First step towards self-hosting DDMD compiler. Please update your builds scripts and setups. https://github.com/D-Programming-Language/dmd/pull/3970Congratulations are in order. I have a question from Digger's perspective: Which version of DMD will be required to build DDMD? Will DDMD code be constrained to the feature set of DMD 2.067? Will future DMD versions promise to never break any DDMD code from any point in time? I certainly hope we aren't going to need a long daisy chain of DMD versions in order to build DMD completely from source...
Mar 08 2015
"Vladimir Panteleev" wrote in message news:berkxxqbqoxzitsulufd forum.dlang.org...Congratulations are in order. I have a question from Digger's perspective: Which version of DMD will be required to build DDMD?For now, 2.067.Will DDMD code be constrained to the feature set of DMD 2.067?For now, yes. If any critical issues come up between now and the eventual switch we'll have to bump it.Will future DMD versions promise to never break any DDMD code from any point in time?I don't think that would be practical.I certainly hope we aren't going to need a long daisy chain of DMD versions in order to build DMD completely from source...I would prefer long periods between host compiler version bumps, but is building completely from source really a concern?
Mar 08 2015
On Sunday, 8 March 2015 at 15:18:25 UTC, Daniel Murphy wrote:I don't think it would be, especially since building the successive stages can be trivially automated using a script if one is so inclined. — DavidI certainly hope we aren't going to need a long daisy chain of DMD versions in order to build DMD completely from source...I would prefer long periods between host compiler version bumps, but is building completely from source really a concern?
Mar 08 2015
On 3/8/2015 9:00 AM, David Nadlinger wrote:On Sunday, 8 March 2015 at 15:18:25 UTC, Daniel Murphy wrote:Trivial in theory, but we all know how fragile that can be in practice.I don't think it would be, especially since building the successive stages can be trivially automated using a script if one is so inclined.I certainly hope we aren't going to need a long daisy chain of DMD versions in order to build DMD completely from source...I would prefer long periods between host compiler version bumps, but is building completely from source really a concern?
Mar 08 2015
On Sunday, 8 March 2015 at 16:00:57 UTC, David Nadlinger wrote:On Sunday, 8 March 2015 at 15:18:25 UTC, Daniel Murphy wrote:OK, then can a file please be added to the DMD source repo which indicates which host DMD version is needed to build it?I don't think it would be, especially since building the successive stages can be trivially automated using a script if one is so inclined.I certainly hope we aren't going to need a long daisy chain of DMD versions in order to build DMD completely from source...I would prefer long periods between host compiler version bumps, but is building completely from source really a concern?
Mar 08 2015
"Vladimir Panteleev" wrote in message news:sjlsydcjflglxpwuscpk forum.dlang.org...OK, then can a file please be added to the DMD source repo which indicates which host DMD version is needed to build it?This seems reasonable. We could also add a static assert to provide a helpful error message when attempting to build with older versions, as currently it most likely results in memory corruption and segfaults. Assuming no critical bugs are found in 2.067, that should be the requirement for now. I think we avoid bumping the version again until a) critical issues are found that significantly hinder dmd's development or b) the newer compiler version offers significant advantages to development. An example of a would be if a new version of ld stopped accepting the object files generated by 2.067, or we wanted to add a new supported target that 2.067 didn't support. An example of B would be if changes to the compiler allowed a large performance boost or a lot of code to be deleted. Another issues is that the old D source may not compile with the latest compiler. eg the current source will stop building when overriding without override becomes an error. Sometimes this can be worked around, sometimes it can't.
Mar 08 2015
On Monday, 9 March 2015 at 04:01:26 UTC, Daniel Murphy wrote:"Vladimir Panteleev" wrote in message news:sjlsydcjflglxpwuscpk forum.dlang.org...A machine-readable version is preferable because then Digger can consult it to know which pre-built DMD version to fetch. If we had somewhere a machine-readable list of all DMD releases with binaries for major platforms plus release dates, it could use that as well, and just use the latest stable release for the point in time which the source code to be built is from.OK, then can a file please be added to the DMD source repo which indicates which host DMD version is needed to build it?This seems reasonable. We could also add a static assert to provide a helpful error message when attempting to build with older versions
Mar 09 2015
"Vladimir Panteleev" wrote in message news:njvvnodefqmrhzbuxcja forum.dlang.org...A machine-readable version is preferable because then Digger can consult it to know which pre-built DMD version to fetch.Yes. Any preference on the name?If we had somewhere a machine-readable list of all DMD releases with binaries for major platforms plus release dates, it could use that as well, and just use the latest stable release for the point in time which the source code to be built is from.Can that be generated from the git tags?
Mar 09 2015
On Monday, 9 March 2015 at 10:47:06 UTC, Daniel Murphy wrote:"Vladimir Panteleev" wrote in message news:njvvnodefqmrhzbuxcja forum.dlang.org...Not really. There is the VERSION file, maybe something like that.A machine-readable version is preferable because then Digger can consult it to know which pre-built DMD version to fetch.Yes. Any preference on the name?It depends, do we have a stable URL structure for DMD downloads so that you can build a working download URL with only the platform and version?If we had somewhere a machine-readable list of all DMD releases with binaries for major platforms plus release dates, it could use that as well, and just use the latest stable release for the point in time which the source code to be built is from.Can that be generated from the git tags?
Mar 09 2015
"Vladimir Panteleev" wrote in message news:bujssfggzyassdtzdegn forum.dlang.org...It depends, do we have a stable URL structure for DMD downloads so that you can build a working download URL with only the platform and version?Sorta http://downloads.dlang.org/releases/2014/
Mar 09 2015
On Monday, 9 March 2015 at 13:32:10 UTC, Daniel Murphy wrote:"Vladimir Panteleev" wrote in message news:bujssfggzyassdtzdegn forum.dlang.org...That has the year in the URL though... Can I get that programmatically, other than by querying the git tag?It depends, do we have a stable URL structure for DMD downloads so that you can build a working download URL with only the platform and version?Sorta http://downloads.dlang.org/releases/2014/
Mar 09 2015
"Vladimir Panteleev" wrote in message news:bbnllblbmhtjnkmdthgv forum.dlang.org...That has the year in the URL though... Can I get that programmatically, other than by querying the git tag?Not that I know of.
Mar 09 2015
On 2015-03-09 15:40, Vladimir Panteleev wrote:That has the year in the URL though...This might be easier: http://downloads.dlang.org/releases/2.x/ -- /Jacob Carlborg
Mar 09 2015
On Sunday, 8 March 2015 at 15:18:25 UTC, Daniel Murphy wrote:I would prefer long periods between host compiler version bumps, but is building completely from source really a concern?From a release building standpoint a new release must be buildable with the last release. I'd even opt for two release versions to prevent the use of bleeding edge features.
Mar 08 2015
On Mon, 09 Mar 2015 02:18:31 +1100, Daniel Murphy wrote:I would prefer long periods between host compiler version bumps, but is building completely from source really a concern?sure it is. one more windoze .exe to call for cross-building dmd.exe in=20 GNU/Linux. i managed to make it partially buildable with cross-mingw=20 (kawabanga!), and now it all again... also, treading crash bug still not=20 fixed, so vanilla dmd.exe keeps crashing with my wine. oh, crap... how i hate it.=
Mar 09 2015
On 3/8/2015 7:49 AM, Vladimir Panteleev wrote:Congratulations are in order.Yes.I have a question from Digger's perspective: Which version of DMD will be required to build DDMD? Will DDMD code be constrained to the feature set of DMD 2.067? Will future DMD versions promise to never break any DDMD code from any point in time? I certainly hope we aren't going to need a long daisy chain of DMD versions in order to build DMD completely from source...Hmm. That does leave us with the problem of bootstrapping it on a new platform. That would suggest constraining it to be compilable with 2.067.
Mar 08 2015
On Sunday, 8 March 2015 at 19:58:52 UTC, Walter Bright wrote:On 3/8/2015 7:49 AM, Vladimir Panteleev wrote:Also: https://issues.dlang.org/show_bug.cgi?id=14255Congratulations are in order.Yes.I have a question from Digger's perspective: Which version of DMD will be required to build DDMD? Will DDMD code be constrained to the feature set of DMD 2.067? Will future DMD versions promise to never break any DDMD code from any point in time? I certainly hope we aren't going to need a long daisy chain of DMD versions in order to build DMD completely from source...Hmm. That does leave us with the problem of bootstrapping it on a new platform. That would suggest constraining it to be compilable with 2.067.
Mar 08 2015
On Sunday, 8 March 2015 at 19:58:52 UTC, Walter Bright wrote:Hmm. That does leave us with the problem of bootstrapping it on a new platform. That would suggest constraining it to be compilable with 2.067.Once you fix DMD so that it can cross-compile (or use GDC/LDC), this is no longer an issue. Well, if you do not have a C toolchain for cross-compilation on your system, linking would be a bit tricky, but it would still be doable. It might be a mild inconvenience, but certainly not an insurmountable problem. — David
Mar 08 2015
"David Nadlinger" wrote in message news:ghztksvvlcgmaoycaxcz forum.dlang.org...Once you fix DMD so that it can cross-compile (or use GDC/LDC), this is no longer an issue. Well, if you do not have a C toolchain for cross-compilation on your system, linking would be a bit tricky, but it would still be doable. It might be a mild inconvenience, but certainly not an insurmountable problem.I agree, cross-compiling is the way forward.
Mar 08 2015
"Walter Bright" wrote in message news:mdi9ls$o10$1 digitalmars.com...Hmm. That does leave us with the problem of bootstrapping it on a new platform. That would suggest constraining it to be compilable with 2.067.If it's a new platform, why would 2.067 be able to target it?
Mar 08 2015
On 3/8/2015 5:00 PM, Daniel Murphy wrote:If it's a new platform, why would 2.067 be able to target it?Because it'll have a C++ compiler.
Mar 08 2015
"Walter Bright" wrote in message news:mdiqav$17i8$1 digitalmars.com...On 3/8/2015 5:00 PM, Daniel Murphy wrote:You'd be able to compile the C++ version of 2.067 on this platform, but 2.067 still wouldn't be able to target that platform without patches. Wouldn't it be easier to add support for the new platform into the latest compiler and cross-compile? IIRC you did something like this in the past when targeting new platforms.If it's a new platform, why would 2.067 be able to target it?Because it'll have a C++ compiler.
Mar 08 2015
On 3/8/2015 6:26 PM, Daniel Murphy wrote:"Walter Bright" wrote in message news:mdiqav$17i8$1 digitalmars.com...Never needed to build a cross compiler.On 3/8/2015 5:00 PM, Daniel Murphy wrote:You'd be able to compile the C++ version of 2.067 on this platform, but 2.067 still wouldn't be able to target that platform without patches. Wouldn't it be easier to add support for the new platform into the latest compiler and cross-compile? IIRC you did something like this in the past when targeting new platforms.If it's a new platform, why would 2.067 be able to target it?Because it'll have a C++ compiler.
Mar 08 2015
"Walter Bright" wrote in message news:mdj3l3$1hup$1 digitalmars.com...Never needed to build a cross compiler.You did when adding 64-bit targets. ie dmd is a 32->64 and 64->32 cross compiler. Anyway, in this situation: We want to target new platform X. Platform X has a c++ compiler but no D compiler available. 2.067 is the last version that can be built without a D compiler. DMD master can be built with 2.067 or later. The obvious (to me) way to get a working compiler on the platform is: 1. Add cross-compiling support targeting X to DMD master 2. Cross-compile DMD for X Or alternatively: 1. Add ability to target X to 2.067 C++ source 2. Compile 2.067 on X with C++ compiler 3. Add ability to target X to DMD master 4. Compile DMD master with native 2.067 dmd binary The second method is the only one I can think of that requires 2.067 can be compiled C++-only, and it also seems to require a lot more effort than the cross-compiling method. Which would you expect to use if adding support to dmd for eg arm/linux? Is there another method I'm missing? I think the only hard requirement is that there is a binary package available capable of targeting the platform, or the last C++ version can target it. For platforms that the C++ version has never supported, cross-compiling is the best option to produce the first set of native binaries.
Mar 08 2015
On 3/8/2015 8:43 PM, Daniel Murphy wrote:"Walter Bright" wrote in message news:mdj3l3$1hup$1 digitalmars.com...Not really. I never had to compile one one machine and copy the result onto another.Never needed to build a cross compiler.You did when adding 64-bit targets. ie dmd is a 32->64 and 64->32 cross compiler.Anyway, in this situation: We want to target new platform X. Platform X has a c++ compiler but no D compiler available. 2.067 is the last version that can be built without a D compiler. DMD master can be built with 2.067 or later. The obvious (to me) way to get a working compiler on the platform is: 1. Add cross-compiling support targeting X to DMD master 2. Cross-compile DMD for X Or alternatively: 1. Add ability to target X to 2.067 C++ source 2. Compile 2.067 on X with C++ compiler 3. Add ability to target X to DMD master 4. Compile DMD master with native 2.067 dmd binary The second method is the only one I can think of that requires 2.067 can be compiled C++-only, and it also seems to require a lot more effort than the cross-compiling method. Which would you expect to use if adding support to dmd for eg arm/linux? Is there another method I'm missing? I think the only hard requirement is that there is a binary package available capable of targeting the platform, or the last C++ version can target it. For platforms that the C++ version has never supported, cross-compiling is the best option to produce the first set of native binaries.How easy it is to copy the files over would decide which method is more convenient. Besides, it is likely the vast majority of the work would be in the back end, which remains in C++.
Mar 09 2015
"Walter Bright" wrote in message news:mdjh6g$215p$1 digitalmars.com...Not really. I never had to compile one one machine and copy the result onto another.It doesn't have to be cross-architecture to be a cross compiler.How easy it is to copy the files over would decide which method is more convenient. Besides, it is likely the vast majority of the work would be in the back end, which remains in C++.I guess that makes sense. It should be easier to apply a backend patch to two versions than it would be with a large frontend patch. Anyway, after the new platform is brought up, the original 2.067 still won't be able to target it and will therefore no longer be a suitable minimum host compiler version. This could be fixed by creating a point release for 2.067 that includes the new platform support, or by bumping the version requirement to the latest release. If we're talking months, then a point release is reasonable. If 2.067 is years old by then, it's probably best to bump the requirement. I think keeping the same minimum version the same for at least ~1 year should be reasonable.
Mar 09 2015
On 3/9/2015 12:30 AM, Daniel Murphy wrote:"Walter Bright" wrote in message news:mdjh6g$215p$1 digitalmars.com...As far as I'm concerned, if it's running on the same machine, it is not a cross compiler, it's a different memory model.Not really. I never had to compile one one machine and copy the result onto another.It doesn't have to be cross-architecture to be a cross compiler.Yup.How easy it is to copy the files over would decide which method is more convenient. Besides, it is likely the vast majority of the work would be in the back end, which remains in C++.I guess that makes sense. It should be easier to apply a backend patch to two versions than it would be with a large frontend patch. Anyway, after the new platform is brought up, the original 2.067 still won't be able to target it and will therefore no longer be a suitable minimum host compiler version. This could be fixed by creating a point release for 2.067 that includes the new platform support, or by bumping the version requirement to the latest release. If we're talking months, then a point release is reasonable. If 2.067 is years old by then, it's probably best to bump the requirement.
Mar 09 2015
"Walter Bright" wrote in message news:mdjj01$22eo$1 digitalmars.com...As far as I'm concerned, if it's running on the same machine, it is not a cross compiler, it's a different memory model.I... I don't agree. But luckily it doesn't matter.
Mar 09 2015
On Mon, 09 Mar 2015 00:12:47 -0700, Walter Bright wrote:On 3/8/2015 8:43 PM, Daniel Murphy wrote:so do you mean that if i need to compile under GNU/Linux, but have=20 compiler to produce windows PE, that means that i'm not doing cross- compile? no, i will not copy the resulting PE anywhere, i'll test it=20 right on the same box. a very interesting definition of cross-compilation and cross-compilers...="Walter Bright" wrote in message news:mdj3l3$1hup$1 digitalmars.com...=20 Not really. I never had to compile one one machine and copy the result onto another.Never needed to build a cross compiler.You did when adding 64-bit targets. ie dmd is a 32->64 and 64->32 cross compiler.
Mar 09 2015
On 9 March 2015 at 08:44, ketmar via Digitalmars-d <digitalmars-d puremagic.com> wrote:On Mon, 09 Mar 2015 00:12:47 -0700, Walter Bright wrote:There's a difference between cross-compiling for a wholly different platform/architecture vs. compiling on a multiarch-aware platform/cpu (such as 64->32).On 3/8/2015 8:43 PM, Daniel Murphy wrote:so do you mean that if i need to compile under GNU/Linux, but have compiler to produce windows PE, that means that i'm not doing cross- compile? no, i will not copy the resulting PE anywhere, i'll test it right on the same box. a very interesting definition of cross-compilation and cross-compilers..."Walter Bright" wrote in message news:mdj3l3$1hup$1 digitalmars.com...Not really. I never had to compile one one machine and copy the result onto another.Never needed to build a cross compiler.You did when adding 64-bit targets. ie dmd is a 32->64 and 64->32 cross compiler.
Mar 09 2015
On Monday, March 09, 2015 12:26:18 Daniel Murphy via Digitalmars-d wrote:"Walter Bright" wrote in message news:mdiqav$17i8$1 digitalmars.com...I thought that cross-compiling was pretty much always how you port a compiler to a new platform. Certainly, I don't see how we could require that ddmd forever compile with 2.067. The language is a lot more stable than it used to be, but it isn't _that_ stable. - Jonathan M DavisOn 3/8/2015 5:00 PM, Daniel Murphy wrote:You'd be able to compile the C++ version of 2.067 on this platform, but 2.067 still wouldn't be able to target that platform without patches. Wouldn't it be easier to add support for the new platform into the latest compiler and cross-compile? IIRC you did something like this in the past when targeting new platforms.If it's a new platform, why would 2.067 be able to target it?Because it'll have a C++ compiler.
Mar 08 2015
On 3/8/2015 9:07 PM, Jonathan M Davis via Digitalmars-d wrote:I thought that cross-compiling was pretty much always how you port a compiler to a new platform. Certainly, I don't see how we could require that ddmd forever compile with 2.067. The language is a lot more stable than it used to be, but it isn't _that_ stable.About once a week, when I pull all the DMD changes to my machine, it fails because it won't build druntime anymore. So I have to pull the druntime changes. Then it won't build Phobos anymore, so I have to pull that. And pray that it all will work, because sometimes it doesn't, and I don't know if the problem is in dmd, phobos, or druntime. This I want to avoid with bootstrapping the compiler. It's just too many things changing simultaneously.
Mar 09 2015
On Monday, 9 March 2015 at 01:26:10 UTC, Daniel Murphy wrote:"Walter Bright" wrote in message news:mdiqav$17i8$1 digitalmars.com...What about source Linux distributions, like Gentoo? What do other self-hosted languages do in this situation?On 3/8/2015 5:00 PM, Daniel Murphy wrote:You'd be able to compile the C++ version of 2.067 on this platform, but 2.067 still wouldn't be able to target that platform without patches. Wouldn't it be easier to add support for the new platform into the latest compiler and cross-compile? IIRC you did something like this in the past when targeting new platforms.If it's a new platform, why would 2.067 be able to target it?Because it'll have a C++ compiler.
Mar 09 2015
"Vladimir Panteleev" wrote in message news:vdwvdnzzzhenuybcbxjx forum.dlang.org...What about source Linux distributions, like Gentoo? What do other self-hosted languages do in this situation?Download the zip.
Mar 09 2015
On Tuesday, March 10, 2015 00:41:50 Daniel Murphy via Digitalmars-d wrote:"Vladimir Panteleev" wrote in message news:vdwvdnzzzhenuybcbxjx forum.dlang.org...And it's not like dmd would be alone with this problem. Other languages' compilers are written in the language that they compile as well (e.g. Haskell's ghc is written in Haskell), so it's not like this is a new problem. And actually, that's really what you're doing with gcc as well on gentoo - it's just that it comes with the base install rather than downloading it from elsewhere, but it's initially built elsewhere, otherwise gentoo would have nothing to compile with. - Jonathan M DavisWhat about source Linux distributions, like Gentoo? What do other self-hosted languages do in this situation?Download the zip.
Mar 10 2015
On Tuesday, 10 March 2015 at 10:33:24 UTC, Jonathan M Davis wrote:And it's not like dmd would be alone with this problem. Other languages' compilers are written in the language that they compile as wellYeah, besides you could cross compile to LLVM IR and use whatever LLVM tools exists on the target platform from there. Besides, you probably have access to an emulator if the target platform is really weird. The move to D based refactored D compiler is very promising. Kudos to the people behind this effort!
Mar 10 2015
On 3/8/15 7:49 AM, Vladimir Panteleev wrote:( Replying to http://forum.dlang.org/post/54FB47B8.5060204 dawg.eu - sorry, can't post to the ML right now )I think that's 2.066.1, right? BTW I just added https://issues.dlang.org/show_bug.cgi?id=14274. Who wants to take it? AndreiFirst step towards self-hosting DDMD compiler. Please update your builds scripts and setups. https://github.com/D-Programming-Language/dmd/pull/3970Congratulations are in order. I have a question from Digger's perspective: Which version of DMD will be required to build DDMD? Will DDMD code be constrained to the feature set of DMD 2.067?
Mar 10 2015
"Andrei Alexandrescu" wrote in message news:mdnvct$1avc$1 digitalmars.com...I think that's 2.066.1, right?2.066.1 is enough to build idgen.d, but it can't build ddmd on all platforms. Among other things, the varargs fixes are missing.
Mar 10 2015
On 3/10/15 5:06 PM, Daniel Murphy wrote:"Andrei Alexandrescu" wrote in message news:mdnvct$1avc$1 digitalmars.com...But this is weird - a release being built is required for building, um, itself? I do understand that idgen is a separate executable but the simple view is that if dmd 2.067 requires dmd being present, the preexisting dmd can't be 2.067. Or I'm misunderstanding something. The short version is the simpler the bootstrapping the better. AndreiI think that's 2.066.1, right?2.066.1 is enough to build idgen.d, but it can't build ddmd on all platforms. Among other things, the varargs fixes are missing.
Mar 10 2015
On Wednesday, 11 March 2015 at 02:10:12 UTC, Andrei Alexandrescu wrote:On 3/10/15 5:06 PM, Daniel Murphy wrote:2.067 doesn't have DMD-built idgen yet. This is only applies to current master and thus 2.068"Andrei Alexandrescu" wrote in message news:mdnvct$1avc$1 digitalmars.com...But this is weird - a release being built is required for building, um, itself? I do understand that idgen is a separate executable but the simple view is that if dmd 2.067 requires dmd being present, the preexisting dmd can't be 2.067. Or I'm misunderstanding something. The short version is the simpler the bootstrapping the better.I think that's 2.066.1, right?2.066.1 is enough to build idgen.d, but it can't build ddmd on all platforms. Among other things, the varargs fixes are missing.
Mar 10 2015
On 3/10/15 7:13 PM, Dicebot wrote:On Wednesday, 11 March 2015 at 02:10:12 UTC, Andrei Alexandrescu wrote:Nice, thanks. -- AndreiOn 3/10/15 5:06 PM, Daniel Murphy wrote:2.067 doesn't have DMD-built idgen yet. This is only applies to current master and thus 2.068"Andrei Alexandrescu" wrote in message news:mdnvct$1avc$1 digitalmars.com...But this is weird - a release being built is required for building, um, itself? I do understand that idgen is a separate executable but the simple view is that if dmd 2.067 requires dmd being present, the preexisting dmd can't be 2.067. Or I'm misunderstanding something. The short version is the simpler the bootstrapping the better.I think that's 2.066.1, right?2.066.1 is enough to build idgen.d, but it can't build ddmd on all platforms. Among other things, the varargs fixes are missing.
Mar 10 2015
"Andrei Alexandrescu" wrote in message news:mdo864$1jbk$1 digitalmars.com...But this is weird - a release being built is required for building, um, itself? I do understand that idgen is a separate executable but the simple view is that if dmd 2.067 requires dmd being present, the preexisting dmd can't be 2.067. Or I'm misunderstanding something. The short version is the simpler the bootstrapping the better.<= 2.067 does not require a host D compiler at all to build. master requires a host D compiler (but not a very recent one) Building ddmd requires >= 2.067 So for now, you just need _a_ compiler to build dmd. If you want to build ddmd you will need to upgrade to 2.067. After the 2.067 release I will start adding ddmd stuff to master, but even then you will still be able to build the C++ version of dmd with most old versions of dmd2 as host compiler.
Mar 10 2015