Yigal Chripun wrote:
grauzone wrote:

Just because it doesn't work on your shitty (SCNR) platform, it doesn't mean it's wrong. On Unix, there's a single ABI for C, and linking Just Works (TM).

do YOU want D to succeed?
that shitty platform is 90% of the market.

But I kind of agree. The most useful thing about compiling each module to an object file is to enable separate compilation. But this is useless: it doesn't work because of bugs, it doesn't "scale" (because a single module is likely to have way too many transitive dependencies).

I'm not suggesting coping Java's model letter for letter or using a VM either, but rather using a better representation.

Ew, that's even worse. Java's model is right out retarded.

I'd just compile a D project to a single (classic) object file. That would preserve C compatibility. Because the compiler knows _all_ D modules at compilation, we could enable some spiffy stuff, like virtual template functions or inter-procedural optimization.

Instead of compiling per module, it should be more course grained like on the package/project level. in C# you can compile a single file and get a "module" file (IIRC), but that's a rare thing. usually you work with assemblies.

oh, I forgot my last point:
for C link-time compatibility you need to be able to _read_ C object files and link them to your executable. you gain little from the ability to _write_ object files. if you want to do a reverse integration (use D code in your C project) you can and IMO should have created a library anyway instead of using object files and the compiler should allow this as a separate option via a flag, e.g. --make-so or whatever

Reply via email to