dmd 1.070 and 2.055 release
Lars T. Kyllingstad
public at kyllingen.NOSPAMnet
Sat Sep 10 09:56:59 PDT 2011
On Thu, 08 Sep 2011 11:49:55 -0700, Jonathan M Davis wrote:
> On Thursday, September 08, 2011 17:52:37 Andrej Mitrovic wrote:
>> Ok cool, my DWin project successfully compiles. The WinAPI bindings are
>> missing extern(Windows) specifiers for its function aliases and 2.055
>> seems to enforce this now, so that api will have to be updated. The
>> only thing that's bothering me is the notices, there's just too many of
>> them.
>>
>> For example this:
>>
>> import std.stdio;
>> import std.path;
>>
>> void main()
>> {
>> writeln(curdir.rel2abs);
>> }
>>
>> turns into this:
>> Notice: As of Phobos 2.055, std.path.rel2abs has been scheduled for
>> deprecation in February 2012. Please use absolutePath instead. Notice:
>> As of Phobos 2.055, std.path.isabs has been scheduled for deprecation
>> in February 2012. Please use isAbsolute instead. Notice: As of Phobos
>> 2.055, std.path.getDrive has been scheduled for deprecation in February
>> 2012. Please use driveName instead. Notice: As of Phobos 2.055,
>> std.path.join has been scheduled for deprecation in February 2012.
>> Please use buildPath instead. Notice: As of Phobos 2.055,
>> std.path.rel2abs has been scheduled for deprecation in February 2012.
>> Please use absolutePath instead. Notice: As of Phobos 2.055,
>> std.path.isabs has been scheduled for deprecation in February 2012.
>> Please use isAbsolute instead. Notice: As of Phobos 2.055,
>> std.path.getDrive has been scheduled for deprecation in February 2012.
>> Please use driveName instead. Notice: As of Phobos 2.055, std.path.join
>> has been scheduled for deprecation in February 2012. Please use
>> buildPath instead.
>>
>> That is just unacceptable imho.
>
> At present, the only way to get rid of them is to fix your code so that
> it doesn't use the functions which are scheduled for deprecation.
> Improvements to the deprecated keyword have been in discussion to
> improve the situation. e.g.
>
> https://github.com/D-Programming-Language/dmd/pull/345
What we could do in the meantime is to introduce the following at the top
of the modules that uses the "soft deprecation" mechanism:
version (NoSoftDeprecation) { } else version = SoftDeprecation;
Then, we could write the deprecation messages like this:
version(SoftDeprecation) pragma(msg, "Notice: As of ...");
and people could silence the compiler with -version=NoSoftDeprecation.
Even better, we could define a mixin somewhere that includes the above,
as well as a template containing a standardised deprecation message.
That way, each module only needs to have something like this at the top:
mixin (softDeprecationStuff!"std.path");
-Lars
More information about the Digitalmars-d-announce
mailing list