Programski jezik Rust 1.62 izdanje

Objavljeno je izdanje Rust 1.62 programskog jezika opšte namjene, koji je osnovan od strane Mozilla projekta, a koji je sada razvijen pod okriljem nezavisne neprofitne organizacije Rust Foundation. Jezik se fokusira na sigurnost memorije i pruža sredstva za postizanje visokog paralelizma poslova uz izbjegavanje upotrebe sakupljača smeća i vremena izvođenja (vrijeme izvođenja je svedeno na osnovnu inicijalizaciju i održavanje standardne biblioteke).

Rustove metode rukovanja memorijom spašavaju programera od grešaka prilikom manipulacije pokazivačima i štite od problema koji nastaju zbog rukovanja memorijom na niskom nivou, kao što je pristup memorijskoj oblasti nakon što je ona oslobođena, dereferenciranje nultih pokazivača, prekoračenje bafera itd. Za distribuciju biblioteka, izradu i upravljanje ovisnostima, projekt razvija Cargo paket menadžer. Crates.io spremište je podržano za hostovanje biblioteka.

Sigurnost memorije je osigurana u Rustu u vrijeme kompajliranja kroz provjeru referenci, praćenje vlasništva nad objektom, praćenje životnog vijeka objekata (opsega) i procjenu ispravnosti pristupa memoriji tokom izvršavanja koda. Rust također pruža zaštitu od prekoračenja cijelih brojeva, zahtijeva obaveznu inicijalizaciju vrijednosti varijabli prije upotrebe, bolje obrađuje greške u standardnoj biblioteci, primjenjuje koncept nepromjenjivih referenci i varijabli po defaultu, nudi snažno statičko kucanje kako bi se minimizirale logičke greške.

Glavne inovacije:

  • В пакетном менеджере «cargo» предложена команда «add», позволяющая из командной строки добавлять в манифест Cargo.toml новые зависимости или изменять имеющиеся зависимости. Команда также позволяет указывать отдельные свойства (feature) и версии, например: cargo add serde —features derive cargo add nom@5
  • Добавлена возможность использования «#[derive(Default)]» с перечислениями (enum), в которых при помощи атрибута «#[default]» определён вариант по умолчанию. #[derive(Default)] enum Maybe<T> { #[default] Nothing, Something(T), }
  • На платформе Linux задействована более компактная и быстрая реализация механизма синхронизации Mutex, основанная на применении фьютексов, предоставляемых ядром Linux. В отличие от ранее используемой реализации на базе библиотеки pthreads, для хранения состояния Mutex в новом варианте расходуется всего 5 байт вместо 40. Аналогично на futex переведены механизмы блокировок Condvar и RwLock.
  • Реализован второй уровень поддержки целевой платформы x86_64-unknown-none, предназначенной для формирования исполняемых файлов, способных работать без операционной системы. Например, указанная целевая платформа может использоваться при написании компонентов ядра. Второй уровень поддержки подразумевает гарантию сборки.
  • Реализован третий уровень поддержки для платформ aarch64-pc-windows-gnullvm и x86_64-pc-windows-gnullvm. Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.
  • Novi dio API-ja je premješten u kategoriju stabilnih, uključujući metode i implementacije osobina koje su stabilizirane:
    • bool::then_some
    • f32::total_cmp
    • f64::total_cmp
    • Stdin::lines
    • windows::CommandExt::raw_arg
    • impl<T: Default> значение по умолчанию для AssertUnwindSafe<T>
    • From<Rc<str>> for Rc
    • From<Arc<str>> для Arc<[u8]>
    • FusedIterator для EncodeWide

    izvor: opennet.ru

Dodajte komentar