RFC in Comparison between Rust, D and Go

Walter Bright via Digitalmars-d digitalmars-d at puremagic.com
Sat Nov 14 00:28:09 PST 2015


On 11/14/2015 12:06 AM, Ola Fosheim Grøstad wrote:
> I'm not sure if it reasonable to set aside the preprocessor,

If your new language doesn't have the C preprocessor in it, then you must set it 
aside. If it does have a C preprocessor in it, then it really isn't a new 
language at all, it's just a C permutation.


> but it depends on what you mean by interop:
>
> 1. portability
>
> - A language like Nim obviously has a better portability future since that is
> the one of the primary goal of having portable C source code.

That's all very fine until the that C compiler evaluates expressions in a 
different way than the one you debugged it with, and your language fails on your 
customer's machine with your customer's C compiler, and fails in weird ways.

You can't just dismiss the points I made and say "It's C, so it's portable." It 
isn't. If you're anxious to learn the hard way, feel free :-) It's one thing to 
read the C standard and pontificate about it, it's quite another to actually be 
in the trenches and deal with it.

BTW, although C compilers exist for all kinds of weird machines, the weirder the 
machine is, the worse (i.e. more limited and buggier) the C compiler is for it 
(as a general rule).

Good luck porting your language to a C compiler that has 10 bit bytes in it, or 
one with 32 bit bytes. Yes, those compilers exist. Yes, those are C standard 
conforming variations. Nope, none of your "portable" C code will work on it.


> Compile time does not have to be a big issue,

It always is once your project exceeds trivial size. Remember, my experience is 
a factor of 4x slower. And you cannot fix it.



More information about the Digitalmars-d mailing list