module std.stream is deprecated - Will be removed by phobos version 2.070
Jonathan M Davis via Digitalmars-d
digitalmars-d at puremagic.com
Sat Sep 12 14:59:55 PDT 2015
On Saturday, 12 September 2015 at 14:24:21 UTC, Jacob Carlborg
wrote:
> The problem with adding notifications in the documentation is
> that if a user already has implemented code that uses the
> particular model and have no need to change the code. Or the
> user already is familiar with the module there's no reason to
> read the documentation to see the notification or to notice the
> documentation is gone.
>
> It only (hopefully) prevents new users to use the module.
>
> Would it be better to add the deprecation immediately and let
> be deprecated for a longer period? Or use something like
> 'pragam(msg, "WARNING: deprecated ...")' if someone is using
> the "-de" flag.
std.stream got a note in its documentation (something like 3
years ago) rather than being deprecated, because we didn't have a
replacement yet. We just knew that we definitely wanted to
replace it. But we have yet to actually come up with a
replacement, and when it was brought up at dconf that the note
had been on std.stream for years and yet the module was still
there, Andrei said that we should just kill it and that maybe
this was a sign that streams weren't all that important. So,
we're now actually deprecating it even though we don't have a
replacement yet.
It used to be that marking something as deprecated immediately
made that code fail to compile, which is why we used to mark
stuff as "scheduled for deprecation" in its documentation for a
while before actually deprecating it, but deprecated was fixed a
while ago so that it doesn't result in a compilation error by
default (hence the -de flag that you mentioned), and when that
change was made, we stopped marking stuff as "scheduled for
deprecation."
Normally, what we've been doing for a while now is to just
immediately deprecate a symbol (or module) and then wait about a
year before removing it from the docs, and then wait about
another year before removing it from the code. So, the result is
that existing code has about two years to be changed before it'll
stop compiling due to the symbol going away. It's just that
anyone compiling it will be bugged by deprecation messages unless
they use a flag to shut them off (which they shouldn't, because
then they'll miss all deprecation messages, but folks are free to
shoot themselves in the foot if they really want to). So, at this
point, there really isn't much point in general in saying
anything in the documentation before deprecating a symbol, and we
haven't been doing that.
The one exception that's come up is that deprecating a symbol and
introducing its replacement in the same release causes problems
for folks who need their code to build with both the current
release and master (as is the case with Vladimir). So, in a few
cases, we've marked a symbol as scheduled for deprecation when we
add its replacement and then have deprecated it in the next
release and continued the deprecation cycle as normal. But most
of the time, we've just gone straight to deprecated, and we
aren't doing a lot of deprecating these days, so it's nowhere
near the issue it was when we were doing mass renamings and
whatnot several years ago.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list