Все что нужно есть так или иначе, на крайняк можно прикрутить Cишную-либу.Я бы не назвал это граблями, скорее неудобства и отсутсвия опыта.
В реальной системе у нас используется как сетевые демоны, в этом плане стандартная библиотека неудобна, std.socket построен на эксепшенах доступен только select из-за кроссплатформенности, так как у нас на серваках линукс, кросплатформенности не требуется, в качестве сетевого стека используется небольшая обертка над epoll
Для конкурентности и распаралеливания std.(concurency | parallelism) немного не удобны
нужно помнить если распаралеленый блок, не забывать о переменных за пределами блока (распаралеленые блоки - отдельные потоки) thread local накладывает дополнительные неудобства с передачей данных между потоками можно конечно юзать префикс gshared - что-бы глобально, как в сишечке - но очень не советуется. Локи опять же вручную, правда мютекс подобных локов есть блок
synchronized (someMutex)
{
...
}
Так же немного не хватает в стандартной библиотеке нормальной работы с Posix-сигналами например как Go
Стандартная некоторая часть стандартной либы не реализована нативно, часто тянет за собой
libcurl, libssl и т.д. что пичалит лишними зависимостями (перфекционизм =)
> Вот vibe.d как-то не оценил, роутер был какой-то совершенно убогий
Ранее для веба использовался питонячий Werkzeug/Flask, и после перехода на vibe.d вначале был запилен собственный роутер, а в более поздних проектах привык к встроеному в vibe.d свои задачи вбольшинстве случаев он решает (нет роутинга для поддоменов)
А вот вот с шаблонизатором (diet) я так и не смирился, не хватает наследования - написал свой jinja2 подобный, шаблоны компилятся вместе с проеком =)