Изучение и понимание неопределённого поведения — важный шаг для разработчика C++, поскольку undefined behavior бывает источником серьёзных ошибок и проблем в программах. UB может проявляться в разных аспектах языка, включая операции с памятью, многопоточность, арифметические вычисления, работу с указателями и так далее.
Рубрика «Компиляторы» - 2
Подводные камни С++. Решаем загадки неопределённого поведения, ч. 1
2023-06-28 в 9:58, admin, рубрики: C, c++, compiler, UB, undefined, Unspecified, Блог компании МойОфис, Компиляторы, мойофис, С++, СофтПоговорим об оптимизирующих компиляторах. Сказ третий: неопределённое поведение и оптимизации
2023-06-14 в 14:00, admin, рубрики: LLVM, undefined behavior, КомпиляторыЭто цикл статей об оптимизирующих компиляторах вообще и LLVM в частности. Смотри все статьи данного цикла:
-
Неопределённое поведение
Вообще-то, третья статья данного цикла должна была рассказывать о конкретных оптимизациях. Но пока я прикидывал её план, стало ясно, что без освещения некоторых аспектов неопределённого поведения многое из дальнейших описаний будет непонятно. Поэтому сделаем ещё один осторожный шаг, прежде, чем окунаться в омут с головой.
Rust моей мечты — несостоявшийся язык
2023-06-11 в 7:24, admin, рубрики: c++, Rust, Исследования и прогнозы в IT, Компиляторы, Программирование, типизацияВ одном недавнем подкасте о том, кто сейчас главный в Rust, вновь всплыл вопрос о том, кому быть BDFL (великодушным пожизненным диктатором), и Джереми Соллер сказал (это был чемпионский заход на приз «за преуменьшение века»): «Я считаю, Грейдон забраковал бы некоторые вещи, которые всем нам сейчас нравятся». Этим он вторит другой дискуссии на redditЧитать полностью »
Поговорим об оптимизирующих компиляторах. Сказ второй: Доминирование
2023-05-28 в 14:00, admin, рубрики: LLVM, ssa, доминирование, КомпиляторыСегодня мы продолжаем наш разговор об оптимизирующих компиляторах для самых маленьких и не очень. Для тех, кто пока не в курсе происходящего, но желает приобщиться - я поставил себе задачу написать цикл вводных статей в эту область для совсем-совсем начинающих. Первую часть, где рассказывается об SSA-форме, можно и нужно прочитать здесь.
Сегодня мы поговорим о доминировании. Это одна из фундаментальных вещей, на которых стоит как теория компиляторов вообще, так и многие компиляторные оптимизации в частности. Пристегните ремни и запишите стоп-слово на бумажке, чтобы не забыть.
Читать полностью »
Язык Umka 1.0 и игровой фреймворк Tophat
2023-05-01 в 13:49, admin, рубрики: 2D-движок, C, игровой движок, интерпретатор, компилятор, Компиляторы, разработка игрПосле трёх лет неторопливой разработки вышла версия 1.0 моего скриптового языка UmkaЧитать полностью »
C++23 — финал, C++26 — начало
2023-02-20 в 9:00, admin, рубрики: C, c++, c++23, c++26, c23, compilers, exception, exception handling, iso, ranges, stacktrace, standard library, Блог компании Яндекс, Компиляторы, Программирование, С++, с++23, с++26, с23С момента моей прошлой публикации состоялось уже две встречи международного комитета по стандартизации C++.
Комитет занимался полировкой C++23:
static operator[]
;static constexpr
вconstexpr
-функциях;- безопасный range-based for;
- взаимодействие
std::print
с другими консольными выводами; - монадический интерфейс для
std::expected
; static_assert(false)
и прочее.
И прорабатывал новые фичи C++26:
std::get
иstd::tuple_size
для агрегатов;#embed
;- получение
std::stacktrace
из исключений; - stackful-корутины.
Создаем свой собственный язык программирования с использованием LLVM. Часть 3: Генерация кода
2023-02-19 в 16:30, admin, рубрики: c++, LLVM, open source, Компиляторы, ПрограммированиеВ предыдущих статьях мы рассмотрели и реализовали лексический и синтаксический анализаторы, а так же реализовали семантический анализ для нашего учебного языка, что дало нам основу. В данной статье мы продолжим начатое и реализуем генерацию кода для LLVM IR.
LLVM
Компилятор с полностью гомоморфным шифрованием от Google
2023-02-19 в 9:36, admin, рубрики: c++, FHE, компилятор, Компиляторы, криптография, оптимизация, Программирование, шифрованиеЕщё в мае 2022 года я переориентировал пару команд в Google на разработку полностью гомоморфного шифрования (вот объявление об этом в рассылке). С тех пор я участвовал в работе над многими проектами в этой области, в частности, руководил поддержкой на github.com/google/fully-homomorphic-encryption – это опенсорсный ПГШ-компилятор для C++. В этой статье даётся вводная информация о том, как при помощи этого инструмента компилировать программы с расчётом на ПГШ. Также пробежимся по тому, из чего этот компилятор состоит.
Создаем свой собственный язык программирования с использованием LLVM. Часть 2: Семантический анализ
2023-02-04 в 9:55, admin, рубрики: c++, LLVM, open source, Компиляторы, ПрограммированиеВ предыдущей статье мы закончили на том, что мы написали лексический и синтаксический анализаторы для нашего учебного языка. В данной статье мы продолжим начатое и рассмотрим следующую стадию анализа исходного кода программы — семантический анализ.
Семантический анализ
Основная задача семантического анализа заключается в проверки того, что программа корректна с точки зрения языка, например:
-
Все переменные в программе объявлены;
-
Все выражения совершаются над корректными типами;
Жуткий сценарий использования ChatGPT
2023-02-03 в 18:11, admin, рубрики: asic design, chatgpt, fpga, high-level synthesis, logic synthesis, OpenAI, SystemVerilog, Verilog, vhdl, будущее здесь, искусственный интеллект, Компиляторы, Питон, Производство и разработка электроникиВчера у меня в ленте на фейсбуке (жаль что в закрытом посте) проявился еще один аспект ChatGPT, жуть которого я не вполне осознавал. Представьте, что ваш менеджер присылает вам емейл: "я вот тут сгенерил с помощью ChatGPT код на языке описания аппаратуры SystemVerilog, который реализует мою идею, ты его поправь немного и в продакшн, а то нас сроки поджимают".