URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 132531
[ Назад ]

Исходное сообщение
"Доступен Vcc, C/C++ компилятор для Vulkan"

Отправлено opennews , 10-Янв-24 10:22 
После трёх лет разработки представлен исследовательский проект Vcc (Vulkan Clang Compiler), нацеленный на создание компилятора, способного транслировать код на языке С++ в представление, выполняемое на GPU, поддерживающих графический API Vulkan.  В отличие от моделей программирования GPU на базе языков шейдеров  GLSL и HLSL в Vcc развивается идея полного отказа от использования отдельных языков шейдеров и предоставляется возможность прямой компиляции кода C/C++ для  Vulkan. Наработки проекта распространяются под лицензией MIT...

Подробнее: https://www.opennet.dev/opennews/art.shtml?num=60413


Содержание

Сообщения в этом обсуждении
"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено 1 , 10-Янв-24 10:22 
> В Vcc применяются штатные возможности C/C++ для управления ходом выполнения программы, включая возможность использования оператора "goto".

Шах и мат хейтерам goto !!!!


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Lost Inside , 10-Янв-24 10:58 
Железно-деревянные грабли, разбросанные по земле, заменили на грабли из композитных материалов, но они все так же больно лупят по бошкам.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 16-Янв-24 16:39 
Причём ещё и с неправильной лицензией:
> Наработки проекта распространяются под лицензией MIT

а не GPL как у GCC (с которого название сплагиатили) - это чтобы корпорациям было легче тырить ваши труды


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 12:26 
>возможность использования оператора "goto"

Возможность, но не обязательность.


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Пряник , 10-Янв-24 13:17 
goto hell

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 14:28 
Не кричи. В сишке тоже есть goto, но никто в здравом уме не будет его использовать.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено kusb , 10-Янв-24 17:32 
Это же прямой способ выйти или войти из чего-то. Очень полезно.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 17:56 
А заодно и прекрасный индикатор б#длокода и/или плохо продуманной архитектуры.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено wyry , 11-Янв-24 05:17 
> А заодно и прекрасный индикатор б#длокода и/или плохо продуманной архитектуры.

Сразу видно, что кто-то не открывал Кнута ни разу в жизни, а о недостатках goto знает только от "IT-инфлюенсеров". Разумеется, что поводов применять goto в 21 веке не так уж много (а чаще их вообще нет), но и заявлять вещи, подобные вашим, может только сам быдлокодер с уровнем знаний "где-то в инете или в универе сказали, что goto - это плохо и ведёт к спагетти-коду" (типичное заявление о goto), в то время как к ещё бОльшему спагетти-коду ведёт банальное ООП в кривых руках и мозгах.


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 12-Янв-24 18:53 
Вот на универ бочку катить не нужно — в моем достаточно хорошо объяснили и научили думать когда и как что применять, включая оператор goto.  Это вот как-раз ребятки не желающие учиться и на готовых ответах от своих коллег желающие выглядеть перед начальством сильно умными обычно говорят то что не понимают сами. Где-то что-то слышали, а почему тогда в каком-то конкретном решении именно так поступили в целом не знают. Ох, я много раз видел таких синьерчиков — зарплату получают больше, все значит начинают права качать. Самодуры!

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 12-Янв-24 18:45 
А вы ассемблер я так понимаю не изучали?

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено bOOster , 15-Янв-24 06:44 
Ну и причем тут Ассемблер?

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Вы забыли заполнить поле Name. , 11-Янв-24 04:53 
Людям в универах и лорах скажут, что goto плохо, а вот почему плохо - не скажут. Вообще, пока за пределы функции с ним не вылезаешь, то никто и пикнуть не должен о том, что оно плохо.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Доктор , 11-Янв-24 10:16 
Вы, мягко говоря, несёте невероятну чушь, вам не стыдно? Как такая *7*?*? может прийти в голову?

На кой чёрт вам goto?


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено anonymous , 12-Янв-24 00:30 
с goto и внутри функции можно дров наломать

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено bOOster , 15-Янв-24 06:47 
идиот использующий goto - может использовать его как переход из одной функции вообще в другую. В результате получается такой ахтунг - что никто и никогда отладить не сможет на предмет утечек или двойного/тройного освобождения памяти.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 10:41 
Кто-то решил переизобрести OpenGL и OpenCL?

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 10:43 
кто-то не видит разницы между api графики и языком шейдеров

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 15:04 
> Кто-то решил переизобрести OpenGL

Это вообще не конкурент вулкану.

> и OpenCL?

А он сугубо про вычисления... вулкан забавен тем что там можно и графику, и вычисления, сразу.


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 10:42 
>C++
>код — на C

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 10:54 
C/C++

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Крестоносец , 10-Янв-24 11:17 
C++/C

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 12:00 
неправильно.
потому что переменные сокращаются: С/C++ == (С/C)++ == 1++ == 2.
поэтому "код написан на C/C++" == "код написан на 2".

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 13:39 
Как ты будешь инкрементировать литерал?

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено anonizmus , 10-Янв-24 19:59 
следующая буква. А если последняя, то будет AA. AA++ = AB, AB++ = AC и т. д.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Пользователь планеты Земля , 10-Янв-24 13:48 
ты разве ничего не слышал про приоритет операций ?
https://ru.wikipedia.org/wiki/Приоритет_операции
С/C++ == С/(C++)

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Пользователь планеты Земля , 10-Янв-24 13:57 
отсюда следует что выражение для С/(C++) будет всегда меньше единицы при положительном С
С/(C++) < 1

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено freehck , 10-Янв-24 22:37 
Вы забываете, что ++ по умолчанию является int-овым оператором, то есть мы тут имеем дело исключительно с целочисленными операциями, поэтому:

С/C++ = C/(C++) = 1/(1++) = 1/2 = 0

Всегда тождественный нуль!

Поэтому "код написан на C/C++" следует читать как "код написан на 0".


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено morphe , 10-Янв-24 16:35 
Неправда, тут UB
По стандарту, между двумя последовательными "точками последовательности" (sequence points) значение изменяемого объекта (например, переменной) не должно быть изменено более одного раза, а также не должно быть считано, за исключением случаев, когда это считывание предназначено для определения значения, которое должно быть записано (как в выражении C = C + 1).

Соответственно в данном месте компилятор имеет право выплюнуть ub2 и будет сегфолт.


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 18:18 
> Соответственно в данном месте компилятор имеет право выплюнуть ub2 и будет сегфолт.

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

Т.е это тот самый знаменитый Стандарт СИ!
Который сводится к "Колбаса состоит из мяся и добавок. Происхождение мяса и вид добавок (специи, шпик, туал.бумага, овно) определяет компилятор рецепта"
И за который так ценят дыряшку любители CVE.


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено morphe , 10-Янв-24 21:11 
> Имеет право, но может и не делать)
> Тут уже зависит от разработчика компилятора.

Но полагаться на конкретное поведение нельзя, компилятор имеет право на всё в данном случае, а соответственно даже если C/C++ где-то и отрабатывает как человек ожидает (pun intended), то это всё равно остаётся UB и говном.


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 18:42 
косинус/синус=ко
)

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено freehck , 10-Янв-24 22:42 
> косинус/синус=ко
> )

поздравляю с открытием, коллега
из этого прямо следует, что тангенс всегда тождественен единице, ибо:

косинус/синус = ко = котангенс

а также становится понятно, что

синус/косинус = 1/ко = тангенс = 1

и следовательно получаем, что ко = 1

наконец-то мы знаем, чему равна константа ко!


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 12-Янв-24 08:49 
>наконец-то мы знаем, чему равна константа ко!

Если ко=1, то все углы в мире = 45 градусам (n * pi/4)
ко - это не константа, а функция: ко = 1/x )
Как много нам открытий чудных...


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено bOOster , 15-Янв-24 06:51 
Ты дурачек чтоли? Как это ты так скобки выставил? А тем более в равенство все вписал?

Предположим С=1
С/С++ = 1/2; (C/C)++ = 2;

Мда, математическая грамотность языка программирования у недопрограммистов на высоте.


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 13:23 
А зачем усложнять, если можно упростить?

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Шарп , 10-Янв-24 10:57 
Не увидел в приведённом примере раскрытия потанцевала c++. Приведённый код практически идентичен коду на обычном языке шейдеров.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 11:04 
> потанцевала

В следующий раз заходи на OpenNet по-трезвому.


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Bottle , 10-Янв-24 11:32 
Не, это специально так написано. Видел мемы про "раскрытие потанцевала" в консолесрачах ещё давно.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено aname , 12-Янв-24 13:09 
> по-трезвому

Лови нюфага!


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 13:24 
А не нужно. Нужна скорость.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 14:40 
Скорость за счёт аппаратной реализации параллельных матопераций в GPU, а не за счёт конструкций языка.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Иисус , 10-Янв-24 11:08 
А чем оно лучше/хуже rust-gpu, который уже давно есть и работает?

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Крестоносец , 10-Янв-24 11:16 
> А чем оно лучше/хуже rust-gpu

Лучше тем, что это C и C++, а не Rust.


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Иисус , 10-Янв-24 12:26 
То есть примерно ничем. По твоим словам. Хотя оно, например, поддерживает Windows XP. Не то, чтоб прям что-то нужное, но ситуативная фича надо полагать.

Полагаю, самый существенный минус - весьма скудная документация. Сложно определить, что именно будет интересными фичами, если про них даже прочитать негде. У rust-gpu есть доки разные и сообщество. Например списки, чего они сделали/недоделали с точки зрения SPIR-V https://github.com/EmbarkStudios/rust-gpu/issues/383


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 16:44 
Да всем плевать, иди проповедуй в другом месте.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Пряник , 10-Янв-24 13:19 
И хуже тем, что это C и C++, а не Rust.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено aname , 12-Янв-24 13:11 
Минусы будут?

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Пряник , 12-Янв-24 15:55 
Ищущий да найдёт.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено aname , 29-Фев-24 15:51 
> Ищущий да найдёт.

Имещий да покажет


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Ivan7 , 10-Янв-24 12:36 
1) Зачем тебе rust в шейдерах?
2) Зачем тебе rust?

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Иисус , 10-Янв-24 13:03 
1) Лично мне не нужен, мне wgpu-rs достаточно для моих скромных задач.
2) Я код на нём иногда пишу. Перешёл на оный с гошечки и крестов.

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

Кресты (в отличии от Няшного Си, который подкупает своей простотой) слишком неудобны для реального использования. Любая многопоточность - боль (а мне нужна). Нормальной инфраструктуры нет. Компилятор медленный. Все пишут на каком-то своём диалекте. Управления зависимостями нет.


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 16:45 
Все неосиляторы С++ так сначала пишут. А ты попробуй попрограммировать на нем пару годиков, тогда поймешь его мощь и выразительную силу.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено laindono , 11-Янв-24 03:26 
В моём понимании "попробовать язык" это как раз попрограммировать на нём пару годиков.

Проблема в том, что кресты невозможно как-то освоить за эти пару годиков. Собственно у меня нет желания тратить всю жизнь на один единственный ЯП. Все практически полезные фичи, которые есть в крестах так или иначе покрываются растом. С другой стороны у крестов нет концепции лайвтаймов и в целом штуки, так или иначе завязанные на многопоточку это боль в крестах. А для меня это важно, соответственно переход от ржавого к крестам для меня будет даугрейдом.

Получается, что да. C++ я не осилил, но при этом ничего не потерял, только приобрёл.


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Вася , 11-Янв-24 12:48 
От повторения слова "халва", во рту слаще не станет. Я неосиялтор, но это звучит гордо! Неосиляторы превосходят всех остальных! Все завидуют неосиляторам, потому что чем больше они неосиливют - тем больше приобретают!

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено laindono , 12-Янв-24 04:39 
Кресты для осиливания, ржавый для программирования. Получается так с твоих слов

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Пряник , 12-Янв-24 15:58 
Может Rust и не лучше Си, но уж точно лучше С++

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 13:08 
Странный вопрос.
> 2) Зачем тебе rust?

Язык ядра линукс, в отличии от C++.
Но который лучше чем С (тк его взяли в ядро на замену сишки).

> 1) Зачем тебе rust в шейдерах?

А почему бы и нет)?


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 13:45 
Слишком громко сказано, учитывая сколько кода rust в ядре и что он по умолчанию вообще отключен и даже не требует зависимости от rust. А так же то, что C - это подмножество C++.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 18:00 
Нет, уже давно не так. Это скорее два частично пересекающихся подмножества, т.к. есть валидный сишный код, который не скомпилится как с++ и наоборот.
https://www.geeksforgeeks.org/write-a-c-program-that-wont-co.../

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 11-Янв-24 10:50 
Это никогда не было так (пример с `int new = 5;` этак и в 1985 должен не работать) но на практике это более-менее так с точностью до процента библиотек, не собирающихся плюсовым компилятором.

К тому же нет постоянной тенденции к расхождению, точнее, к выходу за подмножество C++. Вот в C++20 добавили недо-сишные designated initializers и часть C перестала выходить за подмножество C++.


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Пряник , 12-Янв-24 16:00 
С++ создавался изначально как доработка С, но вырос самостоятельным языком и пошёл своим путём. Хотя до сих пор есть проекты, где пытаются писать код, способный компилироваться в обоих языках (психи).

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 16:54 
>rust-gpu
>Note: This project is still heavily in development and is at an early stage.

Этим как бы все сказано. Обычная ситуация для ржавых проектов - вечная альфа-версия.


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 18:01 
То ли дело это поделие) Прям завершенный релиз-кандидат))
"Vcc - the Vulkan Clang Compiler, is a proof-of-concept C and C++ compiler"
Это вообще proof-of-concept.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено corvuscor , 10-Янв-24 12:51 
Если это будет переносимо на уровне собранных бинарников - я обеими руками за.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 13:03 
Наверное, только между одинаковыми чипами GPU.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Иисус , 10-Янв-24 13:11 
Компилируется в SPIR-V, так что должно по идее.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Пряник , 10-Янв-24 13:22 
Как всё сложно. Почему бы просто не компилировать из LLVM в машинный код GPU?

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 15:06 
> Как всё сложно. Почему бы просто не компилировать из LLVM в машинный код GPU?

Которого именно их GPU для начала, например?


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Пряник , 10-Янв-24 15:23 
Ну хотя бы в наиболее популярную архитектуру.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 16:07 
Так они даже у одного производителя разных моделей не обязаны быть двоичносовместимыми.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 17:52 
Компилировал LLVMом в r600 OpenCL-ядро. При задействовании комп вис намертво.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено mos87 , 10-Янв-24 15:19 
очередной велосипед?

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 18:31 
Да! А ты что против?
Может ты еще скажешь, что 100500 разных DE и дистрибутивов линкуса это тоже ненужно?
Так, тебя еретика, тут быстренько анафеме придадут!

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено mos87 , 11-Янв-24 18:37 
регулярно тут на попеннете это говорю))

на диванную инквизицию пох


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено zog , 10-Янв-24 18:38 
Вспомнился один древний знакомый, который ещё лет так 20 назад негодовал: "Почему всем так не нравится goto? Это же простой JMP".

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 19:32 
Потому, что ЯВУ не ассемблер. Даже и Сишка.

"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено freehck , 10-Янв-24 22:29 
> Почему всем так не нравится goto? Это же простой JMP

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


"Доступен Vcc, C/C++ компилятор для Vulkan"
Отправлено Аноним , 10-Янв-24 19:54 
Кстати, а setjmp/longjmp поддерживаются?