Review of Jose Armando Garcia Sancio's std.log

Robert Jacques sandford at jhu.edu
Mon Mar 5 19:11:17 PST 2012


On Mon, 05 Mar 2012 19:22:05 -0600, so <so at so.so> wrote:
> On Monday, 5 March 2012 at 23:51:29 UTC, Steven Schveighoffer
> wrote:
>> On Mon, 05 Mar 2012 18:30:03 -0500, David Nadlinger
>> <see at klickverbot.at> wrote:
>>
>>> On Monday, 5 March 2012 at 21:55:08 UTC, Steven Schveighoffer
>>> wrote:
>>>> The log aliases use names that are too common.  I think
>>>> log.info is a better symbol for logging than just 'info',
>>>> which could be a symbol in a myriad of places.  Given that
>>>> D's symbol lookup rules allow shadowing of global symbols,
>>>> this does not work out very well.
>>>
>>> Originally, the code used log!info and so on, but it was
>>> changed to the current design right after review begin, the
>>> rationale being that you could always use »import log =
>>> std.log« if you want the extra namespace.
>>
>> That doesn't help.  Software isn't static.
>>
>> import std.log;
>> import other; // defines B
>>
>> class A : B
>> {
>>    void foo()
>>    {
>>       info("some info message"); // error! int isn't a function!
>>    }
>> }
>>
>> other.d:
>>
>> class B
>> {
>>    int info; // added later
>> }
>
> That is not a counter-argument to something related to this
> library but everything that lies in global namespace.
> At its first state both severity levels and the "log" was in
> global namespace. Now only severity levels.
>
> You are also overlooking one crucial fact that this library will
> be part of phobos, standard library. Which requires everyone to
> adopt.

Please don't forget that you are _submitting_ a library into Phobos and the D ecosystem at large. Yes, new code can be expected to avoid these names, but all existing code has to be retrofitted and fixed.


More information about the Digitalmars-d mailing list