Ещё в мае 2022 года я переориентировал пару команд в Google на разработку полностью гомоморфного шифрования (вот объявление об этом в рассылке). С тех пор я участвовал в работе над многими проектами в этой области, в частности, руководил поддержкой на github.com/google/fully-homomorphic-encryption – это опенсорсный ПГШ-компилятор для C++. В этой статье даётся вводная информация о том, как при помощи этого инструмента компилировать программы с расчётом на ПГШ. Также пробежимся по тому, из чего этот компилятор состоит.
Рубрика «Компиляторы» - 4
Компилятор с полностью гомоморфным шифрованием от 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.
Читать полностью »
