Мининовости
Мелкие изменения: стабилизация API, новые методы и impl, правки Cargo.
На Windows появился способ задать режим показа окна у процесса, который запускает программа. Раньше это требовалось делать вручную.
Из Cargo удалён экспериментальный флаг асимметричной подписи пакетов и связанная с ним переменная окружения. Механизм признан устаревшим, а задачу безопасности решили иначе.
Диапазон чисел теперь можно перебирать циклом for внутри вычислений, выполняемых компилятором.
Линты, требующие файл с описанием пакета и требующие имён исполняемых файлов в определённом регистре, временно понижены до бездействующего уровня. Раньше они выдавали предупреждения.
Стабилен набор методов для работы с содержимым UnsafeCell, оформленный фичей unsafe_cell_access. Закрывает трекинг rust-lang/rust#136327.
Стабилен core::mem::DropGuard — значение, запускающее заданный код при собственном уничтожении. В паре с методом dismiss он позволяет безопасно отменить запланированное действие. Имя типа и метода dismiss утвердили на встрече libs.
Стабилен Vec::from_fn: он собирает вектор заданной длины, получая каждый элемент вызовом функции от его индекса. Позволяет строить вектор без промежуточного итератора.
Добавлен метод Thread::os_id: он возвращает идентификатор потока, присвоенный операционной системой, — чтобы логи программы можно было сопоставлять с системными. Принят по ACP libs-team#635.
В стандартной библиотеке обобщены почти все реализации трейтов на Box: вместо реализаций, отдельных для конкретных размерных типов, теперь общие, работающие и с типами без известного размера (?Sized). Это устраняет расхождения, остававшиеся после стабилизации Allocator.
Принято предложение, позволяющее описывать признаки в манифесте с метаданными, а не только списком значений.
Принято предложение добавить в генератор документации поддержку математических формул: текст между двумя символами доллара будет отображаться как формула.
Две работы по сопровождаемости Redox: 4lDO2 задокументировал философию безопасности relibc и перенёс почти весь unsafe-код в листовые функции, а Ибак Лоренцсон добавил профилирование размера ядра, чтобы видеть, что именно стоит места.
В состав ядра вынесены варианты атомарных операций, запрещающие компилятору переставлять и удалять обращения к памяти. Раньше такие операции требовали обращаться к системному вызову напрямую.
Для срезов байтов добавлено разбиение по символам пробела и табуляции в кодировке ASCII. Обычное разбиение по пробельным символам для байтов по-прежнему недоступно.
Появились обратные реализации сравнения между владеющими коллекциями и буфером, который можно либо взять, либо отдать. То есть сравнение теперь работает в обе стороны, а не только слева направо.