Compilation strategy

Adam Wilson flyboynw at gmail.com
Mon Dec 17 20:22:30 PST 2012


On Mon, 17 Dec 2012 00:19:51 -0800, deadalnix <deadalnix at gmail.com> wrote:

> On Monday, 17 December 2012 at 08:02:12 UTC, Adam Wilson wrote:
>> 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.
>>
>
> But that what I say !
>
> I can't stop myself laughing at people that may think any business can  
> be based on java, PHP or C#. That is a mere dream ! Such technology will  
> simply never get used in companies, because bytecode can be decoded !

I use C# everyday at my job. We have expensive obfuscater's to protect the  
bytecode. Even then it isn't perfect. But it's good enough. With the  
metadata model of .NET this isn't a problem for public API's, just tell  
the obfuscater to ignore everything marked 'public'. However, with DI's  
being a copy of the plaintext source and NOT bytecode you run the risk of  
changing the meaning of program in unintended ways. You see, in CIL (.NET  
bytecode) there are no auto's (var's) or templates (generics) the C#  
compiler does the work of figuring out what the auto type really should be  
or what the templates really are is BEFORE it writes out the IL, so later  
when the obfuscater does its job, there are no templates or auto's for it  
to deal with.

In D, we don't have this option, you either have plaintext, or you have  
binary code, there is no intermediate step like CIL. Hence we can't use  
the obfuscation approach.

-- 
Adam Wilson
IRC: LightBender
Project Coordinator
The Horizon Project
http://www.thehorizonproject.org/


More information about the Digitalmars-d mailing list