some_call(...a_struct, 1, 2) — распаковка полей структуры в аргументы) и vector swizzle initialization (int[<3>] x = { .xy = 3, .z = 5 }).C3 — это эволюция языка C. Идея: как бы выглядел C, если бы не нужна была обратная совместимость. В отличие от Zig и Odin, которые придумывают новый синтаксис, C3 остаётся максимально похожим на C. Если знаешь C — читать код на C3 можно сразу.
Что добавили поверх C
🔘Модули вместо header-файлов
🔘Встроенные слайсы и строки
🔘Дженерики и семантические макросы
🔘Обработка ошибок через Result-подобный механизм
🔘defer, контракты (pre/post conditions), compile-time рефлексия
🔘First-class SIMD-векторы
Главное — полная совместимость с C ABI. Можно вызывать C из C3 и наоборот без обёрток. Не нужно переписывать всё — можно постепенно добавлять C3-код в существующий проект.
Компилятор использует LLVM-бекенд, есть встроенная билд-система. Сейчас версия 0.7.x, план — выпустить 1.0 когда стабилизируется стандартная библиотека.
У языка есть свой сайт, и репо на гитхабе.
@prog_stuff
