publicado versión da linguaxe de programación do sistema Ferruxe 1.44, fundada polo proxecto Mozilla. A linguaxe céntrase na seguridade da memoria, ofrece unha xestión automática da memoria e ofrece ferramentas para lograr un alto paralelismo de tarefas sen utilizar un colector de lixo e tempo de execución.
A xestión automática da memoria de Rust elimina os erros ao manipular os punteiros e protexe contra os problemas derivados da manipulación de memoria de baixo nivel, como acceder a unha rexión de memoria despois de liberarse, desreferencias de punteiros nulos, desbordamentos do búfer, etc. Estase a desenvolver un xestor de paquetes para distribuír bibliotecas, garantir a montaxe e xestionar as dependencias do proxecto. Carga, o que lle permite obter as bibliotecas necesarias para o programa cun só clic. Admítese un repositorio para aloxar bibliotecas caixóns.io.
No texto do anuncio do novo lanzamento, os desenvolvedores de Rust involucráronse na política e negáronse deliberadamente a publicar unha revisión completa dos cambios en Rust 1.44 en sinal de solidariedade cos manifestantes contra a violencia policial, indicando que este tema é máis importante. que o intercambio de coñecementos técnicos. Básico innovacións:
O xestor de paquetes Cargo integra o comando "árbore de carga", que mostra un gráfico de dependencias tipo árbore. Tamén se engade a opción “—duplicates” (“árbore de carga -d”), que permite avaliar as dependencias en diferentes versións do mesmo paquete.
Para aplicacións non vinculadas a un estándar ("#![no_std]"), implementouse o soporte para técnicas de programación asíncrona baseadas na función "async", o bloque de movemento asíncrono { ... } e o operador ".await". o que facilita a escritura do fluxo de comandos principais de controladores non bloqueadores.
Engadiuse ao analizador soporte para un esquema de definición de xerarquía de módulos extensible. Por exemplo, a seguinte construción non producirá un erro, a pesar da ausencia real do módulo "foo/bar/baz.rs" (a construción aínda non é semanticamente válida e pode causar un erro, pero os cambios pódense ver e analizar en o nivel de compilación macro e condicional):
#[cfg(FALSO)] mod foo {
barra de modificación {
mod baz;
}
}
O compilador rustc engadiu a posibilidade de usar a marca "-C codegen-units" en modo incremental. A implementación de catch_unwind foi reelaborada para que non teña ningún impacto no rendemento se o proceso de desenrolamento está desactivado e non se xeran excepcións.
Proporcionouse soporte de nivel 64 para as plataformas aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos e x64_XNUMX-apple-tvos. O terceiro nivel implica soporte básico, pero sen probas automatizadas e publicación de compilacións oficiais.
Unha nova parte das API foi transferida á categoría estable, incluída a estabilizada
PathBuf::con_capacidade,
PathBuf::capacidade,
PathBuf::borrar,
PathBuf::reserva,
PathBuf::reserve_exact,
PathBuf::shrink_to_fit,
{f32|f64}::to_int_desmarcado,
Layout::align_to,
Layout::pad_to_align,
Layout::array e
Disposición::ampliar.
Funcións ampliadas da biblioteca estándar:
Engadiuse unha variante especial "vec![]" que se reflicte directamente en Vec::new(), permitindo que "vec![]" se use no contexto en lugar de constantes.
Engadiuse unha implementación (impl) do trazo para converter::Infalible Hash.
OsString implementa punteiros intelixentes DerefMut и IndexMut, devolvendo "&mut OsStr".
proc_macro::LexError implementa fmt::Mostrar e erro.
O atributo "const", que determina a posibilidade de usalo en calquera contexto en lugar de constantes, úsase nos métodos from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes e to_ne_bytes para todos os tipos de enteiros.
Engadido soporte para xerar bibliotecas estáticas en formato ".a" en lugar de ".lib" para plataformas GNU en Windows.
Os requisitos mínimos para LLVM eleváronse á versión 8 de LLVM.