Представим, что у вас идеальный проект. Таски пилятся, компилятор компилирует, статические анализаторы анализируют, релизы релизятся. В какой‑то момент вы принимаете волевое решение открыть древний файл, в который никто не залезал уже много лет, и видите, что он в кодировке Windows-1251. При том, что весь проект уже давно перешёл на UTF-8. «Непорядок!» — думаете вы, и лёгким движением руки меняете кодировку. На следующий день на вашем тестовом сервере случается локальный апокалипсис. Думаете, такого не может быть? Тогда предлагаю это обсудить.
Рубрика «компилятор»
Насекомое 13 лет сидит в вашем компиляторе и не собирается оттуда вылезать
2024-07-08 в 11:29, admin, рубрики: c++, gcc, компиляторОпасность устарела: несколько важных нюансов в новых стандартах C++
2024-06-27 в 14:17, admin, рубрики: C, c++, C++20, cybersecurity, LLVM, qt, stm32, undefined behavior, безопасность, информационная безопасность, кибератаки, кибербезопасность, компилятор, Компиляторы, Программирование, разработка, Си, системное программирование, статический анализ кода, уязвимости, языки программированияВ этой статье я со своих позиций Senior Software Architect и Security Champion в микроядерной операционной системе KasperskyOS рассмотрю кейсы-ловушки, в которые можно попасть практически в любом из стандартов, и покажу, что меняется в С++20/23/26, — уменьшается ли количество кейсов с неопределенным поведением, и становится ли С++ безопаснее.
Компилятор за выходные: синтаксические деревья
2024-01-14 в 16:43, admin, рубрики: lexer, parser, азы программирования, компилятор, программирование для пятого класса, синтаксическое деревоВам когда-нибудь приходилось задаваться вопросом, как работает компилятор, но так руки и не дошли разобраться? Тогда этот текст для вас. Мне тоже не доводилось заглядывать под капот, но тут так случилось, что мне нужно прочитать курс лекций о компиляторах местным третьекурсникам. Кто встречался с некомпетентными преподавателями? Здравствуйте, это я :)
Итак, чтобы самому разобраться в теме, я собираюсь написать транслятор с эзотерического языка программирования wend (сокращение от week-end), который я только что сам придумал, в обычный ассемблер. Задача уложиться в несколько сотен строк питоновского кода. Основной репозиторий Читать полностью »
![Как я вошёл в клуб бага 323 - 1 Как я вошёл в клуб бага 323 - 1](https://www.pvsm.ru/images/2023/08/18/kak-ya-voshyol-v-klub-baga-323.png)
Это история о баге, который бы заставил вас рвать на себе волосы. Из-за такого бага вы можете подумать: «Но это невозможно, должно быть, компилятор сломался, других вариантов нет!»
А баг компилятора — это серьёзно: за двенадцать лет программирования на C++ я обнаружил (и написал отчётЧитать полностью »
Язык Umka 1.0 и игровой фреймворк Tophat
2023-05-01 в 13:49, admin, рубрики: 2D-движок, C, игровой движок, интерпретатор, компилятор, Компиляторы, разработка игр![Платформер-головоломка, написанный на Tophat (автор — Святослав Шатунов) Платформер-головоломка, написанный на Tophat (автор — Святослав Шатунов)](https://www.pvsm.ru/images/2023/05/01/yazyk-Umka-1-0-i-igrovoi-freimvork-Tophat.png)
После трёх лет неторопливой разработки вышла версия 1.0 моего скриптового языка UmkaЧитать полностью »
Компилятор с полностью гомоморфным шифрованием от Google
2023-02-19 в 9:36, admin, рубрики: c++, FHE, компилятор, Компиляторы, криптография, оптимизация, Программирование, шифрованиеЕщё в мае 2022 года я переориентировал пару команд в Google на разработку полностью гомоморфного шифрования (вот объявление об этом в рассылке). С тех пор я участвовал в работе над многими проектами в этой области, в частности, руководил поддержкой на github.com/google/fully-homomorphic-encryption – это опенсорсный ПГШ-компилятор для C++. В этой статье даётся вводная информация о том, как при помощи этого инструмента компилировать программы с расчётом на ПГШ. Также пробежимся по тому, из чего этот компилятор состоит.
Язык программирования Rave
2023-01-22 в 8:51, admin, рубрики: Rave, Ravelang, компилятор, Компиляторы, Программирование, Свой компилятор, свой язык программированияПриветствую всех читателей данной статьи.
Тут я постараюсь описать год усердной, тяжёлой работы на моим собственным компилятором языка программирования Rave.
Предыстория
Я уже много раз делал различные языки программирования - их создания стало для меня чем-то вроде хобби после учёбы.
Однако все мои языки программирования вплоть до Rave были не очень удачными - некоторые были слишком сложны в использовании, некоторые имели неудобный синтаксис и низкую скорость работы.
Что полезно знать Java-разработчику про вывод типов
2021-11-13 в 14:26, admin, рубрики: generic, java, вывод типов, компилятор, лямбды, портал в ад, ПрограммированиеВ Java 8 кардинально переработали процедуру вывода типов выражений. В спецификации появилась целая новая глава на эту тему. Это весьма сложная штука, изложенная скорее на языке алгебры, чем на языке нормальных людей. Не каждый программист готов в этом разобраться. Я, разработчик IDE, которому приходилось ковыряться в соответствующем коде, к своему стыду тоже довольно плохо разбираюсь в этой теме и понимаю процесс только по верхам. Причём сложно не только мне, но и авторам компилятора Java. После выхода Java 8 обнаружились десятки багов, когда поведение компилятора не соответствовало спецификации, либо текст спецификации был неоднозначен. В средах разработки для Java ситуация обстояла не лучше: там тоже были баги, причём другие, поэтому код мог отображаться ошибочным в вашей IDE, но успешно компилироваться. Или наоборот. С годами ситуация улучшилась, многие баги исправили, хотя всё ещё в спецификации остались тёмные углы.
Безопасная многопоточность в Rust
2021-09-21 в 14:25, admin, рубрики: deadlock, Rust, гонка данных, компилятор, многопоточность, потоки, Программирование, Проектирование и рефакторинг, трейтыПростой интерпретатор Lisp на Umka
2020-09-26 в 18:22, admin, рубрики: compiler, interpreter, интерпретатор, компилятор, Компиляторы, Программирование, функциональное программированиеРазработка моего статически типизированного скриптового языка Umka вошла в ту стадию, когда потребовалась проверка языковых возможностей на более сложных примерах, чем скрипты в пару десятков строк. Для этого я решил реализовать на своём языке интерпретатор Lisp. На это меня вдохновил педагогический эксперимент Роба Пайка, одного из создателей языка Go. Недавно Пайк опубликовал маленький интерпретатор Lisp на Go. Особенно впечатлило замечание Пайка, что описание интерпретатора заключено на одной странице 13 древнего Читать полностью »