TLBB: The Last Big Breakage

Andrea noneof at yourbiz.com
Mon Mar 17 01:48:35 PDT 2014


On Monday, 17 March 2014 at 05:14:40 UTC, Marco Leise wrote:
> Am Mon, 17 Mar 2014 03:57:10 +0000
> schrieb "Jesse Phillips" <Jesse.K.Phillips+D at gmail.com>:
>
>> On Sunday, 16 March 2014 at 21:15:29 UTC, Martin Nowak wrote:
>> > Please think hard about this. Why does it need to break code?
>> > Can't we have a proper deprecation cycle?
>> > Until now it was always possible to add proper deprecation 
>> > warnings and allow people to transition code at their own 
>> > pace. I'm optimistic a solution can be found here too.
>> 
>> Deprecation is breaking code, it's a good way to to do it, but 
>> you shouldn't kid yourself that it isn't a breaking change.
>
> It certainly is a subjective matter. I usually skim though the
> change log, install the new compiler and cross my fingers.
> Then if I get a few deprecation messages with IDE links to the
> source that's ok for me every two months or so. I just try to
> fix these locations immediately instead of changing the build
> options to include -d.
> Silent breaking changes are a totally different beast.

IMHO we have a bunch of breaking changes already planned for the 
future and it'll be a bit more difficult than that to fix the 
code. Maybe I'm not aware of it and it already exists, but we 
should create a page where deprecated features are listed, the 
reasons behind the deprecation briefly described and small 
examples on how to fix the code are provided. This way fixing the 
code will be much easier. Let's say I get deprecation messages on 
2 of those major breaking changes spread across a medium-size 
project: searching through the forums for the right thread(s) and 
reading through pages of discussion just to get an idea of what 
exactly is broken in my code and then fix it is not realistic 
IMHO. That would definitely scare away a D newcomer trying to 
experiment with the language for a project. For example, not long 
ago I was struggling to find what changed from TDPL as of today. 
In the future it's gonna be even more difficult for a new comer 
to *learn* D, let alone use it in real world projects.

>
> But it certainly depends on time pressure, how much

> infrequently maintained libs you use etc.

I speak for myself here, so I maybe wrong. I'm under the 
impression that a lot of (bindings to) libraries *are* 
infrequently maintained (not all of them of course). This is a 
big problem for D's employment in real world projects, which is 
caused by D's lack of popularity among library developers and I'm 
pretty sure that some of that is due to D's lack of long term 
stability. This is seriously slowing down D's adoption IMO.
In a recent project of mine I'm finding myself forced to go back 
to C++ (as much as I hate it) because of a lacking binding, which 
recently broke because the author introduced a change to the API 
and forgot to implement it in a few places and the shared libs 
precompiled binaries specific for the binding are severely 
outdated so my project doesn't even run. Now, I could submit a 
commit (I probably will) and spend half a day manually compiling 
the libraries, but why should I go through all of that when I can 
just download the latest official shared libs from the 
developer's website with templates for my favorite IDE, plenty of 
example code and the guarantee of a stable and reliable C++ API?
Now, on top of that add the compiler spitting at me deprecation 
messages with me having a vague idea on how to fix them and I'm 
done with D for good.

>
> At the end of the day I see no way for D to evolve "correctly"
> with the man power it has and the demands for both a stable
> target and improvements to so many things from
> final-by-default over "scope" to "shared".
> If we collected all these bits in a list we would see that
> they can't all be fixed in one release and things are still
> going to break quite a few times in the future. TLBB? Not
> quite there yet! ;-)

I agree with that 100%.


More information about the Digitalmars-d mailing list