📰 IT Дайджест

#compiler

20 материалов

11. LLVM обсуждает включение ClangIR в сборку по умолчанию — время компиляции удвоится

ClangIR на базе MLIR может улучшить диагностику и оптимизации, но его сборка по умолчанию увеличит время компиляции Clang более чем вдвое. Пока речь только о сборке, не о включении по умолчанию. Нужен флаг -fclangir.

www.phoronix.com · #tool #clang #compiler #llvm

1. Атака trusting-trust через GNU strip на дистрибутив Linux

Исследователи показали, что атака trusting-trust возможна не только через компилятор, но и через утилиту strip. Одна скомпрометированная версия strip в бинарном seed NixOS заражает все последующие сборки, включая финальный графический установщик. Почти все бинарники получают бэкдор.

arxiv.org · #security #compiler #linux #security #supply-chain

5. Патч GCC для Zen 5 даёт прирост 12% в SPEC CPU

Инженер AMD предложил двухстрочный патч для GCC, корректирующий стоимость ошибочного предсказания ветвлений для Zen 4 и Zen 5. В SPEC CPU 544.nab_r на Zen 5 получено +12%, на Zen 4 +9% при сборке с -O3 -march=native -flto. Патч войдёт в GCC 17 или 16.3.

www.phoronix.com · #infra #amd #compiler #gcc #performance #zen5

13. В nightly Rust тестируют ограничения на реализации трейтов и мутацию полей

В nightly Rust появился для тестирования RFC 3323: impl_restriction ограничивает область реализации трейта (например, impl(crate)), а mut_restriction — область мутации поля (pub mut(crate)). Это более прямой вариант sealed trait и геттеров, с понятными ошибками компилятора; работает и для enum-вариантов, и для union.

blog.rust-lang.org · #tool #compiler #language #rust

14. GCC 16.2 выходит со 102 исправлениями и стабилизирует Zen 6, Algol 68 и C++20 по умолчанию

Второй стабильный релиз GCC 16 принёс более сотни багфиксов. Среди нововведений GCC 16: экспериментальный HTML-вывод ошибок, фронтенд Algol 68, поддержка AMD Zen 6 и Instinct MI300, C++20 по умолчанию. 16.2 — чисто стабилизирующий патч.

www.phoronix.com · #tool #compiler #gcc #linux

7. Rust включил следующую версию borrow checker на nightly — Polonius

Подробности не раскрыты — известно только, что на nightly-канале Rust стала доступна альфа-версия Polonius, следующей итерации borrow checker. Ожидается, что новый анализатор ослабит некоторые ограничения текущего borrow checker.

blog.rust-lang.org · #tool #compiler #rust

2. LLVM получил x86-версию LFI для sandbox внутри процесса

В LLVM upstream приняли x86/x86_64 target для Lightweight Fault Isolation — техники, которая позволяет песочить native-код прямо внутри процесса. До этого аналогичный target уже был для AArch64; теперь исследовательская работа Stanford добралась и до x86, то есть до той архитектуры, где боль обычно приходит не только с производительностью, но и с легаси.

www.phoronix.com · #infra #compiler #in-process #lfi #llvm #sandboxing

2. Postgres переписали на Rust и прогнали через 100% regression tests

Проект pgrust от malisper заявляет, что уже проходит все regression tests PostgreSQL. Это тот редкий случай, когда «переписали базу на Rust» подкреплено не лозунгом, а конкретной метрикой из тестового набора. Конечно, до продакшена еще далеко, но репозиторий выглядит как нормальный способ посмотреть, насколько сложно угробить 30 лет C-кода и не заметить.

github.com · #tool #compiler #database #postgres #rust

3. QBE 1.3: маленький компиляторный бэкенд добавил метапрограммирование и поддержку новых платформ

LWN пишет про релиз QBE 1.3 — компактного compiler backend, который позиционируют как более вменяемую альтернативу LLVM и GCC. У проекта SSA-IR, C ABI и уже есть фронтенды вроде Hare и cproc; теперь авторы докручивают метапрограммирование, производительность и кроссплатформенность. Приятно, когда кто-то все еще делает инструменты, которые можно понять без шаманского диплома.

lwn.net · #tool #backend #compiler #ssa

1. crustc: rustc, переведённый на C

На GitHub выложили crustc — попытку перевести весь `rustc` на C. Репозиторий уже собрал 190 баллов на HN и 33 комментария, что обычно означает одно: людям очень хочется посмотреть, где тут шутка, а где боль. Если это дойдёт до сборки, получится занятный экспонат из серии «мы взяли сложный компилятор и начали разбирать его на винтики».

github.com · #tool #c-transpiler #compiler #github #rustc

1. Zig поменял bitCast и подкрутил LLVM-бэкенд

В devlog за 25 июня команда Zig пишет про новые semantics для bitCast и пачку улучшений в LLVM backend. Для языка это не косметика: такие вещи обычно всплывают в местах, где компилятор раньше делал что-то слишком «магическое», а теперь пытаются сделать это менее хрупким.

ziglang.org · #tool #backend #compiler #language #llvm #zig

6. BASIC09 получил front-end для LLVM

Для BASIC09 — языка почти из 1980 года, родом с Motorola 6809 и OS-9 — появился front-end к LLVM. Теперь этот старый BASIC можно компилировать в современный стек LLVM и запускать не только на музейном железе, но и на актуальных платформах. Ностальгия, которая внезапно умеет в нормальный компилятор.

www.phoronix.com · #tool #6809 #basic #compiler #llvm #retro

4. FIL-C показывает, как безопасно встраивать inline assembly

В `Memory Safe Inline Assembly` команда FIL-C пытается ответить на старый вопрос: как дать низкоуровневый доступ к asm и не открыть дежурную дыру в память. Материал про то, как можно ограничивать inline assembly так, чтобы компилятор и модель безопасности не делали вид, будто всё хорошо. Тема нишевая, но полезная: это уже не «asm — зло», а «как сделать так, чтобы зло хотя бы было под контролем».

fil-c.org · #infra #compiler #inline-assembly #memory-safety #rust #security

9. Паттерн компактного LR(1)-парсера оказался проще IELR(1)

На Lobsters обсуждают статью про APLR(1) — алгоритм генерации компактных LR(1)-парсеров, который автор считает проще и мощнее, чем IELR(1). Это уже совсем не попса, а внутренняя кухня генераторов парсеров, где отличие между «работает» и «работает без лишней памяти» и есть смысл существования статьи. Для любителей компиляторов это почти развлекательное чтение, только без шуток про блок-схемы.

branchtaken.com · #tool #algorithm #compiler #lobsters #lr #parsing

2. NVIDIA предлагает ускорить bootstrap GCC на 43%

Инженер NVIDIA Kyrylo Tkachov прислал патч, который сокращает время configure примерно на 43% для native GCC builds. По его замерам общий wall time bootstrap падает примерно на 15% — то есть компилятор, который сам себя собирает, наконец-то меньше делает вид, что ему нужна вечность.

www.phoronix.com · #tool #build #compiler #gcc #performance

1. Как Linear умудряется открываться почти мгновенно

Разбор от performance.dev копает не в магию, а в обычные инженерные трюки: виртуализация списков, агрессивный кэш и аккуратная работа с рендером. Судя по 358 баллам на HN и 162 комментариям, народ любит не только жаловаться на тормоза, но и читать, как их чинят у других.

performance.dev · #tool #breakdown #compiler #engineering #linear #performance

4. Warren's Abstract Machine пересобрали в виде учебного разборa

На GitHub лежит wambook — Tutorial Reconstruction про Warren's Abstract Machine, то есть про классическую машину для выполнения Prolog. Судя по формату, это не очередной «посмотрите мой гениальный блог», а вполне прикладной реконструктор, который полезен тем, кто хочет понять, как такие интерпретаторы реально устроены внутри.

github.com · #tool #asm #compiler #tutorial

8. Почему inlining heuristics — это не магия, а набор компромиссов

Статья Бернштейна — это разбор того, как компиляторы решают, что инлайнить, а что нет. Без маркетинговой пены: эвристики, стоимость роста кода, влияние на кэш и почему «просто инлайнить всё» обычно заканчивается плохо.

bernsteinbear.com · #blog #compiler #heuristics #inlining

8. GCC начал выкидывать часть APX-фич для будущих Intel Nova Lake и Diamond Rapids

В GCC смержили тюнинг, который отключает некоторые возможности Intel Advanced Performance Extensions для будущих Nova Lake и Diamond Rapids. Причина будничная и неприятная: бенчмарки показали, что часть APX-фич просто не даёт заметного профита.

www.phoronix.com · #infra #apx #compiler #gcc #intel #performance

2. В Semianalysis разбирают, как искать miscompile'ы в компиляторах

Статья про охоту на miscompile'ы — случаи, когда компилятор генерирует неправильный код, хотя программа сама по себе корректна. Тема скучная ровно до того момента, пока такой баг не ломает прод в самых веселых местах, а потом уже всем не до шуток: авторы копаются в том, как это ловить и воспроизводить.

newsletter.semianalysis.com · #tool #compiler #miscompile #optimization