LLVM 22.1.0 вийшов 24 лютого 2026 року й об’єднав зміни LLVM, Clang, LLD, MLIR та інших підпроєктів. Реліз додає нові можливості LLVM IR, розвиває Distributed ThinLTO і змінює окремі цільові платформи. Для команд важливішою за список функцій є перевірка сумісності всього toolchain.
LLVM IR отримав інструкцію ptrtoaddr
ptrtoaddr повертає адресну складову вказівника, але, на відміну від ptrtoint, не захоплює provenance. Це уточнює семантику оптимізацій для коду, який працює з адресами. Генератори IR та нестандартні front-end-и мають перевірити, чи коректно вони читають і створюють нові конструкції.
Змінилися деякі intrinsics та метадані
Аргумент вирівнювання вилучено з родини masked load, store, gather і scatter: атрибут align тепер розміщують на аргументі-вказівнику. Також метадані можна приєднувати до IFunc. Інструменти аналізу IR, власні passes та генератори bitcode потребують тестів на новій версії.
Distributed ThinLTO став практичнішим
Інтегрований Distributed ThinLTO розширює підтримку вхідних форматів і кешу для інкрементальних збірок. Bitcode у звичайних архівах може тимчасово видобуватися для розподіленої обробки, а thin archives не потребують цього кроку. Користь залежить від мережі, кешу й повторюваності збірок, тому її треба вимірювати.
WebAssembly змінює назву цілі WASI
Ціль wasm32-wasi перейменовано на wasm32-wasip1. Старий варіант ще розпізнається, але типовою реакцією є попередження про застарілість. Скрипти збірки, матриці CI та конфігурації пакетів краще оновити зараз, не очікуючи повного вилучення псевдоніма.
Clang має власний список несумісностей
LLVM і Clang версіонуються разом, але зміни front-end-а описано окремо. Серед них — нова діагностика, розвиток C++2c, зміни прив’язок і поведінки аналізаторів. Команда повинна читати release notes кожного компонента, який фактично використовує, включно з libc++, LLD і sanitizer-ами.
Оновлення перевіряють матрицею збірок
Корисно зібрати проєкт старим і новим LLVM, порівняти тести, попередження, розмір та продуктивність. Для WebAssembly дивіться огляд WASI 0.3, а для альтернативного компілятора — матеріал про міграцію на Rust 2024.
Що перевірити перед переходом
- зафіксуйте версії LLVM, Clang, LLD і libc++;
- перебудуйте сторонні бібліотеки;
- проганяйте sanitizer-и та статичний аналіз;
- оновіть назву цілі WASI;
- перевірте власні LLVM passes;
- порівняйте ThinLTO на реальному CI;
- розгортайте новий toolchain поетапно.
Першоджерело: офіційні примітки до LLVM 22.1.0.




Коментарі
Щоб залишити коментар, увійдіть через Google.