Появилась новая версия Rust, которая использует меньше памяти и больше не делает ненужных копий. Документация также была изменена на использование CommonMark.
Rust изначально спонсировался Mozilla и был разработан, чтобы быть безопасным, быстрым и параллельным без сборщика мусора. Он использует инновационные средства для обеспечения безопасности системного программирования с помощью языка, построенного таким образом, чтобы проблемы могли быть обнаружены во время компиляции. Предполагаемое использование включает в себя встраивание в другие языки, написание программ с определенными требованиями к пространству и времени, а также написание кода низкого уровня, например драйверов устройств и операционных систем.
Изменения в этой последней версии начинаются с того, чтобы избежать ненужных копий аргументов, которые являются простыми привязками. Проблема возникла из-за того, что в прошлом MIR (промежуточное представление программы среднего уровня Rust) дифференцировалось между аргументами и локальными объектами. Это означало, что необходимо было добавить дополнительные копии, присваивающие аргумент локальному, даже для простых привязок. MIR был изменен таким образом, что он больше не различается, но до сих пор копии продолжали создаваться, раздувая IR MIR и LLVM, которые выдает компилятор. Теперь это исправлено.
Это привело к снижению использования памяти на пять-десять процентов в тестах, проводимых разработчиками, хотя они говорят, что ваш пробег может отличаться.
Другим основным изменением в этом выпуске является то, что rustdoc был переведен на использование CommonMark. До сих пор rustdoc никогда не гарантировал, какой механизм рендеринга markdown он использовал, но теперь разработчики взяли на себя обязательство использовать CommonMark. Это изменение еще не завершено, так как документация в этом выпуске отображается с помощью предыдущего средства визуализации Hoedown, а также с помощью средства визуализации, совместимого с CommonMark.
В этом выпуске также будет добавлено несколько новых стабилизированных API:
Различные std::sync::atomic
типы теперь реализуются Из своих неатомных типов. Например, пусть x = AtomicBool::from(true);.
() теперь реализует FromIterator<()>;
RwLock