Не всё так гладко, как в теории. Тот же "итеративный подход" легко превращается в лишнюю проработку временных вещей, вагон переделок и вязкость, особенно если продолжать делать на прототипе.
Как делаешь на С объёмную очистку при череде "if(err){ ... printerr; return; }", goto или вспомогательные функции? Например, при чтении файла энного формата.
Для себя открыл Грааль в виде С++ с отказом от ооп и плюсовых стд инклюдов, но с упрощающими монотонность особенностями вроде raii и одноуровневых шаблонов (вместо void* ptr, size_t size или больших дефайнов). Плюс, тот же GLM подтянуть, и средства вроде подобия defer удобно делать, struct без вечных приписок или объявления через typedef, всякие using и namespace приятны.
Единственно - осторожная борьба с лишними эффектами средств C++. Лёгким движением руки тип становится сложным и его нельзя даже memcpy() в аналоге std::vector (потому статик ассерт на тривиальность типа, ибо долой поэлементное копирование). Если возвращать тип с деструктором (а не записывать в ссылку), или упирать на копи-мув семантику, и так далее : )
Надо было ставить OpenBSD или Слаку 😎
Это поддержка юнита или для персонажа? Ни разу такой не видел.
Только фрибетов не хватает ✡️