DMD 1.005 release

Walter Bright newshound at digitalmars.com
Wed Feb 7 19:56:40 PST 2007


BCS wrote:
> Walter Bright wrote:
>>
>> Yes, in the end, I think that's a more maintainable solution. You'll 
>> find your core modules will become much more portable, and you 
>> shouldn't need to edit (or even understand) them at all when porting 
>> to a new platform.
>>
>> If your job is to port the gc to a new XYZ platform, would you find it 
>> easier to edit the long and complicated gcx.d, or just copy gclinux.d 
>> to gcXYZ.d and restrict your work to just figuring out how to port a 
>> few lines of code with (hopefully) well-defined behavior?
>>
> 
> And there in lies the primary issue I have with this approach. Say I do 
> the above and then a bug is found in the system independent parts of the 
> module, now I have to extract the fix from a fixed version and reapply 
> it to my version.
> 
> I am a strong proponent of the theory that you should never have two 
> peaces of /Identical/ code (as in does the exact same thing). It's kinda 
> sorta the Extreme Programming model[*] but that's not where I'm coming 
> from.

If there's a lot of identical code in this approach, then perhaps the 
abstraction layer is drawn in the wrong place. There isn't much in the 
gc version api implementations.

> An example, I am working on a D lexer, it needs to work on 6 type of 
> files ASCII and UTF-8/16BE/16LE/32BE/32LE. also to make things easier 
> downstream, I have it convert all EOLs to \n. Well rather than write 6 
> scanners, I wrote one that was templated on two types (I think) results 
> in correct conversions. It is about 30 lines long and the sum total 
> difference between the functions is the types on about about 3 lines. 
> Now if at some point I find a bug, I fix it in one place and I'm done.
> 
> The same sort of thing can apply to other cases.

Using templates is a great way to write generic code, but it's a 
different approach than using versions.



More information about the Digitalmars-d-announce mailing list