Compilation strategy
foobar
foo at bar.com
Tue Dec 18 03:43:17 PST 2012
On Monday, 17 December 2012 at 22:24:00 UTC, Walter Bright wrote:
> On 12/17/2012 2:08 PM, Dmitry Olshansky wrote:
>> I really loved the way Turbo Pascal units were made. I wish D
>> go the same
>> route. Object files would then be looked at as minimal and
>> stupid variation of
>> module where symbols are identified by mangling (not plain
>> meta data as (would
>> be) in module) and no source for templates is emitted.
>> +1
>
> I'll bite. How is this superior to D's system? I have never
> used TP.
>
>
>> *Semantic info on interdependency of symbols in a source file
>> is destroyed right
>> before the linker and thus each .obj file is included as a
>> whole or not at all.
>> Thus all C run-times I've seen _sidestep_ this by writing each
>> function in its
>> own file(!). Even this alone should have been a clear
>> indication.
>
> This is done using COMDATs in C++ and D today.
Honest question - If D already has all the semantic info in
COMDAT sections, why do we still require additional auxiliary
files? Surely, a single binary library (lib/so) should be enough
to encapsulate a library without the need to re-parse the source
files or additional header files?
You yourself seem to agree that a single zip file is superior to
what we currently have and as an aside the entire Java community
agrees with use - Java Jar/War/etc formats are all renamed zip
archives.
Regarding the obfuscation and portability issues - the zip file
can contain whatever we want. This means it should be possible to
tailor the contents to support different use-cases:
* provide fat-libraries as in OSX - internally store multiple
binaries for different architectures, those binary objects are
very hard to decompile back to source code thus answering the
obfuscation need.
* provide a byte-code solution to support the portability case.
e.g Java byte-code or Google's pNaCL solution that relies on LLVM
bit-code.
Also, there are different work-flows that can be implemented -
Java uses JIT to gain efficiency vs. .NET that supports
install-time AOT compilation. It basically stores the native
executable in a special cache.
More information about the Digitalmars-d
mailing list