A linguaxe de programación Rust 1.94, fundada polo proxecto Mozilla pero agora desenvolvida baixo os auspicios da organización independente sen ánimo de lucro Rust Foundation, foi lanzada. A linguaxe céntrase na seguridade da memoria e proporciona ferramentas para lograr un alto paralelismo na execución de tarefas, ao mesmo tempo que prescinde do uso dun colector de lixo e do tempo de execución (o tempo de execución redúcese á inicialización básica e ao mantemento da biblioteca estándar).
Os métodos de xestión de memoria de Rust están deseñados para eliminar erros na manipulación de punteiros e protexer contra problemas derivados da xestión de memoria de baixo nivel, como o acceso á memoria despois de que fose liberada, a desreferenciación de punteiros nulos, as sobrecargas do búfer, etc. O proxecto está a desenvolver o xestor de paquetes Cargo para distribuír bibliotecas, facilitar as compilacións e xestionar dependencias. O repositorio crates.io mantense para aloxar bibliotecas.
A seguridade da memoria ofrécese en Rust no momento da compilación mediante a comprobación de referencias, o seguimento da propiedade do obxecto, o seguimento da vida útil dos obxectos (ámbitos) e a avaliación da corrección do acceso á memoria durante a execución do código. Rust tamén ofrece protección contra desbordamentos de enteiros, require a inicialización obrigatoria dos valores variables antes do seu uso, manexa mellor os erros na biblioteca estándar, aplica o concepto de referencias e variables inmutables por defecto, ofrece unha forte escritura estática para minimizar os erros lóxicos.
Principais novidades:
- O tipo de porción agora ten un método array_windows. Este método crea un iterador para percorrer porcións en xanelas de tamaño fixo que avanzan un elemento cada vez. A diferenza do método windows dispoñible anteriormente, array_windows opera cun tamaño de xanela constante e devolve unha referencia a unha matriz de tamaño fixo (&[T; N]) en lugar dunha porción de tamaño indefinido (&[T]) para cada iteración. Dado que o tamaño da matriz é coñecido inicialmente polo compilador, o rendemento pódese mellorar evitando a comprobación de límites en cada etapa da iteración. let slice = [0, 1, 2, 3]; let mut iter = slice.array_windows(); assert_eq!(iter.next().unwrap(), &[0, 1]); assert_eq!(iter.next().unwrap(), &[1, 2]); assert_eq!(iter.next().unwrap(), &[2, 3]); assert!(iter.next().is_none());
- Os ficheiros de configuración do xestor de paquetes Cargo (.cargo/config.toml) implementan a directiva "include", que permite inserir no seu lugar o contido doutros ficheiros. include = [ "frodo.toml", "samwise.toml", ] include = [ { path = "required.toml" }, { path = "optional.toml", optional = true }, ]
- Engadiuse compatibilidade coa nova versión da linguaxe de marcado TOML 1.1 aos ficheiros de manifesto e configuración. Esta nova versión engade compatibilidade con táboas incrustadas de varias liñas, a secuencia de escape "\xHH" para inserir representacións de bytes hexadecimais e a secuencia de escape "\e" para "\u001B", xunto coa capacidade de deixar unha coma final ao final do último elemento e omitir segundos nos valores de tempo. serde = { version = "1.0", features = ["derive"] } agora pódese substituír por serde = { version = "1.0", features = ["derive"], }
- Unha nova parte da API trasladouse á categoría de estable, incluíndo os métodos e implementacións de trazos estabilizados:
- <[T]>::array_windows
- <[T]>::compensación_do_elemento
- LazyCell::obter
- LazyCell::get_mut
- LazyCell::force_mut
- LazyLock::obter
- LazyLock::get_mut
- LazyLock::force_mut
- impl TryFrom para o seu uso
- std::iter::Peekable::next_if_map
- std::iter::Peekable::next_if_map_mut
- Intrínsecas para as instrucións x86 avx512fp16
- Intrínsecas para as instrucións AArch64 NEON fp16
- f32::consts::EULER_GAMMA
- f64::consts::EULER_GAMMA
- f32::consts::GOLDEN_RATIO
- f64::consts::GOLDEN_RATIO
- O signo "const" úsase nas funcións:
- f32::mul_add
- f64::mul_add
- A plataforma riscv64im-unknown-none-elf foi trasladada ao nivel de soporte 3. O nivel de soporte 3 inclúe soporte básico, pero non inclúe probas automatizadas, versións oficiais de compilacións nin verificación de compilacións.
Ademais, gustaríanos destacar proxectos e eventos relacionados con Rust anunciados recentemente:
- Ayrton Muñoz, que implementou compatibilidade coa plataforma Sony PlayStation 1 no compilador Rust e portou FreeBSD a ordenadores con chips de silicio de Apple, implementou a capacidade de escribir compoñentes do kernel e controladores de dispositivos en Rust para FreeBSD. Forneceuse un conxunto de ligazóns KPI (Kernel Programming Interface) que permiten o uso de código Rust no kernel de FreeBSD para probas, xunto co controlador de son virtio (virtio_snd), o controlador DockChannel HID para o teclado M2 do MacBook e varios controladores de baixo nivel para subsistemas de ordenadores Mac en chips de silicio de Apple, todos creados usando estas ligazóns.
O traballo nas ligazóns de Rust leva en marcha desde finais de 2024. Actualmente, as ligazóns só implementan unha parte dos indicadores clave de rendemento (KPI) de C e considéranse inestables, pero co tempo planean mellorar a súa estabilidade para que coincida coa dunha interface similar para a linguaxe C. O controlador virtio_snd, proposto como exemplo, é axeitado para reproducir música en QEMU. Espérase que para 2026 as ligazóns de Rust sexan o suficientemente estables para que os desenvolvedores interesados comecen a usalas para escribir código.
- O desenvolvedor de NetBSD, Benny Siegert, ofreceu unha razón pola que a compatibilidade con Rust non aparecerá no kernel de NetBSD: NetBSD admite arquitecturas para as que Rust non está dispoñible; manter a cadea de ferramentas de Rust existente en pkgsrc supón un esforzo significativo e só uns poucos desenvolvedores a admiten; a compatibilidade co kernel para Rust require que o compilador de Rust estea incluído no sistema base; o arranque de Rust en NetBSD usa un paquete binario herdado, o que é inaceptable para distribucións autónomas distribuídas como código fonte; os ciclos de lanzamento de Rust son incompatibles cos ciclos de desenvolvemento e soporte de NetBSD para ramas herdadas (por exemplo, NetBSD 9, lanzado en 2020, segue a ter soporte, o que requiriría a distribución e o soporte dun compilador de Rust de seis anos de antigüidade).
- Опубликован выпуск встраиваемой в приложения СУБД Turso 0.5, написанной на языке Rust и совместимой с SQLite на уровне диалекта SQL, формата файлов БД и C API. Из расширенных возможностей отмечается механизм CDC (Change data capture) для отслеживания изменения БД в реальном времени, использование io_uring для асинхронного ввода/вывода в Linux, поддержка векторного поиска, наличие выражения ALTER для изменения схемы БД, возможность шифрования данных в БД, режим инкрементальных вычислений, конструкция «BEGIN CONCURRENT».
- Un proxecto para habilitar o uso da biblioteca estándar Rust en programas do lado da GPU.
- Emuko — эмулятор RISC-V, написанный на Rust, способный загружать Linux, поддерживающий JIT-компиляцию, способный сохранять и восстанавливать снапшоты состояния.
- RustConn (flatpak) é unha interface gráfica para xestionar conexións de rede externas a outros hosts, compatible con SSH, RDP, VNC, SPICE, Telnet, Serial, Kubernetes, Zero Trust e SFTP. O código está escrito en Rust usando GTK4 e Wayland.
- Publicouse unha nova rama do proxecto zlib-rs 0.6, que se converte na primeira versión estable totalmente compatible coa API C de zlib e axeitada para substituír de forma transparente a zlib. O proxecto ten como obxectivo crear unha alternativa segura á biblioteca de compresión de datos zlib. O desenvolvemento realízase tendo en conta o proxecto zlib-ng, que desenvolve unha variante de alto rendemento de zlib.
- O proxecto VCAD é o desenvolvemento dun sistema de deseño asistido por ordenador (CAD) paramétrico escrito en Rust e integrado con axentes de IA que empregan o protocolo MCP. Admite modelado 3D, simulación, bosquexo 2D, ensamblaxe de compoñentes, importación STEP e exportación STL/GLB/STEP/DXF.
- Publicouse un sistema de recoñecemento de voz escrito en Rust que emprega o modelo de IA en tempo real Mistral Voxtral Mini 4B e o marco de aprendizaxe automática Burn. O proxecto céntrase no recoñecemento de voz sobre a marcha para a transcrición en directo.
- Lanzouse o kit de ferramentas c2rust 0.22. Está deseñado para traducir código C (C99) a unha representación Rust insegura, de estrutura similar ao código C orixinal. A estrutura de traballo resultante pódese empregar para a migración gradual a Rust idiomático e a eliminación de bloques inseguros.
Fonte: opennet.ru
