Мининовости
Мелкие изменения: стабилизация API, новые методы и impl, правки Cargo.
В core::ascii::Char перенесли методы проверки ASCII из u8 и добавили константы MIN и MAX. Теперь работу с ASCII-символами можно вести без промежуточного преобразования в u8.
cargo package теперь всегда использует каталог артефактов рабочей области. Раньше при явно заданном CARGO_TARGET_DIR кэш сборки зависимостей использовался, а без него команда собирала всё заново во внутреннем каталоге.
Еженедельный отчёт о производительности компилятора Rust. Разбор сделал @kobzol.
При ключе cargo-features с неизвестным признаком Cargo теперь выдаёт сообщение, объясняющее, что список признаков устарел, вместо прежнего текста про недопустимое значение.
За нестабильной фичей -Zsection-timings отчёт cargo build --timings стал подробнее: он теперь показывает время фронтенда, генерации кода и линковки отдельно, а не только общее время вызовов rustc.
Крейтом недели выбран tur — эмулятор машины Тьюринга с интерфейсом в терминале. Дата — публикация первой версии на crates.io.
Стабилизирована фича unsigned_signed_diff. Она добавляет методы unsigned_abs и unsigned_sub: модуль значения и вычитание со знаковым числом без ручного преобразования типов.
Функция TypeId::of теперь стабильна в const-виде. Тип можно узнать во время компиляции, а не только во время выполнения.
Реализованы методы ControlFlow::continue_ok и break_ok, которые строят значение нужной ветви из произвольного типа.
Открыты три новых предложения: передача указателей на const в inline asm, включение Clang в состав llvm-tools и атрибут repr(ordered_fields). Все три пока обсуждаются.
Опубликован месячный отчёт по проекту GCC Front-End for Rust — компилятору Rust на основе GCC. Работа ведётся начиная с 2023 года.
Реализован макрос hash_map!, создающий HashMap с элементами из перечисленных пар. Он удобен в тестах и при описании таблиц: не нужно объявлять промежуточную переменную и вызывать два метода подряд.
Метод slice::swap_with_slice помечен как const, что позволяет использовать его в константных вычислениях. Функционально для обычного кода ничего не меняется.
Опубликован еженедельный отчёт о производительности компилятора Rust. Разбор сделал @panstromek: регрессии и улучшения по итогам сравнения сборок на наборе бенчмарков.
Открыт новый RFC с предложением переработать transmute. Предложение пока на стадии обсуждения — это не утверждённое изменение языка.