В конце октября 2024 года состоялся релиз открытого проекта Tinygo 0.34. Это компилятор языка программирования Go для маломощных систем, таких как микроконтроллеры и встраиваемые устройства, которым необходима генерация очень компактных исполняемых файлов и низкое потребление ресурсов. В проекте Tinygo компиляция для поддерживаемых целевых платформ реализована при помощи LLVM, а библиотеки функций заимствованы из основного инструментария проекта Go. Исходный код решения опубликован на GitHub под лицензией BSD.
Компиляторы *
Из исходного кода в машинный
Новости
Инженер Red Hat Никита Попов стал ведущим мейнтейнером проекта LLVM
Сообщество разработчиков единогласно одобрило и подтвердило назначение инженера Red Hat Никиты Попова официальным ведущим мейнтейнером проекта компилятора LLVM с открытым исходным кодом.
Релиз Python 3.13
7 октября 2024 года состоялся релиз стабильной версии языка программирования Python 3.13 с экспериментальным JIT-компилятором, улучшенным интерактивным интерпретатором на основе PyPy и экспериментальным режимом сборки free-threaded build mode. Поддержка этой ветки запланирована в течение полутора лет. Потом ещё три с половиной года для Python 3.13 будут выходить исправления с устранением уязвимостей.
Microsoft пообещала «невероятный прирост производительности» современных приложений Windows 11
Microsoft заявила, что приложения на основе Windows App SDK в Windows 11 теперь смогут работать значительно быстрее. Ранние тесты показывают улучшение времени загрузки до 50% и уменьшение размера пакета приложения в 8 раз.
Истории
Вышла первая бета-версия языка программирования Python 3.13.0b1
8 мая 2024 года вышла первая бета-версия языка программирования Python 3.13.0b1 (3.13.0 beta 1) для тестирования с экспериментальным JIT-компилятором и улучшенным интерактивным интерпретатором на основе PyPy.
В альфа выпуск языка программирования Python 3.13.0a6 встроен JIT-компилятор
Опубликован альфа выпуск языка программирования Python 3.13.0a6, в который включена экспериментальная реализация JIT-компилятора, позволяющая добиться существенного повышения производительности. Для активации JIT в CPython добавлена сборочная опция "--enable-experimental-jit". Для работы JIT требуется установка LLVM в качестве дополнительной зависимости.
Вышел CVBasic v0.1.0 — первый релиз компилятора Basic для приставки ColecoVision 1982 года выпуска
В конце февраля 2024 года разработчик Оскар Толедо (aka nanochess) представил CVBasic v0.1.0. Это проект компилятора Basic для портирования и создания игр на приставке ColecoVision 1982 года выпуска.
Ушёл из жизни швейцарский ученый Никлаус Вирт — разработчик Algol, Modula, Oberon и создатель Pascal
1 января 2024 года ушёл из жизни швейцарский ученый Никлаус Вирт (Niklaus Wirth) — специалист в области информатики, один из известнейших теоретиков в области разработки языков программирования, профессор компьютерных наук Швейцарской высшей технической школы Цюриха (ETHZ), лауреат премии Тьюринга, автор книг по алгоритмам и структурам данных, ведущий разработчик языков программирования Euler, PL360, Algol W, Modula, Modula-2, Oberon, Oberon-2 и Oberon-07 и создатель Pascal. Пионер информатики и популяризатор парадигмы структурного программирования умер на 90-м году жизни в своём доме в окружении семьи и близких.
Инженеры — о системном программировании и разработке микропроцессоров в подкасте «Битовые маски»
Разработчики ежедневно пользуются инструментами, которые создают системные программисты. Но мало кто погружен в детали устройства компиляторов, дебаггеров виртуальных машин, симуляторов и тем более — работал над их созданием. С новым подкастом «Битовые маски» вы познакомитесь с историей развития системного программирования и убедитесь, что в этой сфере много интересных и нерешенных задач. Под катом — тизеры первых выпусков.
Релиз LLVM 17.0
Android-разработчики могут тестировать в своих проектах компилятор K2
Google сообщила в своём блоге, что Android-разработчики могут тестировать в своих проектах компилятор K2 для языка программирования Kotlin. Это поможет понять, готов ли проект к переезду на Kotlin 2.0.
Вышел язык программирования Rust 1.70
Опубликован релиз языка программирования общего назначения Rust 1.70. Также была опубликована серия статей о внутреннем устройстве Rust.
AMD запустила проект openSIL для разработки прошивок
AMD представила открытый проект openSIL (Open-Source Silicon Initialization Library), в рамках которого развивается набор открытых библиотек с компонентами для упрощения создания прошивок.
Ближайшие события
Вышла утилита cURL 8.0
Состоялся релиз утилиты cURL 8.0. Код проекта распространяется под открытой лицензией Curl (вариант лицензии MIT).
Кембридж: особенность компиляторов позволяет добавлять в исходный код вредоносы и обходить ручной аудит
Исследователи Кембриджского университета описали способ вставки в исходный код программ уязвимости или вредоносного кода, который позволяет успешно проходить ручной аудит. Фактически, они рассказали о методе атак, который использует особенность компиляторов.
Facebook представила Superpack, технологию сжатия данных для мобильных приложений
IT-гигант Facebook разработал технологию асимметричного сжатия данных Superpack, сообщает пресс-релиз компании. Технология сочетает анализ компилятора и сжатие данных для оптимизации хранения информации.
В компании это решение объясняют тем, что приложения продолжают увеличиваться в размерах, и это плохо сказывается на производительности мобильных устройств, поэтому такие компиляторы, как Deflate и LZMA, несмотря на то, что на сегодняшний день справляются с оптимизацией данных, в скором времени потеряют актуальность.
Superpack основана на теории сложности Андрея Колмогорова, согласно которой информационное содержание фрагмента данных определяется размером самой короткой программы, которая может генерировать эти данные. Facebook не претендует на звание первопроходцев, базисы теории время от времени используют многие другие компании для организации данных, однако Superpack стремится усовершенствовать нынешние технологии, используя как методы компилятора, так и современные подходы оптимизации данных.
Chrome 91 рендерит страницы на 23% быстрее. Спасибо третьему компилятору
// The Sparkplug compiler (abridged).
for (; !iterator.done(); iterator.Advance()) {
VisitSingleBytecode();
}
Новый неоптимизирующий JavaScript-компилятор Sparkplug напрямую компилирует JavaScript в машинный код, без всяких промежуточных представлений, за однострочный проход. Это одна из оптимизаций в движке V8 Участники опенсорсного проекта Chromium из компании Google только что выкатили новую версию браузера Chrome 91 на стабильном канале. Как обычно, в новой версии сделано много изменений. Например, десктопный режим на больших мобильных экранах включается по умолчанию, улучшен дизайн веб-форм (поля, чекбоксы, кнопки), улучшены интерфейсы File System Access API, сделано автоматическое открытие PWA по ссылкам на веб-сайтах через манифест
capture_links
, реализована экспериментальная поддержка продвинутого медиапротокола WebTransport (вместо более медленного WebSocket) и многое другое. Кроме этих мелких, есть и очень серьёзное изменение, которое коснётся каждого.Конечно, это изменение ожидаемо, если следить за документацией на бета- и альфа-каналах. Но остальные люди сегодня могут с удивлением обнаружить, что после обновления Chrome стал рендерить страницы гораздо быстрее.
Компиляторная бомба: 29 байт кода → 16 ГБ .exe
main[-1u]={1};
Это 14 байт. По условиям конкурса к результату добавляется 15 обязательных байт (дополнительный параметр для компилятора).
Выпуск Rust 1.44.0: cargo tree, async/await в no_std, Unicode 13 и vec![] в const-контексте
Данный анонс является компиляцией черновика анонса и подробных примечаний к выпуску. Официальный анонс короче, чем обычно:
This is a shorter blog post than usual: in acknowledgement that taking a stand against the police brutality currently happening in the US and the world at large is more important than sharing tech knowledge, we decided to significantly scale back the amount of promotion we're doing for this release.
The Rust Core Team
Команда Rust выпустила новую версию, 1.44.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.
Если вы установили предыдущую версию Rust средствами rustup
, то для обновления до версии 1.44.0 вам достаточно выполнить следующую команду:
rustup update stable
Если у вас ещё не установлен rustup
, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.
Вклад авторов
antoshkka 1210.0olegchir 910.0Andrey2008 785.2RustLangRu 563.6alizar 532.032bit_me 525.4tangro 449.4quasilyte 441.0zzeng 408.0Tereshkov 390.0