module std.stream is deprecated - Will be removed by phobos version 2.070

Jonathan M Davis via Digitalmars-d digitalmars-d at puremagic.com
Fri Sep 11 16:06:12 PDT 2015


On Friday, 11 September 2015 at 20:29:56 UTC, Vladimir Panteleev 
wrote:
> https://github.com/D-Programming-Language/phobos/pull/3631
>
> Apparently it was decided at DConf 2015 to remove std.stream 
> and friends from Phobos. But these modules have been left 
> untouched (i.e. they're "stable") for a long time, and there's 
> a lot of D code using them. This decision seems to go in an 
> opposite direction to other recent decisions (i.e. that we stop 
> breaking code). Is everyone (incl. Walter AND Andrei) on board 
> with this?

Walter and Andrei publicly agreed at dconf that it should be 
removed. As I understand it, it was removed from the 
documentation with 2.068 (but not yet deprecated), and now it's 
been deprecated. Now, that being said, I think 2.070 is too soon 
to remove it, because at the rate of releases that Martin is 
targeting, that's maybe 6 months as deprecated, which makes it 
far too easy IMHO for code to go from working to not compiling 
without any warnings in between for someone who's not updating 
their compiler frequently. Normally, the deprecation cycle has 
been approximately one year as deprecated but documented and 
approximately one year as deprecated but undocumented (and then 
the symbol would be removed), so code would continue to work 
as-is for about 2 years once something has been deprecated, which 
is about 4x longer than what std.stream is currently marked for. 
Now, granted, std.stream has essentially been marked as scheduled 
for deprecation for some time now (embarassingly long really), so 
in theory, it's not heavily used, but it's also pretty clear 
based on newsgroup posts and SO and whatnot that it _is_ being 
used on some level in spite of the fact that it's documentation 
says that it's going away.

So, I intend to open a PR to fix the targeted removal time 
(probably this evening) so that it's not quite so quick, but 
it'll still be a year at most, I think, given that it's been 
marked as scheduled for deprecation for so long and is no longer 
in the docs.

After that, as Martin points out, it should go in undead where 
folks can continue to use it if they really want to. But I don't 
think that code should simply stop compiling within a sixth month 
period. I'm all for deprecating and removing stuff that we want 
to get rid of and really don't like keeping it around long term, 
but we need a deprecation cycle that gives folks time to fix 
their code, and sadly, a note in the documentation really doesn't 
seem to be enough of a warning.

- Jonathan M Davis


More information about the Digitalmars-d mailing list