
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
SiTech — веброзробка з підтримкою AI
Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.