December 04, 2018
On Tue, Dec 04, 2018 at 02:37:04PM -0500, Steven Schveighoffer via Digitalmars-d wrote: [...]
> From my memory, I remember the big thing of D 2.0 was immutable/const. Essentially there was no way to shoehorn immutable (then called invariant) and const into the D compiler without breaking everything (and as one who tried to port Tango to D2, I experienced this first-hand), so the fork was made. I'm sure there was a definitive point at which this was decided.  Unfortunately, I don't think DMD was even using subversion back then, so the code history may be hard to construct.
[...]

This is also the version of D's history that I've heard before. D2 was more-or-less "officially" started with the introduction of the const system that broke basically all prior code. In order to keep existing code working, D1 was forked from the main compiler and maintained for a number of years.  IIRC it was also around that time that Andrei came on board.

Not using version control was a very unwise thing to do, though I do sympathise that back in the day, there weren't many good version control systems out there, plus the awareness of the benefits of version control wasn't that widespread.

(I've had the misfortune of having to deal with CVS, which was OK for smallish projects but was so painful to work with for real-world-scale projects that it effectively acted as a deterrent against using version control.  When subversion first came out, it was revolutionary to many CVS users ("What, you can make a branch in just a few seconds, as opposed to waiting 45 mins while CVS chews through your hard drive updating all those RCS files?!").  Git took this to whole new levels by making branches and history navigation local, avoiding network roundtrips altogether, and really streamlining the checkin / checkout / branch operations such that today, it's practically an embarrassment not to use version control.  Years ago I started using version control for *everything*, not just code, and haven't regretted it since. It's saved my life more than a few times, not to mention the piece of mind that backups are readily available should something horrible go wrong with your precious files.)


T

-- 
First Rule of History: History doesn't repeat itself -- historians merely repeat each other.
December 04, 2018
On 12/4/18 2:58 PM, H. S. Teoh wrote:
> Not using version control was a very unwise thing to do, though I do
> sympathise that back in the day, there weren't many good version control
> systems out there, plus the awareness of the benefits of version control
> wasn't that widespread.

I think it was just that the sole (or few?) maintainer didn't need to have it to get stuff done.

Just for fun I went back and looked, dsource.org shows 0.50 as the first first put into (at least public) source control: http://dsource.org/projects/dmd/browser/trunk/src?rev=5

Of course, that's just the front end. Phobos may have had earlier history as I think it was more of a distributed effort.

-Steve
December 04, 2018
On 12/4/18 3:43 PM, Steven Schveighoffer wrote:
> On 12/4/18 2:58 PM, H. S. Teoh wrote:
>> Not using version control was a very unwise thing to do, though I do
>> sympathise that back in the day, there weren't many good version control
>> systems out there, plus the awareness of the benefits of version control
>> wasn't that widespread.
> 
> I think it was just that the sole (or few?) maintainer didn't need to have it to get stuff done.
> 
> Just for fun I went back and looked, dsource.org shows 0.50 as the first first put into (at least public) source control: http://dsource.org/projects/dmd/browser/trunk/src?rev=5
> 
> Of course, that's just the front end. Phobos may have had earlier history as I think it was more of a distributed effort.


Hm... looks like that source tree is reconstructed, as it seems 0.50 was released in 2002!

https://forum.dlang.org/thread/arfoqu$4q6$1@digitaldaemon.com

So there actually is history before 2009 available publicly.

It's then probably possible to find the point at which D2 was forked, but I'm not about to dig that much :)

-Steve
December 04, 2018
On Friday, 30 November 2018 at 19:34:58 UTC, Andrei Alexandrescu wrote:
> Over the past few months, Walter, Mike, and myself have been working on a draft submission for the HOPL 2020 conference (History of Programming Languages).
>
> The submission proceeds in several stages. Currently we've been through one round of preliminary review. Here is the current draft:
>
> http://erdani.com/hopl2020-draft.pdf
>
> We'd appreciate feedback and additional historical details.
>
>
> Thanks,
>
> Andrei (on behalf of Walter and Mike as well)

I see no mention of array ops. I think they deserve more credit that they do.

Arrays ops, now that they are fixed in DMD, are a very convenient way to ensure that an operation is written in a way that can be auto-vectorized.

Or at least it gives the perception that it will be auto-vectorized, dunno.
December 04, 2018
On Tue, Dec 04, 2018 at 03:43:57PM -0500, Steven Schveighoffer via Digitalmars-d wrote:
> On 12/4/18 2:58 PM, H. S. Teoh wrote:
> > Not using version control was a very unwise thing to do, though I do sympathise that back in the day, there weren't many good version control systems out there, plus the awareness of the benefits of version control wasn't that widespread.
> 
> I think it was just that the sole (or few?) maintainer didn't need to
> have it to get stuff done.
[...]

Still unwise.  I use version control for all of my projects (and not just D ones, even stuff like websites, POVRay scene files, music, and configuration files).  People seem to have this idea that version control is only for code, but in reality, it's extremely useful for anything that changes over time that you might conceivably want to retrieve prior versions of (even if just for comparison).  And in this day and age, with the ease of use of git, there's really no excuse not to use version control for anything of value.


T

-- 
The best way to destroy a cause is to defend it poorly.
December 04, 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!)
December 04, 2018
On Tuesday, December 4, 2018 12:18:22 PM MST Jacob Carlborg via Digitalmars- d wrote:
> On 2018-12-02 16:21, Jonathan M Davis wrote:
> > Tango was eventually ported to D2, but it hasn't been maintained. I tried to compile it to benchmark its XML parser against dxml when preparing my dconf talk this year, and Tango wouldn't compile anymore.
>
> The latest tested version of DMD which compiles Tango is supposed to be 2.068.

Well, then that would be a clear indicator that it's unmaintained at this point. That's not even close to the current version of dmd, and it's certainly nowhere near the version that it would need to work with for me to be able to compare its XML parser with dxml like I was trying to do.

- Jonathan M Davis



December 05, 2018
On Wednesday, 5 December 2018 at 04:04:31 UTC, Jonathan M Davis wrote:
> On Tuesday, December 4, 2018 12:18:22 PM MST Jacob Carlborg via Digitalmars- d wrote:
>> On 2018-12-02 16:21, Jonathan M Davis wrote:
>> > Tango was eventually ported to D2, but it hasn't been maintained. I tried to compile it to benchmark its XML parser against dxml when preparing my dconf talk this year, and Tango wouldn't compile anymore.
>>
>> The latest tested version of DMD which compiles Tango is supposed to be 2.068.
>
> Well, then that would be a clear indicator that it's unmaintained at this point. That's not even close to the current version of dmd, and it's certainly nowhere near the version that it would need to work with for me to be able to compare its XML parser with dxml like I was trying to do.
>
> - Jonathan M Davis

Ocean's XML parser should be a fork of Tango's one and ocean compiles officially with DMD up to 2.078 and I know some parts are compiling with newer compilers (new major should support newer compilers officially):

https://github.com/sociomantic-tsunami/ocean/tree/v4.x.x/src/ocean/text/xml

December 05, 2018
On Wednesday, 5 December 2018 at 11:20:37 UTC, Nemanja Boric wrote:
> On Wednesday, 5 December 2018 at 04:04:31 UTC, Jonathan M Davis wrote:
>> [...]
>
> Ocean's XML parser should be a fork of Tango's one and ocean compiles officially with DMD up to 2.078 and I know some parts are compiling with newer compilers (new major should support newer compilers officially):
>
> https://github.com/sociomantic-tsunami/ocean/tree/v4.x.x/src/ocean/text/xml

By the way, I'm just going to leave this issue here :-)

https://github.com/sociomantic-tsunami/ocean/issues/613
December 05, 2018
On Wednesday, December 5, 2018 4:20:37 AM MST Nemanja Boric via Digitalmars- d wrote:
> On Wednesday, 5 December 2018 at 04:04:31 UTC, Jonathan M Davis
>
> wrote:
> > On Tuesday, December 4, 2018 12:18:22 PM MST Jacob Carlborg via
> >
> > Digitalmars- d wrote:
> >> On 2018-12-02 16:21, Jonathan M Davis wrote:
> >> > Tango was eventually ported to D2, but it hasn't been maintained. I tried to compile it to benchmark its XML parser against dxml when preparing my dconf talk this year, and Tango wouldn't compile anymore.
> >>
> >> The latest tested version of DMD which compiles Tango is supposed to be 2.068.
> >
> > Well, then that would be a clear indicator that it's unmaintained at this point. That's not even close to the current version of dmd, and it's certainly nowhere near the version that it would need to work with for me to be able to compare its XML parser with dxml like I was trying to do.
> >
> > - Jonathan M Davis
>
> Ocean's XML parser should be a fork of Tango's one and ocean compiles officially with DMD up to 2.078 and I know some parts are compiling with newer compilers (new major should support newer compilers officially):
>
> https://github.com/sociomantic-tsunami/ocean/tree/v4.x.x/src/ocean/text/xm l

Yeah, Don pointed that out during my talk. When preparing my talk, I'd considered checking out Ocean to see if it had Tango's XML parser after Tango failed to compile, but I was in a hurry, and my laptop was running FreeBSD, whereas the Ocean documentation said that it was Linux-only. So, it didn't make sense to test it at that point, and benchmarking dxml against other XML libraries hasn't been a high enough priority since then for me to get around to it.

- Jonathan M Davis