Prototype DIP11

Jonathan M Davis jmdavisProg at gmx.com
Sun Aug 14 16:19:29 PDT 2011


On Monday, August 15, 2011 01:12:20 Martin Nowak wrote:
> I've implemented a prototype of the DIP11 draft.
> http://www.wikiservice.at/d/wiki.cgi?LanguageDevel/DIPs/DIP11
> https://github.com/dawgfoto/dmd/tree/DIP11
> 
> -- Restrictions --
>   - It doesn't check for conflicting qualified imports (-Iacme=/path1
> -Iacme.a=/path2)
>   - pragma(importpath, "<import-path>") must come lexically before the
> import
>   - Untested on Windows
> 
> -- Some outcome --
>   - Using '=' in [module.or.package=]<path-or-url> could be slightly
> ambiguous for '-Ihttp://acme.org?format=raw'.
>   - Url syntax collides with import path lists. Currently it is allowed to
> specify -I/path1/import:/path2/import for POSIX. I've deactivated that for
> now.
> 
>     Both can be disambiguated so they are not very severe.
> 
>   - Using 'pragma(lib, "someLib")' in an imported source has no effect, as
> long as the imported module is not compiled.
>   - Overall this is very limited as even the example below will only
> compile up to a linker error.
> 
> -- Testing --
>   - build dmd from DIP11 branch
>   - get download.py: http://codepad.org/XAvSN505
>   - get test.d: http://codepad.org/BILAwzHj
>   - add 'DOWNLOADTOOL= path/to/download.py' to your /etc/dmd.conf
>   - compile: dmd test.d
> 
> -- Brainstorming --
> We need to define a compilation model for the imported files.
> 
> One solution could be to generally change the semantics of importing to
> mean if the
> imported file is a source (*.d) build an object for that module if it is a
> header (*.di) don't
> build an object and leave it to the user to supply binary data.

That's not going to work. That assumes that libraries use .di files, which 
isn't necessarily true. If a library just uses .d files, then that means that 
you're recompiling modules from the library when you don't need to (and 
probably shouldn't be since, I would expect that you'd end up with complaints 
about symbols being defined twice when you link in the library).

- Jonathan M Davis


More information about the Digitalmars-d mailing list