Compilation strategy

Paulo Pinto pjmlp at progtools.org
Mon Dec 17 00:12:41 PST 2012


On Monday, 17 December 2012 at 08:02:12 UTC, Adam Wilson wrote:
> On Sun, 16 Dec 2012 23:08:49 -0800, Jonathan M Davis 
> <jmdavisProg at gmx.com> wrote:
>
>> On Sunday, December 16, 2012 22:58:26 Walter Bright wrote:
>>> On 12/16/2012 10:27 PM, Jonathan M Davis wrote:
>>> > If the entire .d file is there in binary form, then I don't 
>>> > see why it
>>> > wouldn't work. .di files fail because they strip out the
>>> implementation.
>>> > If a binary format were used,
>>>
>>> It's all about what is in the file, not whether it is text or 
>>> binary.
>>
>> The concept of .di files and their ilk is fundamentally broken 
>> precisely
>> because they're trying to strip what's in the file. That's 
>> what causes the
>> problems.
>>
>>> > then we should be able to get away with keeping the
>>> > implementation there, because then it's obfuscated rather 
>>> > than for
>>> sitting
>>> > there for all to see, which is why corporations and the 
>>> > like insist on
>>> > distributing only headers. Even with an object file, the 
>>> > best that
>>> you get
>>> > is obfuscation, because it can always be reverse 
>>> > engineered, so it
>>> seems
>>> > to me that what needs to be avoided is providing text. As 
>>> > long as we
>>> use
>>> > text, we're forced to cut out the implementation and end up 
>>> > crippling
>>> any
>>> > code that uses that module, since it can't inline it or use 
>>> > it in
>>> CTFE.
>>> > In binary format, it's obfuscated, so the entire 
>>> > implementation can be
>>> > there, allowing inlining and CTFE to work.
>>>
>>> This method of obfuscation simply will not hide things from 
>>> someone with
>>> even modest technical ability, because *all* the source 
>>> information is
>>> *necessarily* there in the file.
>>>
>>> Object files are resistant to reverse engineering because 
>>> most of the
>>> information is gone.
>>
>> True, but they can stll be reverse engineered, and if the 
>> problem is that
>> companies don't want 3rd parties looking at their code, then a 
>> binary format
>> has obfuscated it and possibly solved that problem. Object 
>> files do make it
>> harder, but they can still be reverse engineered, so it really 
>> becomes a
>> question of what it takes to satisfy the folks who think that 
>> not giving the
>> whole information in a .d or .cpp file somehow protects their 
>> code (since it
>> doesn't really). And if a binary format can do that (as it 
>> seems to in Java
>> land), then that seems like a far better solution, because 
>> then we can leave
>> all of the information in there that inlining and CTFE need in 
>> order to do
>> their jobs. With .di files, we'll never get that.
>>
>> - Jonathan M Davis
>
> Putting it all in binary and calling it good isn't really a 
> solution. Like it or not, the C/C++ header file provides what 
> larger corporations with IP to protect want. Difficult to 
> reverse (not impossible, but they know that and are willing to 
> accept it) with easy to access plaintext headers so the 
> legitimately licensed programmer can work with the product that 
> is rightfully his without stealing it. Not to mention that if 
> extracting binary was easy we'd all be doing it, and if we made 
> a tool to do it, then we'd be back to it being no different 
> than plaintext DI's which is I think what Walter was driving at.
>
> With respect to those who hold one ideology above others, 
> trying to impose those ideals on another is a great way to 
> ensure animosity. What a business does with their code is 
> entirely up to them, and I would guess that even Richard 
> Stallman himself would take issue with trying to impose an 
> ideology on another person. What does that mean for D 
> practically? Using a close-to-home example, imagine if Remedy 
> decided that shipping their ENTIRE codebase in .DI files with 
> the product would cause them to give away some new rendering 
> trick that they came up with that nobody else had. And they 
> decided that this was unacceptable. What would they most likely 
> do? Rewrite the project in C++ and tell the D community to 
> kindly pound sand.
>
> A license agreement is not enough to stop a thief. And once the 
> new trick makes it into the wild, as long as a competitor can 
> honestly say they had no idea how they got it (and they 
> probably really don't, as they saw it on a legitimate game 
> development website) the hands of the legal system are tied.
>
> I know there are those here who think that D can thrive without 
> the support of the corporates. But realistically, they are the 
> ones who dictate the languages most coders use and therefore 
> learn. THAT's what makes the Remedy thing so important. By 
> showing other corps that D is safe, reliable, and understands 
> THEIR needs, they will begin investing in training there 
> people, and so on. This pushes more people to learn D. Is your 
> goal the proliferation of D or the proliferation of ideology?
>
> And this idea that somehow because we lose CTFE, Inlining and 
> Auto support we should never allow DI's to be anything other 
> then full source distro's is borderline ridiculous. C++ 
> programmers are under ZERO illusions that inlining was ever 
> going to work when using third party libraries, so the idea 
> that some things won't work is beyond routine. They won't even 
> notice, much less care. I'll put it to you this way, when I was 
> considering D for our projects, I asked what features I would 
> lose in redacted DI files. My entire response to the list was 
> "That's it? Sweet! This thing still beats C++ six ways from 
> Sunday."
>
> Then I learned that the DI files weren't redacted. Now I have a 
> pull for it.


And as I referred in another thread, it is as not other languages 
don't support this, except maybe for CTFE. But even then it is 
mostly an implementation issue,
I think.

--
Paulo


More information about the Digitalmars-d mailing list