LINUX.ORG.RU

c3c 0.7.6

 c3, , , ,


1

5

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.
  • Добавлен оператор +++=.
  • Другие исправления ошибок и улучшения стандартной библиотеки.

>>> Подробности на GitHub

★★★★★

Проверено: Dimez ()

Омойголова!! Да скокаж можна-та!...

gns ★★★★★
()

написан на языке C

То есть bootstrap пока не осилили.

Добавлен оператор +++=

И как мы без этого раньше жили?!

Где-нибудь описано на кой хрен нужен этот гибрид ежа с ужом?

zabbal ★★★★★
()
Ответ на: комментарий от splinter

Это c23, что ли?
c3c не поддерживает компиляцию сишных исходников.

Ответ на вопрос о stdbool.h отменяется.

dataman ★★★★★
() автор топика
Ответ на: комментарий от dataman

4 октября состоялся выпуск 0.7.6 кроссплатформенного компилятора и стандартной библиотеки языка программирования C3.

Ты по своей ссылке-то ходил? До конца страницу прочитал?

debugger ★★★★★
()

Вот даже не помню, что именно там не так, но что-то явно было не так. Не понравилось, когда щупал.

Zig пока никто не переплюнул.

wandrien ★★★
()
Ответ на: комментарий от debugger

Так 4.2 же никуда не делось. Оно или на оф. сайте, или на гитхабе.

dataman ★★★★★
() автор топика
Ответ на: комментарий от zabbal

Где-нибудь описано на кой хрен нужен этот гибрид ежа с ужом?

Because they CAN!

gns ★★★★★
()

для программистов, которые любят C...

уже есть Си и они на нём пишут.

так что непонятно, на кого рассчитано это очередное поделие. имя им легион. дофига таких было в истории. ни один ничем не запомнился.

Iron_Bug ★★★★★
()
Ответ на: комментарий от urxvt

ну, как что: приплюсовать три раза. а если надо четыре раза приплюсовать, то рисуешь четыре плюса.

Iron_Bug ★★★★★
()
Ответ на: комментарий от urxvt

+++= compile time operator could be neat:

Here is a simple macro:

macro String String.mul($self, isz $n) @operator_s(*)
{
    $if $n <= 0:
        return "";
    $endif

    var $res = "";
    $for var $i = 0; $i < $n; $i += 1:
        $res = $res +++ $self;
    $endfor

    return $res;
}

Having $res = $res +++ $self simplified into $res +++= $self would make this quicker to write and read, aswell as having less repetitions especially in bigger macros.

dataman ★★★★★
() автор топика
Ответ на: комментарий от wandrien

Не знаю, это кто-то из новеньких надизайнил новый сайт. Раньше документация по операторам была.
Можно вывести их список: $ c3c --list-operators.

dataman ★★★★★
() автор топика
Ответ на: комментарий от dataman

Не знаю, это кто-то из новеньких надизайнил новый сайт.

Ну тогда тем более не стану этот проект всерьёз воспринимать.

wandrien ★★★
()
Ответ на: комментарий от dataman

ты же понимаешь, что сейчас с llvm только ленивый не написал какой-нибудь свой язычок программирования. так как синтаксис у сишки самый простой, то лепят их на основе сишки. но это абсолютно ничего не значит. и уж точно не «предназначено для любителей си». любители си разорились бы на попкорне, если бы всё это читали.

Iron_Bug ★★★★★
()
Ответ на: комментарий от dataman

В ++, очевидно. Почему бы не обойтись одним? Если это будет сложением, почему тогда ++ не инкремент?..

GAMer ★★★★★
()

По описанию казалось что что-то хорошее, но потом посмотрел пример и стало явно что

язык, похожий на C,

это 4.2

firkax ★★★★★
()
Ответ на: комментарий от GAMer

Так то был код Zig. :)

Если это будет сложением, почему тогда ++ не инкремент?..

Инкремент, да. Для чисел. Хотя недавно и добавили возможность перегрузки операторов для пользовательских типов.

Автор считает, что операторы, выполняющие разные действия, не должны одинаково выглядеть.

dataman ★★★★★
() автор топика
Ответ на: комментарий от firkax

Да, брешут.

Непонятно, с какой целью примазываться к Си. Написали бы, «мы делаем компилируемый язык общего назначения, который имеет такие-то фичи….»

wandrien ★★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от wandrien

Наследие C2: http://c2lang.org/site/.

Philosophy «The C programming language has been around for a long time and is still used a lot nowadays. Its foundations are very solid, but other aspects are showing their age. C2 attempts to modernize these parts, while keeping the feel of C. It should be seen as an evolution of C.»

dataman ★★★★★
() автор топика
Ответ на: комментарий от Iron_Bug

ты же понимаешь, что сейчас с llvm только ленивый не написал какой-нибудь свой язычок программирования.

И у тебя он, конечно же, есть, потому что ты не ленивая?

dataman ★★★★★
() автор топика

fn

чтоб ты кланялся каждый раз лбом об мостовую
когда кто-нибудь пишет fn
где вас берут таких, удивительных

olelookoe ★★★
()
Ответ на: комментарий от dataman

Ну если это стандарт, то всеми фронтендами которые заявлены как поддерживающие C++20. А вообще эти модули выглядят как в js скорее всего их и добавили что бы интерпретаторы не городили свои реализации рантайм-модулей. Как и все остальное что сейчас в плюсы добавляют.

uin ★★★
()
Ответ на: комментарий от dataman

Модули это целование в жопу креаклов которые не могут в опакечивание и до кучи тянут «самые новые версии»

ckotctvo
()

Никого ничего не смутило в новости? Например опции loop-vectorize untoll-loops? Это уже давно штатный функционал llvm.

ckotctvo
()

Я очень рекомендую не восторгался этим говном а почитать их библиотеки. Там одни макросы. Это хуже шаблонов крестов. Они в B tree визитер макросом с лямбдой сделали лол.

bga_ ★★★★
()

И тем не менее ни один яп который типа Си но получше не отвечает моим требованиям. А именно обратно компилироваться в голый си. Чтобы комфорто писать для какого нибудь pic16 или stm8 на sdcc и прочих недо компиляторах.

bga_ ★★★★
()
Ответ на: комментарий от ckotctvo

на плюсах сложнее не смочь, чем в сишке. в сишке нет столько синтаксического сахара и всяких памперсов для тех, у кого память течёт :) правда, в плюсах есть довольно дикие навороты с темплейтами (хотя это тоже в основном убер синтаксический сахар), но их нубам осваивать не обязательно. в большинстве софта на плюсах их просто не используют.

сишка синтаксически проще, но для её эффективного использования нужно больше знаний и опыта.

Iron_Bug ★★★★★
()
Ответ на: комментарий от bga_

так для писания под пики и прочие мелкашки уже есть сишка. более того, под мелкоконтроллеры сишка ещё и не полная, а ограниченная, в большинстве случаев. в силу отсутствия там всяких потоков, консоли для вывода и прочего такого, например.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

И? Те мне велосипедить очереди каждый раз? И страдать без вложенных функций/лямбд? А ещё я хочу норм си с классами. А не вот это вот.

bga_ ★★★★
()
Ответ на: комментарий от ckotctvo

тоже никогда не понимала этот хайп про модули. более 30 лет пишу на сишке, конфликт имён из разных пакетов видела только однажды. там имя из библиотеки конфликтовало с именем из кернела. написала разработчикам библиотеки, они поменяли название. на этом всё и закончилось.

сейчас собираю систему из сорцов. несколько тысяч библиотек, большинство сишные. некоторые пакеты тащат огромное число зависимостей. и не вижу никаких конфликтов в упор. никто не плачет ни о каких «модулях». о них пекутся только какие-то кукаретики, которым делать нефиг и они внутри своей программы в трёх сорцах разобраться не могут.

Iron_Bug ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.