www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Re: why a part of D community do not want go to D2 ?

reply Sean Kelly <sean invisibleduck.org> writes:
Jacob Carlborg Wrote:

 On 2010-11-09 23:04, Don wrote:
 Jacob Carlborg wrote:
 On 2010-11-09 17:43, Andrei Alexandrescu wrote:
 I wouldn't be surprised if Tango chose to turn away from compatibility
 for the second time (be it theoretical compatibility for now since there
 is no Tango for D2). The technical reasons are dwindling and became
 tenuous to argue for, but however weak they are, they could be used to
 promote a political motivation: a Tango/D2 offering would come again as
 an either-or proposition for a standard library that precludes usage of
 Tango2 and Phobos2 together. In my opinion that would be an extremely
 dangerous gambit.

Clearly we don't see this in the same way. I see it like this, because Tango was first it's druntime that chose to turn away from compatibility.

Sorry, that is completely false. druntime was created specifically to allow Phobos and Tango to co-exist. At the time, almost all of the code in druntime was written by Sean, and he was leading the Tango runtime development. The expectation was that Tango would continue to use Sean's runtime, it was just in a separate project.

Of course that would be the preferred way, there should have been some kind of agreement for this (maybe there was but never fulfilled?) But you also have to look at it from Tangos point of view. Why would Tango drop support for anything that isn't DMD 32bit? Or should Tango keep half of it's runtime in it's own repository and for the other half use druntime.

I maintained a D1 branch of druntime for ages thinking that it might be a good transition point for Tango, but no one ever used it. I was also very careful to avoid creating any incompatibilities with the Tango runtime for quite a while, but finally had to choose between letting the library stagnate in anticipation of an event that would likely never happen and moving forward. I do still try to avoid changing existing user-facing code though. Also, if you compare the two now, I think you'll find that the Tango runtime has diverged from the original design far more than druntime, so there's little apparent interest there in facilitating a merge. Either way, as there's been little apparent effort in porting Tango to D2, this whole discussion is moot.
 For this to work the Tango team and the druntime
 contributors/maintainers have collaborate and work together on a
 runtime.

That runtime is druntime. If there is no understanding of that at Tango, that is suicide.

Apparently not, since Sean ripped out all that wasn't necessary for Phobos but is necessary for Tango. Why are you blaming everything on Tango all the time?

Sean took all the code he had written. The other minor contributors did not yet give permission for their code to be used, so of course it could not be included.

I really think it's a shame they couldn't/wanted to give permission for their code to be used.

There was another simpler reason as well, which was that I didn't want to speculatively maintain code for various compilers or whatever just in case they decided to use druntime one day. It's far less effort to simply add whatever's needed when that day comes. Also, I do still feel that the druntime SVN shouldn't have to be the repository used for every compiler runtime or garbage collector implementation. That was necessary in Tango because Tango was an alternative library, so for any hope of Tango being used we had to do all the work ourselves. It's far from being an optimal workflow however.
Nov 10 2010
next sibling parent reply Jacob Carlborg <doob me.com> writes:
On 2010-11-10 22:26, Sean Kelly wrote:
 Jacob Carlborg Wrote:

 On 2010-11-09 23:04, Don wrote:
 Jacob Carlborg wrote:
 On 2010-11-09 17:43, Andrei Alexandrescu wrote:
 I wouldn't be surprised if Tango chose to turn away from compatibility
 for the second time (be it theoretical compatibility for now since there
 is no Tango for D2). The technical reasons are dwindling and became
 tenuous to argue for, but however weak they are, they could be used to
 promote a political motivation: a Tango/D2 offering would come again as
 an either-or proposition for a standard library that precludes usage of
 Tango2 and Phobos2 together. In my opinion that would be an extremely
 dangerous gambit.

Clearly we don't see this in the same way. I see it like this, because Tango was first it's druntime that chose to turn away from compatibility.

Sorry, that is completely false. druntime was created specifically to allow Phobos and Tango to co-exist. At the time, almost all of the code in druntime was written by Sean, and he was leading the Tango runtime development. The expectation was that Tango would continue to use Sean's runtime, it was just in a separate project.

Of course that would be the preferred way, there should have been some kind of agreement for this (maybe there was but never fulfilled?) But you also have to look at it from Tangos point of view. Why would Tango drop support for anything that isn't DMD 32bit? Or should Tango keep half of it's runtime in it's own repository and for the other half use druntime.

I maintained a D1 branch of druntime for ages thinking that it might be a good transition point for Tango, but no one ever used it. I was also very careful to avoid creating any incompatibilities with the Tango runtime for quite a while, but finally had to choose between letting the library stagnate in anticipation of an event that would likely never happen and moving forward. I do still try to avoid changing existing user-facing code though. Also, if you compare the two now, I think you'll find that the Tango runtime has diverged from the original design far more than druntime, so there's little apparent interest there in facilitating a merge. Either way, as there's been little apparent effort in porting Tango to D2, this whole discussion is moot.

I can really understand that this can be very frustrating. I don't have any answers on why Tango didn't adopt druntime. Although as I said earlier I can think some reasons like no support for other compilers.
 For this to work the Tango team and the druntime
 contributors/maintainers have collaborate and work together on a
 runtime.

That runtime is druntime. If there is no understanding of that at Tango, that is suicide.

Apparently not, since Sean ripped out all that wasn't necessary for Phobos but is necessary for Tango. Why are you blaming everything on Tango all the time?

Sean took all the code he had written. The other minor contributors did not yet give permission for their code to be used, so of course it could not be included.

I really think it's a shame they couldn't/wanted to give permission for their code to be used.

There was another simpler reason as well, which was that I didn't want to speculatively maintain code for various compilers or whatever just in case they decided to use druntime one day. It's far less effort to simply add whatever's needed when that day comes. Also, I do still feel that the druntime SVN shouldn't have to be the repository used for every compiler runtime or garbage collector implementation. That was necessary in Tango because Tango was an alternative library, so for any hope of Tango being used we had to do all the work ourselves. It's far from being an optimal workflow however.

I you don't think that support for other compilers should be in druntime what do you suggest? -- /Jacob Carlborg
Nov 11 2010
parent Daniel Gibson <metalcaedes gmail.com> writes:
Jacob Carlborg schrieb:
 On 2010-11-10 22:26, Sean Kelly wrote:
 There was another simpler reason as well, which was that I didn't want 
 to speculatively maintain code for various compilers or whatever just 
 in case they decided to use druntime one day.  It's far less effort to 
 simply add whatever's needed when that day comes.  Also, I do still 
 feel that the druntime SVN shouldn't have to be the repository used 
 for every compiler runtime or garbage collector implementation.  That 
 was necessary in Tango because Tango was an alternative library, so 
 for any hope of Tango being used we had to do all the work ourselves.  
 It's far from being an optimal workflow however.

I you don't think that support for other compilers should be in druntime what do you suggest?

That every compiler ships it's own version of druntime? If druntime needs to be adjusted for any compiler anyway, the compiler-devs can do that themselves (probably they know better how to do that, anyway). This has the merit the compiler devs can make changes on the compiler without being afraid of breaking druntime - because they can adjust their version of druntime accordingly. Cheers, - Daniel
Nov 11 2010
prev sibling parent Bernard Helyer <b.helyer gmail.com> writes:
On Wed, 10 Nov 2010 16:26:52 -0500, Sean Kelly wrote:
 Also, I do still feel
 that the druntime SVN shouldn't have to be the repository used for every
 compiler runtime or garbage collector implementation.

I am attempting to write a compiler in D2 (github.com/bhelyer/SDC), and I can't help but feel that rewriting druntime, or picking out the relatively benign parts would be a difficult, bug filled task. I don't see a realistic alternative to druntime compatibility. I also feel that having all implementations share the GC implementation means that improvements there will improve everywhere else. If I weren't to use druntime's GC, then I would use the Boehm collector, but I feel using druntime is more beneficial than not.
Nov 11 2010