On Monday, 18 March 2013 at 13:50:29 UTC, Jens Mueller wrote:

I assumed OS X is Posix compliant. I never checked that though. Thanks
for the pointer.

No problem, OSX seems mostly Posix compliant. The shared libraries are suffixed with ".dylib", though, instead of ".so". There may be other differences you need to deal with, but that's the only one I ran into in my minimalistic approach.

No problem. I can add this. It is easy to do. I didn't do it because I wasn't sure which package manager will be the "official" one. This
hasn't been settled as far as I know.

You're right, of course, but at present time dub has a package registry and is easy to use, so I went with that. If, however, there is going to be an official package manager at some point in the future I'll change to that, then.

- Moreover, ddl doesn't seem to have support for loading from a
specific directory (such as "lib"), or at least I can't find it

I don't know how this is done on Windows. On Linux you just set the
LD_LIBRARY_PATH.

My problem with that is that it's a) not encapsulated inside the program and b) OS dependent.

Probably. There are very few users for such a use case.
But if you would use LLVM's plain C interface in D users who have used the API in C will feel home. I mean why expose the LLVM C API as an
addition. It certainly does no harm.

The C API will keep being exposed, of course; all I meant was that splitting them off might not be the best idea when they mostly exist only to be used by the D API and the C API should not be used unless you really want/have to.

Usually, I use dynamic linking. I believe you would do the same if
optlink worked.

Maybe if optlink had worked with COFF when I started using D (back in D1 times), but right now, even if optlink would start working on win32 with COFF I'd still go with runtime loading as often as possible (Not counting D libraries with D classes in them, of course, only C API libraries). Mostly because this way you can start your programs with "rdmd program.d". No need to care at all about libraries: Getting a working compilation should imho be as simple as invoking the compiler with the source file that contains your main (or the root file of the library to create). Extra argument are necessary for specific configuration, but compiling should work with the least amount of extra argument as possible.

The process is usually pretty simple. But the documentation is lacking. There are several pieces floating around. I can try writing one document
and try to push it to the official web site.

That'd be great, thank you very much.

Do as you like it. I do not think this is a bad approach.

I'll to that, then. I'm currently working on the D API, but I'll try to get the copied deimos compatible project started in the next couple of days.

- Moritz

Reply via email to