March 25, 2008
If I look at the binary created with Borland C++, I can see that it was created with Borland C++. It's written there as a string in the ".exe" file. If I look at a binary made with gcc (on linux, at least) I see strings about libraries, even in a stripped executable.

I wish DMD would include the string DMD and the version number in all executables. One might also consider having the date there, and maybe the used switches.

This would be immensely useful for all those of us who don't have a meticulous secretary, bookkeeping all the files we've ever compiled, and with which version, etc. Also the compilation date tends to get clobbered because files get copied in various stupid ways during their lifetime.

Case in point: I've written programs for some clients, and I may need to tweak them much later. Of course, I could even write in the source code which compiler version is needed, but that tends to be unreliable. And it is quite hard to remember after 3 years which compiler version I had in use at the time.

I could also archive every app source with the pertinent, but that becomes a lot of megabytes pretty quickly.

Considering the size difference of the stripped binaries of

    // this program works both as D and C with no changes
    int main(){
        return 57;

compiled with my (oldish, admittedly) DMD and gcc, I see no reason why not use a couple of extra bytes with some basic info in the binary!!!

$ ls -l c2 d2
-rwxrwxr-x  1 georg georg   2812 Mar 18 16:32 c2
-rwxrwxr-x  1 georg georg 149936 Mar 18 16:33 d2

It might even work as a kind of advertising. ;-)