www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - druntime

reply bioinfornatics <bioinfornatics fedoraproject.org> writes:
Hi,
If i understand druntime from github is main part of library, but for build
druntime with ldc by example ldc add specific part, maybe is same for gdc.
It will better to add these specific part to main druntime and do something
like:
make dc=dmd
make install
-- or --
make dc=ldc
make install
-- or --
make dc=gdc
make install

This will be very helpful for me and packaging a D2 environnement

thanks
Jul 07 2011
next sibling parent reply Sean Kelly <sean invisibleduck.org> writes:
That would mean all D compiler writers maintain their runtime out of the sam=
e repository, which is impractical.=20

Sent from my iPhone

On Jul 7, 2011, at 4:52 AM, bioinfornatics <bioinfornatics fedoraproject.org=
 wrote:

 Hi,
 If i understand druntime from github is main part of library, but for buil=

 druntime with ldc by example ldc add specific part, maybe is same for gdc.=

 It will better to add these specific part to main druntime and do somethin=

 make dc=3Ddmd
 make install
 -- or --
 make dc=3Dldc
 make install
 -- or --
 make dc=3Dgdc
 make install
=20
 This will be very helpful for me and packaging a D2 environnement
=20
 thanks

Jul 07 2011
parent reply bioinfornatics <bioinfornatics fedoraproject.org> writes:
 sean
if you install ldc2 like:
$ cmake . -DD_VERSION:STRING=2 -DCONF_INST_DIR:PATH=/etc
$ make -j4 VERBOSE=2
$ make -j4 install

and try install druntime from
https://github.com/D-Programming-Language/druntime.git
I can't because make file is only for dmd. What i try to said, yes we need 1
druntime so for this reason druntime installer need support at least dmd, ldc,
gdc.
But is not case currently. And for this reason d2 can't go to Fedora 16. Because
ldc2 use cmake for build 3 projects (ldc, druntime, phobos)
I need 3 installer separately. And ldc2 use a druntime fork!

thanks for any answer :-)
Jul 08 2011
parent reply Iain Buclaw <ibuclaw ubuntu.com> writes:
== Quote from Jonathan M Davis (jmdavisProg gmx.com)'s article
 On 2011-07-08 10:42, bioinfornatics wrote:
  sean
 if you install ldc2 like:
 $ cmake . -DD_VERSION:STRING=2 -DCONF_INST_DIR:PATH=/etc
 $ make -j4 VERBOSE=2
 $ make -j4 install

 and try install druntime from
 https://github.com/D-Programming-Language/druntime.git I can't because
 make file is only for dmd. What i try to said, yes we need 1 druntime so
 for this reason druntime installer need support at least dmd, ldc, gdc.
 But is not case currently. And for this reason d2 can't go to Fedora 16.
 Because ldc2 use cmake for build 3 projects (ldc, druntime, phobos)
 I need 3 installer separately. And ldc2 use a druntime fork!

 thanks for any answer :-)

druntime. They may have to make changes to druntime to work, and Sean doesn't want to have to maintain all of the differences for every compiler. Rather, druntime is the reference implementation intended for dmd, and other compiler maintainers do whatever they need to with their own version of it to get it work with their compiler. - Jonathan M Davis

Exactly this, and the case is also vice versa with gdc. The druntime reference library also does many things that are unreasonable and incompatible with gdc (and I assume ditto ldc too). One future plan on my list is the restructuring of core/stdc to be more ports friendly (the source, not the installed files) - something to help push along ARM development for D2 with GDC, and hopefully for other archs to follow pursuit. The result being one elongated patch that won't be accepted upstream for sure. :~) Regards Iain
Jul 08 2011
next sibling parent reply Brad Roberts <braddr slice-2.puremagic.com> writes:
On Fri, 8 Jul 2011, Iain Buclaw wrote:
 == Quote from Jonathan M Davis (jmdavisProg gmx.com)'s article
 On 2011-07-08 10:42, bioinfornatics wrote:
  sean
 if you install ldc2 like:
 $ cmake . -DD_VERSION:STRING=2 -DCONF_INST_DIR:PATH=/etc
 $ make -j4 VERBOSE=2
 $ make -j4 install

 and try install druntime from
 https://github.com/D-Programming-Language/druntime.git I can't because
 make file is only for dmd. What i try to said, yes we need 1 druntime so
 for this reason druntime installer need support at least dmd, ldc, gdc.
 But is not case currently. And for this reason d2 can't go to Fedora 16.
 Because ldc2 use cmake for build 3 projects (ldc, druntime, phobos)
 I need 3 installer separately. And ldc2 use a druntime fork!

 thanks for any answer :-)

druntime. They may have to make changes to druntime to work, and Sean doesn't want to have to maintain all of the differences for every compiler. Rather, druntime is the reference implementation intended for dmd, and other compiler maintainers do whatever they need to with their own version of it to get it work with their compiler. - Jonathan M Davis

Exactly this, and the case is also vice versa with gdc. The druntime reference library also does many things that are unreasonable and incompatible with gdc (and I assume ditto ldc too). One future plan on my list is the restructuring of core/stdc to be more ports friendly (the source, not the installed files) - something to help push along ARM development for D2 with GDC, and hopefully for other archs to follow pursuit. The result being one elongated patch that won't be accepted upstream for sure. :~) Regards Iain

This is one area that I disagree with Sean on. I think it's worth merging in as much as we can to the druntime code base. I'm not against having separate trees vended by each compiler, but I hope/expect those to be the lowest level details and not be detectably different from phobos or user code. Having core.stdc diverge, as just one example, is a recipe for having code that only works on top of one specific runtime, which is NOT what we want. I _do_ want druntime to support more compilers than dmd an dmore platforms than dmd supports. My 2 cents, Brad
Jul 08 2011
parent reply Iain Buclaw <ibuclaw ubuntu.com> writes:
== Quote from Brad Roberts (braddr slice-2.puremagic.com)'s article
 On Fri, 8 Jul 2011, Iain Buclaw wrote:
 == Quote from Jonathan M Davis (jmdavisProg gmx.com)'s article
 On 2011-07-08 10:42, bioinfornatics wrote:
  sean
 if you install ldc2 like:
 $ cmake . -DD_VERSION:STRING=2 -DCONF_INST_DIR:PATH=/etc
 $ make -j4 VERBOSE=2
 $ make -j4 install

 and try install druntime from
 https://github.com/D-Programming-Language/druntime.git I can't because
 make file is only for dmd. What i try to said, yes we need 1 druntime so
 for this reason druntime installer need support at least dmd, ldc, gdc.
 But is not case currently. And for this reason d2 can't go to Fedora 16.
 Because ldc2 use cmake for build 3 projects (ldc, druntime, phobos)
 I need 3 installer separately. And ldc2 use a druntime fork!

 thanks for any answer :-)

druntime. They may have to make changes to druntime to work, and Sean doesn't want to have to maintain all of the differences for every compiler. Rather, druntime is the reference implementation intended for dmd, and other compiler maintainers do whatever they need to with their own version of it to get it work with their compiler. - Jonathan M Davis

Exactly this, and the case is also vice versa with gdc. The druntime reference library also does many things that are unreasonable and incompatible with gdc (and I assume ditto ldc too). One future plan on my list is the restructuring of core/stdc to be more ports friendly (the source, not the installed files) - something to help push along ARM development for D2 with GDC, and hopefully for other archs to follow pursuit. The result being one elongated patch that won't be accepted upstream for sure. :~) Regards Iain

in as much as we can to the druntime code base. I'm not against having separate trees vended by each compiler, but I hope/expect those to be the lowest level details and not be detectably different from phobos or user code. Having core.stdc diverge, as just one example, is a recipe for having code that only works on top of one specific runtime, which is NOT what we want.

Hardly - as core.stdc (forgot core.sys too :) is just a wrapper for the standard C library. Sweet story short, having version() else version() else version() for 6+ platforms and 12+ architectures is not workable in a single managed file - consider, for example, sys.stat with 15 variants of struct stat_t inside. Regards Iain
Jul 08 2011
parent Jacob Carlborg <doob me.com> writes:
On 2011-07-09 01:29, Iain Buclaw wrote:
 == Quote from Brad Roberts (braddr slice-2.puremagic.com)'s article
 On Fri, 8 Jul 2011, Iain Buclaw wrote:
 == Quote from Jonathan M Davis (jmdavisProg gmx.com)'s article
 On 2011-07-08 10:42, bioinfornatics wrote:
  sean
 if you install ldc2 like:
 $ cmake . -DD_VERSION:STRING=2 -DCONF_INST_DIR:PATH=/etc
 $ make -j4 VERBOSE=2
 $ make -j4 install

 and try install druntime from
 https://github.com/D-Programming-Language/druntime.git I can't because
 make file is only for dmd. What i try to said, yes we need 1 druntime so
 for this reason druntime installer need support at least dmd, ldc, gdc.
 But is not case currently. And for this reason d2 can't go to Fedora 16.
 Because ldc2 use cmake for build 3 projects (ldc, druntime, phobos)
 I need 3 installer separately. And ldc2 use a druntime fork!

 thanks for any answer :-)

druntime. They may have to make changes to druntime to work, and Sean doesn't want to have to maintain all of the differences for every compiler. Rather, druntime is the reference implementation intended for dmd, and other compiler maintainers do whatever they need to with their own version of it to get it work with their compiler. - Jonathan M Davis

Exactly this, and the case is also vice versa with gdc. The druntime reference library also does many things that are unreasonable and incompatible with gdc (and I assume ditto ldc too). One future plan on my list is the restructuring of core/stdc to be more ports friendly (the source, not the installed files) - something to help push along ARM development for D2 with GDC, and hopefully for other archs to follow pursuit. The result being one elongated patch that won't be accepted upstream for sure. :~) Regards Iain

in as much as we can to the druntime code base. I'm not against having separate trees vended by each compiler, but I hope/expect those to be the lowest level details and not be detectably different from phobos or user code. Having core.stdc diverge, as just one example, is a recipe for having code that only works on top of one specific runtime, which is NOT what we want.

Hardly - as core.stdc (forgot core.sys too :) is just a wrapper for the standard C library. Sweet story short, having version() else version() else version() for 6+ platforms and 12+ architectures is not workable in a single managed file - consider, for example, sys.stat with 15 variants of struct stat_t inside. Regards Iain

How about having a separate branch for each compiler in druntime? The compiler maintainers will maintain their own branch but if there's a change that doesn't actually affect any compiler specific code, i.e. adding a new function to core.stdc, then that change can be made to all branches. -- /Jacob Carlborg
Jul 09 2011
prev sibling parent "Jonathan M Davis" <jmdavisProg gmx.com> writes:
On 2011-07-08 15:23, Brad Roberts wrote:
 On Fri, 8 Jul 2011, Iain Buclaw wrote:
 == Quote from Jonathan M Davis (jmdavisProg gmx.com)'s article
 
 On 2011-07-08 10:42, bioinfornatics wrote:
  sean
 if you install ldc2 like:
 $ cmake . -DD_VERSION:STRING=2 -DCONF_INST_DIR:PATH=/etc
 $ make -j4 VERBOSE=2
 $ make -j4 install
 
 and try install druntime from
 https://github.com/D-Programming-Language/druntime.git I can't
 because make file is only for dmd. What i try to said, yes we need 1
 druntime so for this reason druntime installer need support at least
 dmd, ldc, gdc. But is not case currently. And for this reason d2
 can't go to Fedora 16. Because ldc2 use cmake for build 3 projects
 (ldc, druntime, phobos) I need 3 installer separately. And ldc2 use
 a druntime fork!
 
 thanks for any answer :-)

I believe that it's _expected_ that other compilers will use forks of druntime. They may have to make changes to druntime to work, and Sean doesn't want to have to maintain all of the differences for every compiler. Rather, druntime is the reference implementation intended for dmd, and other compiler maintainers do whatever they need to with their own version of it to get it work with their compiler. - Jonathan M Davis

Exactly this, and the case is also vice versa with gdc. The druntime reference library also does many things that are unreasonable and incompatible with gdc (and I assume ditto ldc too). One future plan on my list is the restructuring of core/stdc to be more ports friendly (the source, not the installed files) - something to help push along ARM development for D2 with GDC, and hopefully for other archs to follow pursuit. The result being one elongated patch that won't be accepted upstream for sure. :~) Regards Iain

This is one area that I disagree with Sean on. I think it's worth merging in as much as we can to the druntime code base. I'm not against having separate trees vended by each compiler, but I hope/expect those to be the lowest level details and not be detectably different from phobos or user code. Having core.stdc diverge, as just one example, is a recipe for having code that only works on top of one specific runtime, which is NOT what we want. I _do_ want druntime to support more compilers than dmd an dmore platforms than dmd supports.

Well, I think that it makes sense to try and minimize what needs to be different between compilers, but it does risk being messy if we try and support the quirks of multiple compilers in the main druntime repository. And it's not like we're going to have the autotester dealing with all of that either. We need to try and minimize what needs to be changed between compilers in order to minimize the work for people porting druntime to other compilers and minimize the risk of code breakage due to those changes, but I'm highly skeptical that having druntime worry about multiple compilers is a good idea. - Jonathan M Davis
Jul 08 2011
prev sibling next sibling parent "Jonathan M Davis" <jmdavisProg gmx.com> writes:
On 2011-07-08 10:42, bioinfornatics wrote:
  sean
 if you install ldc2 like:
 $ cmake . -DD_VERSION:STRING=2 -DCONF_INST_DIR:PATH=/etc
 $ make -j4 VERBOSE=2
 $ make -j4 install
 
 and try install druntime from
 https://github.com/D-Programming-Language/druntime.git I can't because
 make file is only for dmd. What i try to said, yes we need 1 druntime so
 for this reason druntime installer need support at least dmd, ldc, gdc.
 But is not case currently. And for this reason d2 can't go to Fedora 16.
 Because ldc2 use cmake for build 3 projects (ldc, druntime, phobos)
 I need 3 installer separately. And ldc2 use a druntime fork!
 
 thanks for any answer :-)

I believe that it's _expected_ that other compilers will use forks of druntime. They may have to make changes to druntime to work, and Sean doesn't want to have to maintain all of the differences for every compiler. Rather, druntime is the reference implementation intended for dmd, and other compiler maintainers do whatever they need to with their own version of it to get it work with their compiler. - Jonathan M Davis
Jul 08 2011
prev sibling parent Sean Kelly <sean invisibleduck.org> writes:
=46rom having done this with Tango, a lot of the divergence was with detecti=
on compiler to use/not use compiler intrinsics, plus some issues where parts=
 of stdc weren't implemented. If there are other compatibility issues outsid=
e rt I'd like to know what they are. I'd certainly be amenable to making dru=
ntime more compatible in places.=20

Sent from my iPhone

On Jul 8, 2011, at 6:23 PM, Brad Roberts <braddr puremagic.com> wrote:

 On Fri, 8 Jul 2011, Iain Buclaw wrote:
 =3D=3D Quote from Jonathan M Davis (jmdavisProg gmx.com)'s article
 On 2011-07-08 10:42, bioinfornatics wrote:
  sean
 if you install ldc2 like:
 $ cmake . -DD_VERSION:STRING=3D2 -DCONF_INST_DIR:PATH=3D/etc
 $ make -j4 VERBOSE=3D2
 $ make -j4 install
=20
 and try install druntime from
 https://github.com/D-Programming-Language/druntime.git I can't because
 make file is only for dmd. What i try to said, yes we need 1 druntime s=




 for this reason druntime installer need support at least dmd, ldc, gdc.=




 But is not case currently. And for this reason d2 can't go to Fedora 16=




 Because ldc2 use cmake for build 3 projects (ldc, druntime, phobos)
 I need 3 installer separately. And ldc2 use a druntime fork!
=20
 thanks for any answer :-)

druntime. They may have to make changes to druntime to work, and Sean do=



 want to have to maintain all of the differences for every compiler. Rath=



 druntime is the reference implementation intended for dmd, and other com=



 maintainers do whatever they need to with their own version of it to get=



 work with their compiler.
 - Jonathan M Davis

Exactly this, and the case is also vice versa with gdc. The druntime refe=


 library also does many things that are unreasonable and incompatible with=


 I assume ditto ldc too).
=20
 One future plan on my list is the restructuring of core/stdc to be more p=


 friendly (the source, not the installed files) - something to help push a=


 development for D2 with GDC, and hopefully for other archs to follow purs=


 result being one elongated patch that won't be accepted upstream for sure=


=20
 Regards
 Iain

This is one area that I disagree with Sean on. I think it's worth merging=

 in as much as we can to the druntime code base.  I'm not against having=20=

 separate trees vended by each compiler, but I hope/expect those to be the=20=

 lowest level details and not be detectably different from phobos or user=20=

 code.  Having core.stdc diverge, as just one example, is a recipe for=20
 having code that only works on top of one specific runtime, which is NOT=20=

 what we want.
=20
 I _do_ want druntime to support more compilers than dmd an dmore platforms=

 than dmd supports.
=20
 My 2 cents,
 Brad

Jul 09 2011