It makes me sick!

Mike Parker via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Jul 27 18:10:03 PDT 2017


On Friday, 28 July 2017 at 00:28:52 UTC, FoxyBrown wrote:

> You are not being very logical.
>
> The zip file as N files in it. No matter what those files are, 
> it should be a closed system. That is, if I insert or add(not 
> replace) M file to the directory structure it should not break 
> D, period!

That's *not* what happened here. Jonathan explained it quite 
well. std.datetime was refactored into a package, its contents 
split into new modules. When you import a module foo, dmd looks 
for:

1. foo.di
2. foo.d
3. foo/package.d

When it finds one, it stops looking. It's not an error for all 
three to exist. Your error came because it found std/datetime.d, 
but you linked to a library that included symbols for 
std/datatetime/package.d. It's not the compiler's responsibility 
to error in that case. It's your responsibility to properly 
install.

>
> Why? Because NO file in the zip should be referencing any file 
> not in the zip unless it is designed to behave that way(e.g., 
> an external lib or whatever).
>
> If an old external program is referencing a file in dmd2 that 
> isn't in the new zip it should err.
>
> Why? Because suppose you have an old program that references 
> some old file in dmd2 dir and you upgrade dmd2 by extracting 
> the zip. The program MAY still work and use broke functionality 
> that will go undetected but be harmful.
>
> Why? Because dmd.exe is reference a file it shouldn't and it 
> should know it shouldn't yet it does so anyways. It really has 
> nothing to do with the file being in the dir but that dmd is 
> being stupid because no one bothered to sanity checks because 
> they are too lazy/think it's irrelevant because it doesn't 
> effect them.

That's unreasonable.

>
> I should be able to put any extra files anywhere in the dmd2 
> dir structure and it should NOT break dmd.

There are numerous applications out there that can break if you 
simply overwrite a directory with a newer version of the app. DMD 
is not alone with this. You should always delete the directory 
first. It's precisely why the compiler does so.




More information about the Digitalmars-d-learn mailing list