llvm
-
Хабрахабр
[Перевод] Передавать пустые срезы между Rust и C/C++ на удивление сложно
Моя основная работа связана с браузерами и криптографией, а не компиляторами. Но я нередко сталкиваюсь с ситуацией, когда мне приходится проводить больше рабочего времени за изучением семантики языков программирования, чем за фактическим их использованием. Так что эта статья будет посвящена обсуждению острой межязыковой проблемы, касающейся С, С++ и Rust. В общих чертах она выглядит так: В правила работы с указателями…
Читать далее » -
Хабрахабр
Поговорим об оптимизирующих компиляторах. Сказ седьмой: борьба с проверками диапазонов
Это цикл статей об оптимизирующих компиляторах вообще и LLVM в частности. Смотри все статьи данного цикла: SSA форма Доминирование Неопределённое поведение Циклы CSE Цикловые инварианты Проверки диапазонов В этой статье мы поговорим о том, чего нам стоят безопасные доступы к элементам массива, и как современные компиляторы пытаются сделать код снова быстрым. Проверки диапазонов в массивах Предположим, что у нас есть…
Читать далее » -
Хабрахабр
Поговорим об оптимизирующих компиляторах. Сказ пятый: удаление общих подвыражений
Это цикл статей об оптимизирующих компиляторах вообще и LLVM в частности. Смотри все статьи данного цикла: SSA форма Доминирование Неопределённое поведение Циклы CSE В этой статье мы поговорим о классе оптимизаций, которые позволяют избегать лишних вычислений при помощи переиспользования уже имеющихся результатов, а именно -- оптимизации семейства CSE. В разном виде такие оптимизации есть практически во всех известных компиляторах. Когда…
Читать далее » -
Хабрахабр
Поговорим об оптимизирующих компиляторах. Сказ четвёртый: Циклы
Это цикл статей об оптимизирующих компиляторах вообще и LLVM в частности. Смотри все статьи данного цикла: SSA форма Доминирование Неопределённое поведение Циклы Если вы не читали первые две части этого курса (про SSA-форму и доминирование), сначала прочитайте их. Иначе можете совсем ничего не понять. Договоримся о терминах Так получилось, что в теории компиляторов различают понятия cycle (цикл) и loop (петля).…
Читать далее » -
Хабрахабр
[Перевод] От стеков к деревьям — новая модель псевдонимов в Rust
С прошлой осени Нивен проходит стажировку, разрабатывая новую модель псевдонимов для Rust: древовидные заимствования (tree borrows). Секундочку, уже слышу, как вы вопрошаете: а разве в Rust ещё нет своей псевдонимной модели? Разве вы, автор, не рассказываете повсюду о «стековых заимствованиях»? Действительно, так и есть, но стековые заимствования — всего лишь один из возможных вариантов реализации для модели псевдонимов, и с этим вариантом есть…
Читать далее » -
Хабрахабр
Поговорим об оптимизирующих компиляторах. Сказ третий: неопределённое поведение и оптимизации
Это цикл статей об оптимизирующих компиляторах вообще и LLVM в частности. Смотри все статьи данного цикла: SSA форма Доминирование Неопределённое поведение Вообще-то, третья статья данного цикла должна была рассказывать о конкретных оптимизациях. Но пока я прикидывал её план, стало ясно, что без освещения некоторых аспектов неопределённого поведения многое из дальнейших описаний будет непонятно. Поэтому сделаем ещё один осторожный шаг, прежде,…
Читать далее » -
Хабрахабр
Из серии: заглянем под капот clang-e2k/llvm-e2k из штатного дистрибутива для Эльбруса
Тема непосредственно самого процессора Эльбрус уже достаточно хорошо раскрыта в различных статьях, в том числе, в статьях, опубликованных на habr.ru. Кроме самого процессора Эльбрус время от времени на просторах рунета можно встретить обсуждения, посвященные вопросу портирования компилятора clang/llvm на Эльбрус. Пожалуй, данная тема еще не получала подробного освещения. Данная заметка призвана заполнить этот «пробел». Если вкратце, то llvm из e2k-дистрибутива…
Читать далее » -
Хабрахабр
Поговорим об оптимизирующих компиляторах. Сказ второй: Доминирование
Сегодня мы продолжаем наш разговор об оптимизирующих компиляторах для самых маленьких и не очень. Для тех, кто пока не в курсе происходящего, но желает приобщиться - я поставил себе задачу написать цикл вводных статей в эту область для совсем-совсем начинающих. Первую часть, где рассказывается об SSA-форме, можно и нужно прочитать здесь. Сегодня мы поговорим о доминировании. Это одна из фундаментальных…
Читать далее » -
Хабрахабр
Поговорим об оптимизирующих компиляторах. Сказ первый: SSA-форма
Всем привет. Сегодня я хотел бы поговорить об устройстве современных оптимизирующих компиляторов. Я никогда не публиковался на Хабре ранее, но надеюсь, что мне удастся написать серию статей, которая просуммирует мой опыт в этой области. Коротко обо мне. Меня зовут Макс, и так получилось, что я вот уже 10 лет, почти с самого начала своей карьеры, занимаюсь оптимизирующими компиляторами. Я начинал…
Читать далее » -
Хабрахабр
[Перевод] Mojo может стать крупнейшим достижением в области разработки языков программирования за последние десятилетия
Drake: Python vs. Mojo Mojo — это новый язык программирования, основанный на Python, который устраняет проблемы производительности и развёртывания. Об авторе: Джереми Говард (Jeremy Howard) — Data Scientist, исследователь, разработчик, преподаватель и предприниматель. Джереми является одним из основателей исследовательского института fast.ai, занимающегося тем, чтобы сделать глубокое обучение более доступным, а также он является почётным профессором Университета Квинсленда. Ранее Джереми был выдающимся научным сотрудником в Университете…
Читать далее »