Origins of the D Programming Language
Adam D. Ruppe
destructionator at gmail.com
Tue Dec 4 22:27:06 UTC 2018
On Tuesday, 4 December 2018 at 20:56:43 UTC, Steven Schveighoffer
wrote:
> So there actually is history before 2009 available publicly.
Yes, you can simply look at the changelog.
http://dlang.org/changelog
It goes all the way to the beginning if you make a few clicks
(first to 1.0, then to "even older versions"). It also includes
downloads for most the releases from 0.50 and up.
> It's then probably possible to find the point at which D2 was
> forked, but I'm not about to dig that much :)
Version D 1.001 Jan 23, 2007 (notable: tail recursion works
again, New type aware GC. lol how monumental, a regression got
fixed)
2.000 released Jun 17, 2007 (notable: Added const, invariant, and
final.)
It is about 6 months later, and yes, const was the
differentiating feature there... though it didn't actually break
any existing code until D 2.006, released Oct 16, 2007:
"Transformed all of string, wstring, and dstring into invariant
definitions.")
2.006 was the release that majorly broke code, not 2.0. In fact,
1.0 16 maintained some compatibility:
Version D 1.016 Jun 14, 2007, "Added aliases string, wstring,
and dstring to ease compatiblity with 2.0."
And 1.0 wasn't entirely afraid of evolving code... at least for a
while:
Version D 1.005 Feb 5, 2007
New/Changed Features
-v now emits pragma library statements and imported file names
deprecated ===, and !==, tokens no longer recognized
length can no longer shadow other length declarations
Added MixinStatements, MixinExpressions, and
MixinDeclarations.
Added ImportExpressions.
Added std.metastrings
(seriously, 1.005 is far more monumental than 1.000 - it added
mixins!!!)
1.006 added CTFE and the -J switch.
But what I'm trying to say is that 2.0 was not really forked off
of 1.0! It was 1.0 that got forked off (around D 1.016, Jun 14,
2007) and only got some selective patches applied while D, now
rebranded as 2.0, continued down the same path it has always been
on.
Look at what happened to the D1 fork around the time D2 continued
the evolution: there was extern(System) after the D2 release
(1.021 and 2.003, released simultaneously)... but mostly, it was
stuff under bug fixes, and very rare new features, even rarer
changed features.
For many years before and after June 2007, D has evolved. The
anomaly is that there was a branch of it kinda frozen in time
which we now call D1. And as you can see from the kinda random
version numbers quoted above, it really was totally arbitrary. It
was totally arbitrary to call one of them 1.0 (whose only notable
changes were a regression fix and a GC implementation detail),
and totally arbitrary to call the bug fix release D 1.017 and the
feature release D 2.0 instead of calling the feature release D
1.017 and the bug fix release D 1.016.1 (which is probably what
we'd call it if using today's system!)
More information about the Digitalmars-d
mailing list