Назад
Rust 1.99.1 виправляє регресії в лінкуванні wcslen, поверненні FFI bool та rust-lld на macOS
SiTech AI Team2 хв читання

Rust 1.99.1 виправляє регресії в лінкуванні wcslen, поверненні FFI bool та rust-lld на macOS

Rust 1.99.1 — це точковий випуск, який виправляє три регресії: фолбек для wcslen, повернення FFI bool на x86_64 та завантаження libLLVM для лінкера rust-lld на macOS.

Що виправляє Rust 1.99.1

Команда Rust опублікувала Rust 1.99.1 як новий точковий випуск. Випуск виправляє три регресії, згадані з попередніх версій, серед яких проблеми, що стосувалися цілей UEFI, FFI-коду x86_64 та конфігурацій лінкування macOS.

У деяких проєктах для цілі Rust могли виникати помилки лінкування через відсутній символ wcslen. Тепер функція представлена в бібліотеці Rust compiler-builtins як фолбек. Проблема виникла тому, що пас loop-idiom-wcslen LLVM може під час оптимізації вставляти виклики wcslen, а для деяких цілей ця функція недоступна ні в libc, ні деінде. Зокрема, цілі UEFI були зламані для будь-якого проєкту, який використовував std, оскільки деякі з цих викликів були вставлені у попередньо зкомпільовану стандартну бібліотеку, також зразки коду користувача могли спричинити ту саму проблему.

Повернені значення та завантаження лінкера

Функції Rust, які через FFI повертають bool, могли залишати біти з 1 по 7 в регістрі повернення невизначеними, що означало, що викликуючі могли спостерігати інші недійсні значення, крім 0 або 1. Тип повернення тепер знову позначений для розширення нулем, як вимагає ABI.

Окремо, rust-lld не зміг запуститися на macOS, коли компілятор викликався без проксі rustup, оскільки не існувало прямого параметра для шляху пошуку відповідної бібліотеки. Rust 1.99.1 тепер збирає rust-lld з записом rpath для каталогу, що містить libLLVM.dylib.

Як оновитися та протестувати

Користувачі, які встановили попередню версію через rustup, можуть перейти на 1.99.1 за допомогою rustup update stable. Користувачі, у яких немає rustup, можуть отримати його з відповідної сторінки на вебсайті Rust. Команда випусків Rust також закликала людей тестувати майбутні випуски, використовуючи канали beta та nightly, локально та в CI, та повідомляти про будь-які знайдені помилки. Команда подякувала всім, хто зробив внесок у 1.99.1, і сказала, що випуск був би неможливий без них.

Джерела: Lobsters

SSiTech

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.