Ещё в мае 2022 года я переориентировал пару команд в Google на разработку полностью гомоморфного шифрования (вот объявление об этом в рассылке). С тех пор я участвовал в работе над многими проектами в этой области, в частности, руководил поддержкой на github.com/google/fully-homomorphic-encryption – это опенсорсный ПГШ-компилятор для C++. В этой статье даётся вводная информация о том, как при помощи этого инструмента компилировать программы с расчётом на ПГШ. Также пробежимся по тому, из чего этот компилятор состоит.
Рубрика «Компиляторы» - 3
Компилятор с полностью гомоморфным шифрованием от Google
2023-02-19 в 9:36, admin, рубрики: c++, FHE, компилятор, Компиляторы, криптография, оптимизация, Программирование, шифрованиеСоздаем свой собственный язык программирования с использованием 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, который реализует мою идею, ты его поправь немного и в продакшн, а то нас сроки поджимают".
Создаем свой собственный язык программирования с использованием LLVM. Часть 1: Лексический и синтаксический анализ
2023-01-28 в 14:38, admin, рубрики: c++, LLVM, open source, Компиляторы, ПрограммированиеОб авторе
Язык программирования Rave
2023-01-22 в 8:51, admin, рубрики: Rave, Ravelang, компилятор, Компиляторы, Программирование, Свой компилятор, свой язык программированияПриветствую всех читателей данной статьи.
Тут я постараюсь описать год усердной, тяжёлой работы на моим собственным компилятором языка программирования Rave.
Предыстория
Я уже много раз делал различные языки программирования - их создания стало для меня чем-то вроде хобби после учёбы.
Однако все мои языки программирования вплоть до Rave были не очень удачными - некоторые были слишком сложны в использовании, некоторые имели неудобный синтаксис и низкую скорость работы.
Rust 1.66.0: дискриминанты для перечислений с полями, black_box, cargo remove
2022-12-18 в 8:01, admin, рубрики: cargo, clippy, open source, release, Rust, rustc, rustdoc, rustfix, rustfmt, stable, выпуск версий, Компиляторы, новости технологий, перевод, Программирование, системное программирование, стабильная версия, языки программированияКоманда Rust рада сообщить о новой версии языка — 1.66.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.
Если у вас есть предыдущая версия Rust, установленная через rustup
, то для обновления до версии 1.66.0 вам достаточно выполнить команду:
rustup update stable
Если у вас ещё нет rustup
, то можете установить его со страницы на нашем веб-сайте, а также ознакомиться с подробным описанием выпуска 1.66.0 на GitHub.
Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать beta (rustup default beta
) или nightly (rustup default nightly
) канал. Пожалуйста, сообщайте обо всех встреченных вами ошибках.
Бесполезный и красиво ужасный язык программирования ALLang
2022-12-02 в 6:13, admin, рубрики: виртуальная машина, Компиляторы, Программирование, Си, трансляторы, эзотерический, язык ассемблера, язык программированияВведение
Примерно год назад я писал язык программирования под названием ALLang. Расшифровка его звучит так: Another LISP Language, что незамысловато даёт понимание его второсортности. Тем не менее, таковой язык всё же предлагает интересные особенности в своей реализации со стороны эзотерических языков. Писал я ALLang исключительно по фану. Но начнём мы пожалуй по порядку с его высокоуровневых особенностей и будем постепенно углубляться вниз, в самую его крамешную бездну эзотерического внутреннего выполнения.
Внешние особенности
Выжимаем все соки: PGO Оптимизация ядра Linux
2022-11-22 в 9:00, admin, рубрики: linux, linux kernel, ruvds_статьи, Блог компании RUVDS.com, высокая производительность, высоконагруженные системы, Компиляторы, Настройка Linux, оптимизация, Программирование
Сложность вычислительных задач и систем растёт с каждым днём. Для бизнеса ускорение кода даже на пару процентов даёт улучшение производительности, заметное снижение издержек и уменьшение задержки(latency). В первую очередь это касается мобильных и встраиваемых систем, высоконагруженных серверов, научных вычислений и 3D-графики. Так был разработан относительно перспективный и молодой метод оптимизации — Profile-Guided Optimization, далее просто PGO-оптимизация. Данный метод эффективно используют такие известные компании, как Google, Mozilla Foundation, Intel, Oracle, IBM и другие. Практически ни один современный веб-браузер не обходится без PGO-оптимизации.
Не так давно компанией Google был предложен набор патчей, включающий PGO-оптимизацию в ядре Linux. Мною был протестирован этот набор патчей в работе и доработан. Мне хотелось бы рассказать об этом методе оптимизации ядра Linux, о том, с какими трудностями можно столкнуться, и как их решить.
Если вас заинтересовала эта тема, вам интересно развитие технологий и тренды крупных компаний, то добро пожаловать под кат.
Читать полностью »
Как оценить реальную производительность своего кода
2022-11-21 в 9:00, admin, рубрики: C, c++, Compiler Explorer, gcc, godbolt, il, Intermediate Language, LLVM, objdump, ruvds_статьи, Sharplab, uiCA, анализатор кода, ассемблер, бенчмарк кода, Блог компании RUVDS.com, декомпиляция, дизассемблер, Компиляторы, межпроцедурная оптимизация, оптимизация кода, Программирование, промежуточный язык
Код, который мы пишем, и который будет исполнен процессором, — две разные вещи. На уровне ассемблера существует миллион вариантов, в каком виде интерпретировать и запустить высокоуровневые команды. Более того, современные компиляторы сильно оптимизируют код, а результат этой оптимизации похож на магию.
Читать полностью »
Сборка мусора в неисправных JVM, проактивный подход
2022-11-18 в 14:00, admin, рубрики: cassandra, cloud, data, elasticsearch, java, jvm, netflix, node.js, oom, python, timeweb_статьи_перевод, Блог компании Timeweb Cloud, дамп, Компиляторы, логи, ОС, Программирование, файл, хранение данных
Команда Netflix Cloud Data Engineering работает с различными приложениями для JVM, включая такие популярные хранилища данных, как Cassandra и Elasticsearch. Хотя большинство наших кластеров стабильно работают, обходясь выделенной им памятью, иногда «запрос смерти» или ошибка в самом хранилище данных приводят к перерасходу памяти, что может спровоцировать лишние циклы сборки мусора или даже привести к исчерпанию памяти в JVM.
Читать полностью »