If there is going to be a D3, will it be backwards compatible with D2?<br><br>And why is work still being done on the D1 compiler?  Shouldn't it be marked deprecated so people stop using it and move to D2?<br><br>Also, do you know if there are any plans to standardize the language?  Is the specification complete? <br>
<br><br><div class="gmail_quote">On Sat, Dec 18, 2010 at 3:36 AM, Jonathan M Davis <span dir="ltr"><<a href="mailto:jmdavisProg@gmx.com">jmdavisProg@gmx.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im">On Saturday 18 December 2010 01:14:19 Gour wrote:<br>
> Hello,<br>
><br>
> Seeing all the threads here about improving D(2) syntax for different<br>
> features of the language, I just wonder if it's possible to learn D(2)<br>
> language which is so much in flux by using TDPL as reference?<br>
><br>
> Now I may have some time to learn D(2), but wonder when will the<br>
> language become more stable or the proposals/improvements discussed<br>
> here (I skip over majority of such threads) are not major changes?<br>
<br>
</div>TDPL is mostly correct. There are a few features that it discusses that either<br>
quite buggy or outright unimplemented (e.g. neither inout and alias this is<br>
completely implemented and some of what is implemented is rather buggy). There<br>
are also some features which may change. However, at this point, stuff is only<br>
going to change with a really good reason, and most of such changes are likely<br>
to be additive and wouldn't break much - if anything. For instance, weak purity<br>
is essentially an additive change. It makes it so that more functions can be<br>
marked as pure, but it doesn't make more functions optimizable due to purity,<br>
and it doesn't break any code.<br>
<br>
Prior to the release of TDPL, there were at times major changes between releases<br>
of dmd which broke a lot of code. That doesn't really happen anymore.<br>
<br>
For the most part, if you follow TDPL, you will be fine. Some stuff in TDPL won't<br>
work yet in practice, and it is possible that a few changes will be made to the<br>
language at some point which break current code and/or contradict TDPL. But no<br>
such changes have yet been made, I don't believe, and there are none which have<br>
been decided upon. None will be made without a definite, compelling reason,<br>
precisely because TDPL is supposed to be valid. D2 is not entirely stable, but<br>
it the spec is no longer in constant flux either.<br>
<br>
Some changes likely will happen, but only as necessary, and they're going to be<br>
rare. And as time passes, they will become even rarer.<br>
<br>
Some folks will continue to discuss possible features for D which will never<br>
make it into D2. If there is ever a D3, they may be included then, but stuff like<br>
non-nullable references is not going to make it into the language in D2 (though<br>
there may be a library solution for it).<br>
<br>
Now, Phobos is certainly in flux. Parts of it are quite stable and won't be<br>
changing particularly, but there's plenty of it which will continue to evolve,<br>
and there will certainly be more stuff being added. Phobos is still very much a<br>
work in progress.<br>
<br>
Really, the biggest obstacle to D development at this point is likely simply<br>
bugs - be they in the compiler or in Phobos. The situation continues to improve,<br>
but there are bugs which pop up from time to time which can cause major<br>
headaches (like inout being totally broken at the moment). The language spec is<br>
essentially stable, but not necessarily set in stone. In almost all cases, you<br>
can rely on TDPL being correct. So, I wouldn't worry too much about that.<br>
Compiler bugs are far more likely to trip you up than any language changes. If<br>
and when they happen, they'll probably remove certain types of problems rather<br>
than causing much in the way of new ones anyway.<br>
<font color="#888888"><br>
- Jonathan M Davis<br>
</font></blockquote></div><br>