Hallo,
Christian Jaeger wrote:
I really didn't mean to attack you, I simply want to know of solid reasons for creating an LLVM backend.
Sorry if I came out harsh.
I'm an almost 100% linux users for 9 years now (and I have only had the issue of delivering a package to windows users once, which was a program in Visual Basic and actually required bundling of all DLL's to be running stable).
I really wish (seriously!) I didn't had to deal with Windows never again. At home I have a Linux desktop and a Macbook.
So I can't talk for anyone on such a system on what is required. I was replying on the assumption that by using PATH, LD_LIBRARY_PATH (or the Windows equivalents) and the gcc -I and -L options you can move all dependency files around at will, so what difficulty remains would be to find the dependencies (on Linux you could do it by using strace, or by including just the whole toolchain), so I guess it will be the size of the resulting package which makes you question my seriousness. I'm sure it would be worthwhile hearing about numbers or experience in this area.
I was talking indeed about size. The GHC distribution for Windows does exactly what you suggested. But it gets huge, and make downloads painful. Besides, it puts a great burden on the people that have to support and package this. And it introduces lots of other complexities. For instance, I am working in an application for the technical analysis of stocks (although it's stalled because of more urgent things). The good applications of this kind let the user enter their own technical indicators (usually in an ad-hoc scripting language) and let the user run them on the previous stock data to see how good they are. Generating a shared object for each run would quickly degenerate in lots of shared objects in the user hard-disk. I know this is fixable, but it's nevertheless an annoyance.
If you need to package libc, then why wouldn't you need to package it also when using LLVM? (My reasoning being: if libc's interfaces (aka header files) are compatible with the header files you're providing, you don't need to include the libc binary, and if it isn't compatible with what assumptions the packaged-up system has (even if it's based on LLVM), then you'd need to include it anyway.)
With MinGW, you have to link against the supplied libmsvcxx.a to use the Windows C runtime DLL, for instance.
Cheers, -alex http://www.ventonegro.org/