O le faʻasalalauga o le polokalame polokalame Rust 1.53, na faʻavaeina e le poloketi Mozilla, ae o lea ua atiaʻe i lalo o le faʻauluuluga a le faʻalapotopotoga tutoatasi e leai ni tupe mama Rust Foundation, ua lomia. O le gagana e taulaʻi i le saogalemu o mafaufauga, e maua ai le puleaina o manatuaga otometi, ma tuʻuina atu auala e ausia ai le maualuga o galuega tutusa e aunoa ma le faʻaogaina o se lapisi poʻo le taʻavale (ua faʻaititia le taimi i le amataga ma le tausiga o le faletusi masani).
Ole pulega otometi a le Rust e fa'asaoina ai le tagata e faia mea sese pe a fa'aogaina fa'ailoga ma puipuia mai fa'afitauli e tula'i mai ona o le fa'aogaina o mafaufauga maualalo, e pei o le ulufale atu i se vaega e manatua pe a uma ona fa'asa'olotoina, fa'ate'aina null pointers, buffer overruns, etc. Ina ia tufatufa faletusi, tuʻuina atu fausia ma pulea faʻalagolago, o le poloketi e atiina ae le pule o pusa uta. O le crates.io repository e lagolagoina mo le talimalo faletusi.
Autu fa'afouga:
- Для массивов реализован типаж IntoIterator, позволяющий организовать перебор элементов массива по значениям: for i in [1, 2, 3] { .. }
Также появилась возможность передачи массивов в методы, принимающие итераторы, например: let set = BTreeSet::from_iter([1, 2, 3]); for (a, b) in some_iterator.chain([1]).zip([1, 2, 3]) { .. }
Ранее IntoIterator был реализован только для ссылок на массивы, т.е. для перебора по значениям требовалось использование ссылок («&[1, 2, 3]») или «[1, 2, 3].iter()». Реализации IntoIterator для массивов мешали проблемы с совместимостью, вызванные ранее добавленным в компилятор преобразованием метода array.into_iter() в (&array).into_iter(). Указанные проблемы удалось решить обходным путём — компилятор продолжит преобразование array.into_iter() в (&array).into_iter(), как если бы отсутствовала реализация типажа IntoIterator, но только при вызове метода с использованием синтаксиса «.into_iter()» и не касаясь вызовов в форме «in [1, 2, 3]», «iter.zip([1, 2, 3])», «IntoIterator::into_iter([1, 2, 3])».
- Предоставлена возможность указания выражений «|» (логическая операция OR) в любой части шаблона, например, вместо «Some(1) | Some(2)» теперь можно писать «Some(1 | 2)»: match result { Ok(Some(1 | 2)) => { .. } Err(MyError { kind: FileNotFound | PermissionDenied, .. }) => { .. } _ => { .. } }
- Разрешено использование не-ASCII символов в идентификаторах, в том числе любых национальных символов, определённых в спецификации Unicode UAX 31, но кроме символов emoji. При использовании разных, но похожих по начертанию символов, компилятор выведет предупреждение. const BLÅHAJ: &str = «🦈»; struct 人 { 名字: String, } let α = 1; let sos = 2; warning: identifier pair considered confusable between ‘s’ and ‘s’
- O se vaega fou o API ua siitia atu i le vaega mautu, e aofia ai mea nei faʻamautu:
- array::from_ref
- array::from_mut
- AtomicBool::fetch_update
- AtomicPtr::fetch_update
- BTreeSet::retain
- BTreeMap::retain
- BufReader::seek_relative
- cmp::min_by
- cmp::min_by_key
- cmp::max_by
- cmp::max_by_key
- DebugStruct::finish_non_exhaustive
- Duration::ZERO
- Duration::MAX
- Duration::is_zero
- Umi::saturating_add
- Umi::saturating_sub
- Umi::saturating_mul
- f32::is_subnormal
- f64::is_subnormal
- IntoIterator для массивов
- {integer}::BITS
- io::Error::Unsupported
- NonZero*::leading_zeros
- NonZero*::trailing_zeros
- Option::insert
- Ordering::is_eq
- Ordering::is_ne
- Ordering::is_lt
- Ordering::is_gt
- Ordering::is_le
- Ordering::is_ge
- OsStr::make_ascii_lowercase
- OsStr::make_ascii_uppercase
- OsStr::to_ascii_lowercase
- OsStr::to_ascii_uppercase
- OsStr::is_ascii
- OsStr::eq_ignore_ascii_case
- Peekable::peek_mut
- Rc::increment_strong_count
- Rc::decrement_strong_count
- slice::IterMut::as_slice
- AsRef<[T]> для slice::IterMut
- impl SliceIndex для (Bound<usize>, Bound<usize>)
- Vec::extend_from_within
- Реализован третий уровень поддержки для платформы wasm64-unknown-unknown. Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.
- Пакетный менеджер Cargo по умолчанию переведён на использование имени «main» для основной ветки Git-репозитория (HEAD). Для зависимостей, размещённых в репозиториях, использующих имя main вместо master, больше не требуется указывать в настройках branch = «main».
- I totonu o le tuʻufaʻatasiga, o manaʻoga mo le laʻititi laʻititi o le LLVM e siitia i le LLVM 10.
Дополнительно можно отметить предоставление финансирования работы по развитию интеграции в ядро Linux средств для разработки компонентов на языке Rust. Работа будет вестись в рамках проекта Prossimo под эгидой организации ISRG (Internet Security Research Group), которая является учредителем проекта Let’s Encrypt и способствует продвижению HTTPS и развитию технологий для повышения защищённости интернета. Средства будут предоставлены компанией Google, которая оплатит работу Мигеля Охеда (Miguel Ojeda), автора проекта Rust-for-Linux. Ранее ISRG и Google уже профинансировали создание альтернативного HTTP-бэкенда для утилиты curl и разработку нового TLS-модуля для http-сервера Apache.
По данным компаний Microsoft и Google около 70% уязвимостей вызваны небезопасной работой с памятью. Предполагается, что использование языка Rust для разработки компонентов ядра, таких как драйверы устройств, позволит снизить риск появления уязвимостей, вызванных небезопасной работой с памятью, и исключить появление таких ошибок, как обращением к области памяти после её освобождения и выход за границы буфера.
O le fa'aogaina o le manatua-saogalemu o lo'o tu'uina atu i le Rust i le taimi fa'aopoopo e ala i le siakiina o fa'asinomaga, le siakiina o le mea e umia ma le mea faitino i le olaga atoa (lautele), fa'apea fo'i ma le iloiloga o le sa'o o le manatua avanoa i le taimi o le fa'atinoina o tulafono. E maua ai foi e le ele le puipuiga mai le tele o numera, e manaʻomia ai le faʻatagaina o le faʻatulagaina o tau fesuiaʻi aʻo leʻi faʻaaogaina, e sili atu ona lelei le faʻaogaina o mea sese i totonu o le faletusi masani, faʻaaogaina le manatu o faʻamatalaga e le mafai ona suia ma fesuiaiga e ala i le le mafai, ofoina atu le malosi o le taina e faʻaitiitia ai mea sese.
puna: opennet.ru