Publicouse a versión da linguaxe de programación do sistema Rust 1.52, fundada polo proxecto Mozilla, pero agora desenvolvida baixo os auspicios da organización independente sen ánimo de lucro Rust Foundation. A linguaxe céntrase na seguridade da memoria, proporciona unha xestión automática da memoria e proporciona os medios para conseguir un alto paralelismo de tarefas sen utilizar un colector de lixo ou tempo de execución (o tempo de execución redúcese á inicialización básica e ao mantemento da biblioteca estándar).
A xestión automática da memoria de Rust salva ao programador de erros ao manipular os punteiros e protexe contra problemas que xurdan debido á manipulación de memoria de baixo nivel, como acceder a unha área de memoria despois de que se liberase, desreferenciar punteiros nulos, exceder o búfer, etc. Para distribuír bibliotecas, proporcionar compilacións e xestionar dependencias, o proxecto desenvolve o xestor de paquetes Cargo. O repositorio crates.io é compatible para hospedar bibliotecas.
Principais novidades:
- Eliminouse a vinculación á orde de execución dos comandos "comprobación de carga" e "cargo clippy". Anteriormente, chamar "cargo clippy" despois de "cargo check" non iniciaba a utilidade clippy (linter) debido á falta de separación da caché para estes modos de verificación. Agora este problema está resolto e a orde na que se chaman "cargo clippy" e "cargo check" xa non importa.
- Unha nova parte da API foi transferida á categoría estable, incluíndo os seguintes métodos:
- Argumentos::as_str
- char::MAX
- char::REPLACEMENT_CHARACTER
- char::UNICODE_VERSION
- char::decode_utf16
- char::from_digit
- char::from_u32_unchecked
- char::from_u32
- slice::punto_partición
- str::rsplit_once
- str::split_once
- O atributo "const", que determina a posibilidade de usalo en calquera contexto en lugar de constantes, úsase nos métodos:
- char::len_utf8
- char::len_utf16
- char::to_ascii_uppercase
- char::to_ascii_minúsculas
- char::eq_ignore_ascii_case
- u8::a_ascii_maiúsculas
- u8::a_ascii_minúsculas
- u8::eq_ignore_ascii_case
- Engadiuse a comprobación de pelusa unsafe_op_in_unsafe_fn para determinar se o código inseguro usado en funcións inseguras está enmarcado por bloques inseguros.
- Permítese lanzar punteiros mutables a matrices en forma de punteiros ao tipo de elemento da matriz. let mut x: [usar; 2] = [0, 0]; deixe p = &mut x como *mut use; deixe p = &mut x as *const use;
- Engadíronse 9 novos cheques a clippy (linter).
- O xestor de paquetes de carga agora admite o campo "manifest_path" en JSON para paquetes. Engadiuse compatibilidade para especificar información de licenza en formato SPDX 3.11 ao repositorio crates.io.
- Permítese especificar varios filtros cando se executan probas, por exemplo, executando "proba de carga - foo bar" executará todas as probas que coincidan coas máscaras "foo" e "bar".
- O kit de ferramentas LLVM predeterminado actualizouse a LLVM 12.
- Implementouse o terceiro nivel de soporte para as plataformas s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl e powerpc-unknown-openbsd. O terceiro nivel implica soporte básico, pero sen probas automatizadas, publicación de compilacións oficiais ou comprobar se o código se pode construír.
Fonte: opennet.ru