GC GC GC, to je snad ňáká mantra? v OOP není třeba GC (čas se s ním ale zabít dá no). Jo jinak mám další dojmy z Dčka. Slyšel jsem, že D bylo vytvořeno protože C++ je strašné a má strašnou syntaxi. Když se teď hrabu hloubš v D, C++ je proti tomu ráj. Pro příklad volaní konstruktoru a destruktoru:
C++: pointer->~jménoTřídy(); /* ... */
D: destroy(object) /* Destroy je prosím knihovní funkce ... vnitřně asi používá obj.__dtor() ale fakt nevím, nikde o tom není ani zmínka */
C++: new (memoryChunk) jménoTypu(args);
D: emplace!jménoTypu(memoryChunk, args) /* Opět knihovní funkce která vnitřně používá ňákej obj.__ctor(args) jež je nezdokumentovanej */
Smutné na tom je, že co by měla pokrývat syntaxe jazyka, pokrývá knihovna. A co by měla pokrývat knihovna pokrývá syntaxe (třeba sort u polí). Teda když bych chtěl udělat bootloader s C++, nebude to problém, s D si asi budu muset portovat celou knihovnu (která často dělá to co by měly dělat konstrukty jazyka) a odhalit všechny možné nezdokumentované nechutnosti.
Ved emplace/destroy je tu kvoly tomu aby si nemusel manualne volat konstruktory/destruktory cez __ctor, __dtor...
To ze miesto placement new sa pouzie emplace a miest ~Trieda() sa pouzie destroy je len detail.
Co sa tyka sort-u, ten bude tiez deprecated

.
Co sa tyka phobosu a alokacii, tak je to znamy problem. Momentalne sa caka na alokatory. Ked budu v phobose tak je v plane pouzit interne mallocator alebo nieco podobne. Dokonca su navrhy na atribut @nogc / @noheap ktore zakazu pre funkcie gc alokacie.
GC je v D hlavne kvoly tomu aby sa dalo v @safe kode garantovat memory safty a implementacia Slice-ov by bola bez GC problematicka.