Hello !

I'll start here a place to blame the D language with the intent of register here the dark sides of the language and it's libraries with the hope that it will drive efforts to fix then.

First a bit of my experience with the D language, I hear about it some years ago and it was an interesting language but it gave me the impression of immaturity like a bit more than a toy language, most recently I gave it another look and it seems that it progressed a lot since then.

I started searching the net for interesting opensource projects using D language to test then and compare with C/C++ in terms of performance.

Here are my folder with what I found interesting:

ae            dmd-script            harmonia-dad
arsd DMDScript harmonia-dad.tgz tango-trunk bcd.gen dmd-script-1 HarmoniaDemo Tiny-Redis
              dmd-script-2          Higgs
bindings dranges languagemachine-0.2.5 ubjsond Croc dstep ldc2-0.13.0-linux-x86_64 userman
ctags-d       D-templates-tutorial  libasync                  uv.d
d2sqlite3 d-tui LuaD vibe.d decimal d-tut-master vibed.org
deimos        dwt                   minwin
dmd1 monodHello vibelog dmd2 GDC vibenotes
dmd-c++       goldie                Pegged
dmd-newmagic  harmonia

Then I started compiling then to test, most of then do not compile with the latest dmd compiler, I tried to fix then and on some of then after fixing several things I end up finding bugs on DMD compiler that I submit and some of then god fixed but then one dark side of the D language came to light:

There is no backport/bug fix for the stable releases like gcc or other well know software, gcc has at least the latest 3 stable version maintained, when a bug is found it's fixed on all of the maintained versions that suffer from it. The D language should take note/learn from gcc here. Another interesting example is Freepascal when a new compiler version is released they also release a guide that highlight the major changes and how old code will be affected by the changes and examples on how to change the code to work with the new compiler version. I would like to see the dub packages to declare the minimal dmd compiler version that they guarantee it'll work, and before any new release of dmd use the whole dub packages as a test bed and for every project that do not compile write a how to on how to convert the code to compile or somehow modify the compiler to recognize old constructions and through warnings or other way compile then.

It's so sad to see interesting projects using the D language abandoned tired of code breakage with any dmd compiler evolution.

Let's talk about libraries now, there is some silly things like associative array not having a "clear/lenght=0" way to reset it, and people sugest create templates that does:

foreach(string key; aa.keys) aa.remove(key);

If we are on a memory pressure to liberate memory we need to allocate more memory for big associative arrays that's insane and generate more garbage to be collected (this is a small/silly insane dark side).

Now let's see std.str I expect some functions that are widely available on other languages to be present there but some of then are std.algorithm, std.array, std.container, std.format and even on std.str it's crazy for a new developer to find things on phobos.

And then the massive/crazy attributes/properties and its combinations that makes even harder to understand why some code do not compile and give error messages miles away from our actual offending code (thanks for templates everywhere).

Well I'll update time to time this post and encourage others to do the same hopping that this will drive positive changes to the D language.

Cheers !

Reply via email to