Rust 1.99.1: исправления FFI и проверка готовой программы
Rust 1.99.1 исправляет регрессии, в том числе неверную передачу результата bool через FFI на x86_64. Для владельца программы задача состоит не только в обновлении компилятора: нужно установить, какой сборкой инструментария создан именно тот файл, который получают пользователи. Версия Rust на компьютере разработчика этого не доказывает.
Что исправили и почему это касается поставки
Релиз Rust 1.99.1 от 15 октября 2026 года описывает три регрессии: отсутствие wcslen у части целевых платформ, возврат bool через FFI на x86_64 и загрузку libLLVM линковщиком rust-lld в определённом способе запуска на macOS. Это разные области проверки, а не сообщение, что любая программа на Rust работала неправильно.
Двумя неделями ранее, 1 октября, вышел Rust 1.99.0, где среди новшеств появилась возможность определять вариативные функции с C ABI. Не следует смешивать новую возможность с исправлениями последующего точечного выпуска. Сам анонс 1.99.1 называет регрессии прежних выпусков, не приписывая все три одной версии.
Как перевести список исправлений в вопросы к продукту
| Участок из анонса | Что выяснить у команды | Какое подтверждение запросить | Чего оно не доказывает |
|---|---|---|---|
| FFI bool на x86_64 | Есть ли Rust-функции, возвращающие bool через внешнюю границу | Описание интерфейса и результат проверки собранной библиотеки с вызывающей стороной | Что все остальные типы и платформы проверены |
| wcslen на части targets | Попадает ли используемая целевая платформа в затронутый путь сборки | Журнал сборки для реально выпускаемого target | Что успешная сборка на другом компьютере относится к этой поставке |
| rust-lld и libLLVM на macOS | Как вызывается инструментарий в сборочной среде | Зафиксированный способ запуска и завершённая сборка | Что установленный rustup автоматически пересобрал приложение |
| Готовый дистрибутив | Из какой сборки взят распространяемый файл | Связь версии инструментария, задания сборки и контрольной суммы файла | Что файл уже установлен у каждого пользователя |
Таблица — наша схема проверки поставки, а не полный перечень затронутых продуктов. Если команда не использует описанную границу FFI или соответствующий target, это нужно записать как результат анализа зависимостей. Не надо придумывать неисправность ради формального обновления отчёта.
Учебный пример: компилятор новый, библиотека старая
Представим условное настольное приложение с модулем расчёта на Rust. Разработчик обновил локальный инструментарий, а установщик продолжает брать библиотеку из прежнего каталога результатов сборки. Проверка версии компилятора проходит, но пользователь получает тот же файл. Это вымышленный пример ошибки выпуска, не случай клиента студии.
Разрешить сомнение помогает цепочка происхождения: исходный код, параметры целевой платформы, задание сборки, полученная библиотека, состав установщика. Контрольная сумма позволяет сопоставить конкретные файлы. Она не оценивает правильность программы сама по себе, зато не даёт незаметно заменить предмет проверки.
FFI проверяется вместе с вызывающей стороной
Успешная компиляция не подтверждает поведение внешнего интерфейса. Для проектной проверки подготовьте разрешённый тест, в котором реальная вызывающая сторона получает оба ожидаемых логических результата. Отдельно согласуйте, что считать правильным ответом при ошибке. Не подменяйте такую проверку демонстрацией на другом интерфейсе.
Часть зависимостей может поставляться готовыми файлами. Тогда нужен ответ поставщика о происхождении библиотеки и применимой исправленной сборке. Переключение Rust в основном репозитории не является свидетельством пересборки стороннего компонента. Не требуется объявлять такой компонент уязвимым без подтверждения затронутого условия.
Что сохранить при следующем выпуске
- Перечислите выпускаемые платформы и внешние интерфейсы Rust-модулей.
- Сопоставьте их с условиями исправлений из анонса.
- Выберите поддерживаемый инструментарий с нужными исправлениями, проверив последующие выпуски.
- Пересоберите затронутые компоненты в контролируемой среде.
- Проверьте внешний вызов на полученном файле.
- Сопоставьте проверенный компонент с содержимым дистрибутива.
- Сохраните подтверждения и список ещё не проверенных поставок.
Номер 1.99.1 в этой новости обозначает конкретное исправление, а не бессрочную рекомендацию устанавливать именно эту версию. Перед плановым обновлением снова проверьте актуальные выпуски. Переход на более новый инструментарий также требует проверки вашего продукта.
В разработке настольной программы закрепляйте состав поставки как часть приёмки. Для интеграции компонентов описывайте внешние типы и ошибки, а при доработке существующего решения передавайте сведения о сборке вместе с исходниками. Тогда вопрос «исправление дошло до клиента?» получает проверяемый ответ.
Вопросы и ответы
Что такое FFI в Rust и почему обновления компилятора мало?
FFI связывает Rust с кодом через внешний интерфейс. Исправление компилятора должно попасть в заново собранный и действительно распространяемый компонент; локальная версия инструментария этого не подтверждает.
Как проверять Rust FFI с C после исправления bool?
Сопоставьте условия исправления с направлением вызова и платформой вашей библиотеки. Затем проверяйте ожидаемые результаты вместе с реальной вызывающей стороной на том файле, который войдёт в поставку.
Достаточно проверить версию компилятора Rust?
Это только часть сведений о сборке. Для готовой программы нужно связать инструментарий и задание сборки с конкретным дистрибутивом, включая сторонние библиотеки.
Читайте также
Go: октябрьские исправления HTTP/2 и проверка готовой сборки
БезопасностьПосле аудита всё исправили: как принять результат проверки
РазработкаКак поставить задачу программисту: пример и проверка
КомментарииChrome обновляется раз в две недели: что менять в проверке сайта
КомментарииAstro 7.3: что проверить в собственном Cloudflare Worker
КомментарииRedis 8.12 RC: что проверять у сжатых битовых карт