Versió del llenguatge de programació Rust 1.62

S'ha publicat el llançament del llenguatge de programació de propòsit general Rust 1.62, fundat pel projecte Mozilla, però ara desenvolupat sota els auspicis de l'organització independent sense ànim de lucre Rust Foundation. El llenguatge se centra en la seguretat de la memòria i proporciona els mitjans per aconseguir un alt paral·lelisme de treballs evitant l'ús d'un col·lector d'escombraries i el temps d'execució (el temps d'execució es redueix a la inicialització bàsica i al manteniment de la biblioteca estàndard).

Els mètodes de gestió de memòria de Rust estalvien al desenvolupador d'errors en manipular els punters i protegeixen dels problemes que sorgeixen a causa del maneig de la memòria de baix nivell, com ara accedir a una àrea de memòria després d'haver-se alliberat, desreferenciar punters nuls, desbordaments de memòria intermèdia, etc. Per distribuir biblioteques, proporcionar compilacions i gestionar dependències, el projecte desenvolupa el gestor de paquets Cargo. El repositori crates.io és compatible per allotjar biblioteques.

La seguretat de la memòria es proporciona a Rust en temps de compilació mitjançant la comprovació de referències, el seguiment de la propietat de l'objecte, el seguiment de la vida útil dels objectes (àmbits) i l'avaluació de la correcció de l'accés a la memòria durant l'execució del codi. Rust també proporciona protecció contra desbordaments d'enters, requereix la inicialització obligatòria dels valors de les variables abans de l'ús, gestiona millor els errors a la biblioteca estàndard, aplica el concepte de referències i variables immutables per defecte, ofereix una escriptura estàtica forta per minimitzar els errors lògics.

Principals innovacions:

  • В пакетном менеджере «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. Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.
  • Una nova part de l'API s'ha mogut a la categoria d'estable, inclosos els mètodes i les implementacions de trets s'han estabilitzat:
    • 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

    Font: opennet.ru

Afegeix comentari