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.



Reply via email to