4 октября состоялся выпуск 0.7.6 кроссплатформенного компилятора и стандартной библиотеки языка программирования C3.
C3 – это эволюция, а не революция: язык, похожий на C, для программистов, которые любят C.
C3 – это язык программирования, основанный на синтаксисе и семантике языка C, с целью его развития при сохранении привычности для программистов C.
Благодаря полной ABI-совместимости с C, можно без труда смешивать C и C3 в одном проекте. В качестве демонстрации, vkQuake был скомпилирован с небольшой частью кода, преобразованной в C3 и скомпилированной с помощью компилятора c3c.
Компилятор написан на языке C с использованием фреймворка LLVM (поддерживаются версии 17-22) и распространяется по лицензии GNU LGPL.
Стандартная библиотека распространяется по лицензии MIT.
Основные изменения:
- Добавлена compile-time функция
lengthof()
. - Добавлена поддержка документирующих комментариев к отдельным членам структур, определениям ошибок и значениям перечислений.
- В
$defined
теперь можно использовать$alignof
,$offsetof
и$nameof
. - Вывод общих параметров lhs -> rhs, например
List{int} x = list::NOHEAP
. - Объединение generic- и обычных пространств имён модулей.
env::PROJECT_VERSION
теперь возвращает версию вproject.json
.- Теперь работает сравнение слайсов и массивов пользовательских типов, реализующих оператор
==
. - Добавлены опции оптимизации
loop-vectorize
,slp-vectorize
,unroll-loops
иmerge-functions
. - Добавлен вывод времени выполнения
$exec
при использовании опции-vv
. - Добавлен оператор
+++=
. - Другие исправления ошибок и улучшения стандартной библиотеки.