module hijacking

Leandro Lucarella llucax at gmail.com
Mon Nov 2 15:11:42 PST 2009


Steven Schveighoffer, el  2 de noviembre a las 10:59 me escribiste:
> >The opposite of hijacking would be if any duplicates found would
> >be an error.
> 
> No, this is also a form of hijacking -- namespace hijacking.
> 
> example:
> 
> I write an application, defining a small internal library foo.  I
> put a module bar in the foo directory, and import foo.bar in my main
> program.
> 
> Now, someone compiles it on his system and happens to have a
> globally installed foo library (completely unrelated to my
> app-specific foo library) with a module bar.  The compiler sees both
> and throws an error?  Now I have to deal with the possibility that
> any library can kill the ability to compile my app by naming its
> directories the same?

Maybe this can be addressed by adding relative imports like in Python 2.5+

import my_foo = .foo; // look for dirname(__FILE__)/foo.d, error if not found
import ..foo: bar; // dirname(__FILE__)/../foo.d, error if not found
import foo; // regular search path

Relative imports are always aliased or subject to importing single symbols
because .foo is not a valid symbol name. I think import ...foo; could be
allowed by making it a shortcut to import foo = ...foo;

See http://www.python.org/dev/peps/pep-0328/ for the complete proposal.
The Python community already had to deal with this (maybe for different
reasons though), maybe we can learn something from it.

-- 
Leandro Lucarella (AKA luca)                     http://llucax.com.ar/
----------------------------------------------------------------------
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145  104C 949E BFB6 5F5A 8D05)
----------------------------------------------------------------------
Yo soy peperino el que siempre pone el vino, yo soy aquel que come los
huevos con tocino.
	-- Peperino Pómoro



More information about the Digitalmars-d mailing list