It really looks sound to me.
---
module myfile;
pragma(imppath, "dep=www.dpan.org/dep");
import dep.a;
---
remote file
---
module dep.a;
// link directives
pragma(libpath, "dep=www.dpan.org/dep");
pragma(lib, "dep");
// or alternatively some new pragma like this to cause linking the
imported package
pragma(build, "dep")
// additional dependency
pragma(imppatch, "dep2=www.dpan.org/dep2");
---
Versioning can be easily resolved by using urls like
www.dpan.org/dep?version=0.45 or www.dpan.org/dep-greaterthan-0.45.
Pro:
- scales from local dependencies to VPN sharing to package websites to
even dynamically generated source code
- simple implementation compilerwise
Con:
- doesn't help with mixed source builds except for prebuild libraries
Some thoughts:
- allowing packages/libs to be packed in zip files would be nice as it's
getting closer to single file packages
- remote locations would need an accompanying hash file per source or a
checksum index to allow local caching
- sorting out some security issues would be nice but I've never seen
anything in other package managers
On Thu, 11 Aug 2011 09:49:56 +0200, Jacob Carlborg <d...@me.com> wrote:
On 2011-08-11 09:41, Jonas Drewsen wrote:
On 11/08/11 09.07, Jacob Carlborg wrote:
<snip>
Yes I've noticed that. Seems very promising.
What I do like about DIP11 is how seamless it would work. You just have
to compile and stuff works.
/Jonas
I think that DIP11 is too limited, for example, it doesn't deal with
versions. Orbit combined with a build tool will be seamless as well.
RDMD is a great tool but as soon as you need to add compiler flags or
compile a library you need either some kind of script or a build tool.
And in that case you can just go with the built tool and have it work on
all platforms.