LINUX.ORG.RU

QBE 1.3

 , , qbe,


0

7

Состоялся выпуск новой версии QBE – универсального бэкенда для создания компиляторов.

От ближайшего аналога (LLVM) QBE отличается намного более простой кодовой базой, высокими скоростью работы и сборки (сам QBE собирается из исходников меньше чем за секунду на Core2Duo) и более дружелюбным для разработчика API, в том числе более простым промежуточным языком (IL). При этом QBE не предназначен для создания промышленных компиляторов с высокими требованиями к качеству генерируемого кода, но хорошо подходит для хобби-проектов и прототипов.

Поддерживается генерация двоичного кода для архитектур x86_64, AArch64 и RISC-V (rv64). Из проектов, использующих QBE, можно выделить компиляторы языка Си cproc, SCC, PACC, а также компиляторы языков Hare и Antimony. QBE также используется в рамках курса разработки компиляторов в институте системного программирования РАН им. В.П. Иванникова.

Среди изменений в новом выпуске:

  • Добавлена поддержка Windows ABI;
  • Новые оптимизации, ускоряющие сгенерированный код. В среднем, в тестах производительность кода из QBE составляет примерно 63% от производительности кода из GCC;
  • Улучшена поддержка генерации PIE (position-independent code).

Код написан на языке Си (C99) и распространяется под лицензией MIT.

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



Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 6)
Ответ на: комментарий от dataman

И то и другое является инструментарием для создания компиляторов, предоставляющим IL, оптимизации и кодогенерацию. Авторы на своём сайте даже сравнение с LLVM на отдельной странице приводят: https://c9x.me/compile/doc/llvm.html

Both QBE and LLVM are compiler backends using an SSA representation. This document will explain why LLVM does not make QBE a redundant project.

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

Both QBE and LLVM are compiler backends using an SSA representation.

Это не то же самое, что «аналогичного LLVM».

Да, это то же самое. QBE является упрощённым аналогом LLVM. Для объяснения рядовому ЛОРовцу что такое QBE и для чего оно нужно этого достаточно. Если господам модераторам не нравится, они могут писать новости сами.

yorshka
() автор топика

интересно, но «компилятор, конкурирующий с llvm» это cproc. он офигенный, но в новости ты немного промахнулся.

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

Так ТС нигде и не называет сабж компилятором.

hobbit ★★★★★
()

и распространяется под лицензией MIT

Сабж под MIT, LLVM под Apache с исключениями… Кто бы выпустил под LGPL, причём такой, чтобы по техническим характеристикам серьёзную конкуренцию LLVM составлял?

Яиц не хватает. Понимаю.

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

Плати за разработку, выпустят.

monk ★★★★★
()

QBE is a compiler backend that aims to provide 70% of the performance of industrial optimizing compilers in 10% of the code. QBE fosters language innovation by offering a compact user-friendly and performant backend. The size limit constrains QBE to focus on the essential and prevents embarking on a never-ending path of diminishing returns.

QBE — это бэкенд-компилятор, целью которого является обеспечение 70% производительности промышленных оптимизирующих компиляторов при 10% объёма кода. QBE способствует инновациям в области языков программирования, предлагая компактный, удобный для пользователя и производительный бэкенд. Ограничение на размер заставляет QBE сосредотачиваться на самом необходимом и не позволяет встать на бесконечный путь убывающей отдачи.

The C codebase of QBE is intended to remain hobby-scale and pleasant to hack on. Despite the small footprint, QBE provides a number of optimizations with good impact/weight ratio. It also facilitates integration with foreign systems by implementing the C ABI in full. This means that programs compiled by QBE can trivially call into C, and vice versa. The current version of QBE can target amd64 (linux and osx), arm64, and riscv64.

Кодовая база QBE на C остаётся в рамках хобби-проекта и доставляет удовольствие при доработке. Несмотря на небольшой размер, QBE предоставляет ряд оптимизаций с хорошим соотношением эффективности к затратам. Также он упрощает интеграцию с внешними системами, полностью реализуя ABI языка C. Это означает, что программы, скомпилированные с помощью QBE, могут без дополнительных усилий вызывать код на C, и наоборот. Текущая версия QBE поддерживает целевые архитектуры amd64 (Linux и macOS), arm64 и riscv64.

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

Что ты несёшь?

Автор, наверное, имел ввиду аналог LLVM

Проект LLVM представляет собой коллекцию модульных и многократно используемых технологий компиляторов и инструментальных средств. Несмотря на своё название, LLVM имеет мало общего с традиционными виртуальными машинами. Само название «LLVM» не является аббревиатурой; это полное имя проекта.

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

вирусная

Ясно.

что не так? любая *GPL вирусная, нет? тоже всегда так думал.

я так понимаю, что вирусные лицензии нужны, если ты хочешь чтобы в проект вкладывались, а не просто пользовались. или все не так, как кажется? если что мне больше нравится WTFPL, но в лицензиях я не силен.

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

Слово. «В начале было слово».

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

(На самом деле, всё ещё намного хуже. Огромной массой GPL- и (в ещё большей степени) LGPL-кода вполне легально можно пользоваться, не вкладываясь, просто соблюдая несложные правила. Но самые ущемлённые – это те, кто хочет не просто не вкладываться, а пользуясь свободным кодом, вытеснять тех, кто вкладывается. Вот этим «вирусные» лицензии действительно как бельмо на глазу.)

Те, кто не хочет вкладывать отрицательный смысл, говорят не «вирусная», а «строгая». LGPL, наверное, правильно было бы называть «полустрогой».

И в предыдущем комментарии я имел в виду, что человеку, употребляющему в этом контексте слово «вирусная», я вряд ли объясню, почему я считаю LGPL более подходящей для фундаментальных вещей. Хотя я и против MIT ничего особо не имею. Среди свободных лицензий нет плохих. Просто некоторые имеют защиту от злоупотреблений, а некоторые нет.

P.S. На хабре есть статья с цитатой из RMS: «Это не вирус, это вакцина от жадности». Оригинал цитаты сходу не нашёл, к сожалению.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 5)

сам QBE собирается из исходников меньше чем за секунду на Core2Duo

Что-то напомнило Выпущены sac 1.0.0 и stack 1.0.0 (это просто ассоциация, я не хочу сказать что проекты похожи).

А так, судя по описанию, проект выглядит интересно. И удручающую скорость работы и в целом переусложнённость llvm верно подметили.

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

Если бы мне нужен был IL-компилятор для своего проекта я даже теперь вижу кандидата (llvm бы не рассматривал).

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)

Состоялся выпуск новой версии QBE – универсального бэкенда для создания компиляторов.

Хорошо, а СИшный компилятор референсный они уже выпустили? Ну чтобы взять, да и попробовать что-нибудь собрать, побенчмаркать. Или бэкенд есть, а компилятора нет, и думай сам, что с этим всем делать?

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

Хорошо, а СИшный компилятор референсный они уже выпустили?

Они лично? Нет. На базе QBE их аж три. Есть даже линуксовый дистр, использующий cproc как основной компилятор.

https://git.sr.ht/~mcf/oasis

yorshka
() автор топика

Компилятор языка Шекспир, жди меня😂

REDDERa
()
Ответ на: комментарий от hobbit

Сабж под MIT, LLVM под Apache с исключениями… Кто бы выпустил под LGPL, причём такой, чтобы по техническим характеристикам серьёзную конкуренцию LLVM составлял?

Яиц не хватает. Понимаю.

Нет сырья и кадров (c).

Без шуток, штуки типа LLVM – результат работы огромного количества очень умных людей, экспертиза которых не воспроизводится. Твой вопрос можно переформулировать как: «почему никто не хочет воспитать ещё одно поколение компиляторщиков и оплатить несколько десятков тысяч человеко-лет работы?» Ну вот поэтому и не хочет, плюс LLVM уже есть.

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

Есть даже линуксовый дистр, использующий cproc как основной компилятор.

Да-да. А вот что получается, если попробовать конфигуре на него натравить:

configure:3359: checking for C compiler version
cproc: unknown option '--version'
usage: cproc [-c|-S|-E] [-D name[=value]] [-U name] [-s] [-g] [-o output] input...

Ну извините, если там даже нет базовой поддержки конфигуре (да просто ключа –version), то о каком ещё дистрибутиве может идти речь?

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

О работающем? Сорян, автолулзы – убогое днище, и их надо выкинуть на помойку. Там заявлена поддержка сборки самураем, собирай им.

yorshka
() автор топика

институте системного программирования им. В.П. Иванникова

А разве он не имени Айламазяна? Уже переименовали?

Lusine
()

Скорость сборки это небольшая проблема. Более того, зачем llvm собирать? Я использую собранный из пакетов что на линуксе что на маке.

Reset ★★★★★
()

В нем есть webassembly target?

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

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

PS И да, гпл никогда ни от чего не защищал к сожалению, как мемберы линукс фаундейшн насиловали гпл, так и насилуют.

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

Айламазян

это институт программных систем

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

Там заявлена поддержка сборки самураем, собирай им.

Круто, то есть, даже не нинжой с месаном, а мюоном и самураем… И много ли я ими вообще соберу, и, в особенности - с этим компайлером в придачу? :)

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

«разрабатывает технологии мирового уровня в таких областях, как операционные системы». Коммитят в ядро линукса?

Lusine
()
Ответ на: комментарий от yorshka

Ты как будто впервые это заметил за ним.

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

За свои проекты, сюрприз, тоже приходится воевать. RMS к идее GPL пришёл после того, как ему код емакса пришлось с нуля переписать, история достаточно известная.

вместо

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

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

RMS к идее GPL пришёл после того, как ему код емакса пришлось с нуля переписать, история достаточно известная.

Ну, что значит пришлось… типичное гнутое поведение – взять готовый проект, переписать с нуля и добавить GNU в название. Фанаты Rust сейчас ровно так же делают.

yorshka
() автор топика

По названию подумал что к культям какая-то приблуда, а тут фигня всякая.

ya-betmen ★★★★★
()

Интересно, возможно ли это использовать для написания компиляторов в spirv?

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

Не вижу особой разницы. Гнутые любят переписывать под GPL, нагнутые – из-под GPL. Это всё просто переливание из пустого в порожнее.

Плюс, судиться из-за GPL – очень дорогой, долгий и зачастую бесполезный процесс. Китайцы вот кладут на этот ваш GPL свой короткий болт и ничего ты им не сделаешь. Если у тебя нет сотен тысяч денег на юристов и нескольких лет в запасе, про GPL можешь особо даже не думать.

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

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

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

Китайцы, не соблюдающие GPL обычно имеют куда меньший ранок в США и ЕС, либо не имеют его там вообще

Кто тебе такую ересь рассказал? Все девайсы с люнексом но без открытых исходников, которые у меня есть, свободно продаются в ЕС. Как я их купил, по-твоему?

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

Вот список. Да, достаточно много.

В принципе, для студенческого компайлера даже без –version, список впечатляет. Это факт.

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

не знаю как дела с рынком телефонов (я практически не нахожу телефонов с экранами меньше 5 дюймов, а лопаты меня никогда не интересовали), но на рынке vr шлемов в США и ЕС продаётся Quest, от которого исходники доступны, а вот Pico 4 без исходников там не особо продаётся (скорее всего в основном в серую)

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

В моём случае это ни разу не телефоны. Телефон у меня как раз с открытой прошивкой (графений). А вот всякая (полу)профессиональная аудиохерня часто с софтом под GPL и при этом без исходников.

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

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

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

наезд

ну так не я тут начал про подгорания :) сейчас бы на лоре искать тех, кто «не может пользоваться» из-за лицензионных ограничений :D

А позиция «вы тут проекты пилите, а в то, как большие дяди опенсорс пилят, не суйтесь» слишком удобная для кое-кого. Идейные и организационные вопросы тоже важны.

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

В 99% случаев реальный опенсорс может быть только «выстрадан» на собственной реальной проблеме.

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

Слово «вирусная» несёт в себе отрицательную коннотацию

это какая-то психология, или психиатрия… не силён.

«вирусная» - это, на мой взгляд, прилагательное, описывающее способ распространения. тех же вирусов, мемов, чего там еще. у вируса есть «липучка» и способ самокопирования (самовоспроизводства).
и да, в этом смысле *gpl вирусная. «липучка» есть, механизм копирования есть (в принципе у всего софта есть). хотяааааа… «липучки» может и не быть, конечно - «вот я вам тут (еще один, номер 100500) калькулятор написал!».

а слово «строгая» мне лично ничего не объясняет. я, например, тоже строгий, когда с утра на себя в зеркало смотрю, но это ничего не значит.

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

Те, кто не хочет вкладывать отрицательный смысл, говорят не «вирусная», а «строгая». LGPL, наверное, правильно было бы называть «полустрогой».

Вот LGPL и CDDL вирусными не являются. GPL вирусная, потому что наличие хотя бы одного файла под GPL требует перевода всего проекта под GPL. В некоторых случаях доходит до абсурда: в ядре Linux нельзя использовать код из Samba. Потому что оба проекта под GPL, но разных версий.

почему я считаю LGPL более подходящей для фундаментальных вещей

С моей точки зрения у LGPL есть только один крупный недостаток: контроль со стороны FSF всего кода под этой лицензией. Причём у FSF уже был прецедент одностороннего изменения лицензии без учёта желания лицензиаров (GNU FDL разрешили перелицензировать под CC-BY-SA). Разве что распространять под LGPL-3.0-only. Но тогда получается, что библиотеку можно использовать в любом софте кроме того, который под GPL не 3 версии.

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