On Thursday, 12 June 2014 at 17:52:59 UTC, Andrei Alexandrescu
On 6/12/14, 10:40 AM, Nick Sabalausky wrote:
On 6/10/2014 12:35 PM, justme wrote:
On Wednesday, 4 June 2014 at 06:13:39 UTC, Andrei
Of possible interest.
IMHO, the coolest thing was when Rob Pike told about the tool
for automatically upgrading user source code to their next
That should be quite easy to implement now in D, and once
give much needed room for breaking changes we feel should be
seemed to be extremely satisfied they did it.
Personally, I wouldn't be comfortable trusting such a tool.
find that upgrading a codebase to a newer language version is
one of the
most trivial tasks I ever face in software development - even
It's a cute trick, but not a worthwhile use of development
I very much think the opposite, drawing from many years of
hacking into large codebases. I'm completely with Rob here. On
a large codebase, even the slightest manual or semi-manual
change is painstaking to plan and execute, and almost always
suffers of human errors.
I got convinced a dfix tool would be a strategic component of
D's offering going forward.
I am strongly in favour of a 'dfix' tool. There exist historical
problems with languages, and you really must break them to make
Douglas Crockford was pushing for '~' for string concatenation in
ECMAScript 6, making '+' do only additon. This would have been
very similar to how D handles the two, in an arguably correct
manner, but the commity wouldn't agree to it because it would
force everyone to change their code. So in the end ES6 is full of
features, some useful, most seem nonsensical to me, but it
doesn't really fix any of the issues in ES5, because it's almost
totally backwards compatible so old code still works.
So I think having tools like gofix and deprecation warnings
mitigate this issue massively, and it's especially easier when
you're using an ahead-of-time compiled language like D. So we can
make changes which break code, but just get rid of cruft likely
to cause errors. I can't think of nearly as many examples of
error-prone things in D that I can think of in ES6, though.