Lançamento do Rust 1.92. Projetos Rust para GUI, isolamento sandbox e criação de firmwares

Foi lançado o release da linguagem de programação Rust 1.92, inicialmente baseada no projeto Mozilla, mas agora desenvolvida sob a supervisão da organização sem fins lucrativos Rust Foundation. A linguagem foca no trabalho seguro com memória e fornece ferramentas para alcançar alta paralelização na execução de tarefas, dispensando o uso de coletor de lixo e runtime (o runtime se restringe à inicialização básica e ao suporte à biblioteca padrão).

Os métodos de manipulação de memória em Rust protegem o desenvolvedor de erros ao trabalhar com ponteiros e evitam problemas decorrentes de manipulação de memória de baixo nível, como acesso a áreas de memória após sua liberação, desreferenciação de ponteiros nulos, e estouro de buffer, entre outros. Para distribuição de bibliotecas, construção e gerenciamento de dependências, o projeto conta com o gerenciador de pacotes Cargo. O repositório crates.io é suportado para hospedagem de bibliotecas.

A manipulação segura da memória em Rust é garantida em tempo de compilação através da verificação de referências, rastreamento de propriedade de objetos, controle do tempo de vida dos objetos (escopos) e avaliação da correção do acesso à memória durante a execução do código. Rust também oferece mecanismos para proteção contra estouros inteiros, exige a inicialização obrigatória de valores de variáveis antes do uso, trata erros de forma superior na biblioteca padrão, aplica o conceito de referências e variáveis imutáveis (immutable) por padrão e oferece uma forte tipagem estática para minimizar erros lógicos.

Principais novidades:

  • A estabilização do tipo "never", representado pelo símbolo "!", que indica cálculos que nunca retornam valores (por exemplo, a função "exits", o macro "panic!" e ciclos infinitos nunca devolvem o controle), prosseguiu. Na nova versão, as verificações Lint "never_type_fallback_flowing_into_unsafe" e "dependency_on_unit_never_type_fallback" foram, por padrão, alteradas de emitir avisos para gerar erros de compilação. Essas verificações são acionadas quando há problemas no código que se manifestam ao usar o tipo "never".

    Estima-se que problemas semelhantes existam em cerca de 500 pacotes crate. A inclusão das verificações lint permitirá preparar-se para a estabilização do tipo "never", que ainda é considerado uma funcionalidade experimental. As verificações lint são acionadas apenas durante a construção direta de pacotes e não se manifestam na construção de dependências. As verificações também podem ser desativadas através do atributo "#[allow]".

  • O comportamento da verificação lint "unused_must_use" foi alterado, sendo acionada ao ignorar o valor retornado por uma função, se a função ou o tipo retornado estiverem marcados com o atributo "#[must_use]". Na nova versão, foram cessadas as emissões de avisos por ignorar valores retornados com os tipos Result e ControlFlow, onde o estado de erro é determinado por um tipo sem valores ("!" ou "Infallible"). Por exemplo, "fn can_never_fail() -> Result {…}".
  • O comportamento da flag "-Cpanic=abort" foi modificado; ao especificá-la, a geração de tabelas unwind para a execução de backtrace é ativada por padrão. Para retornar ao comportamento anterior, uma opção chamada "-Cforce-unwind-tables=no" foi prevista.
  • A verificação dos argumentos do atributo "#[macro_export]" foi rigorosa. Ao especificar atributos inválidos, um erro será exibido em vez de um aviso. Problemas com "#[macro_export]" serão verificados não apenas durante a construção direta do pacote crate, mas também ao construir dependências.
  • No safe-code permite a obtenção de ponteiros raw («&raw [mut | const]») para campos em tipos union.
  • Para a plataforma-alvo mips64el-unknown-linux-muslabi64, foi implementado suporte para vinculação dinâmica.
  • A versão minimamente suportada da ferramenta externa LLVM foi elevada para a branch LLVM 20.
  • Uma nova leva de APIs foi traduzida para a categoria estável, incluindo estabilizações de métodos e implementações de traits:
    • NonZero::div_ceil
    • Location::file_as_c_str
    • RwLockWriteGuard::downgrade
    • Box::new_zeroed
    • Box::new_zeroed_slice
    • Rc::new_zeroed
    • Rc::new_zeroed_slice
    • Arc::new_zeroed
    • Arc::new_zeroed_slice
    • btree_map::Entry::insert_entry
    • btree_map::VacantEntry::insert_entry
    • impl Extend for proc_macro::TokenStream
    • impl Extend for proc_macro::TokenStream
    • impl Extend for proc_macro::TokenStream
    • impl Extend for proc_macro::TokenStream
  • O modificador «const» é aplicado em funções:
    • ::rotate_left
    • ::rotate_right
  • O gerenciador de pacotes Cargo agora garante a repetição da operação "git fetch" em caso de falha na primeira solicitação. Foram adicionados componentes para integração com o emulador de terminal Ghostty. Um novo capítulo sobre otimização do processo de compilação foi adicionado ao manual.

Adicionalmente, podem ser mencionados os projetos e eventos recentemente anunciados relacionados ao Rust:

  • A empresa Ferrocene anunciou a obtenção da certificação IEC 61508 (SIL 2) para a biblioteca libcore, que inclui um subconjunto de chamadas da biblioteca base padrão do Rust. A certificação confirma que a biblioteca atende aos requisitos para sistemas industriais críticos. A Ferrocene é conhecida por criar ferramentas para o desenvolvimento de aplicações em Rust para sistemas críticos (Safety-Critical Systems) e por manter a especificação FLS (Ferrocene Language Specification), na qual a especificação de referência da linguagem Rust é baseada.
  • Foi lançado o Iced 0.14, uma biblioteca para criar interfaces gráficas de usuário usando o modelo de programação reativa. O Iced implementa uma arquitetura familiar para desenvolvedores que conhecem a linguagem de construção de interfaces declarativas Elm. Oferece um conjunto completo de widgets com a capacidade de criar manipuladores assíncronos e aplicar layout adaptativo dos elementos da interface com base no tamanho da janela e da tela. Vários motores de renderização são oferecidos, suportando Vulkan, Metal e DX12. Entre os projetos mais notáveis que utilizam o Iced, destaca-se o ambiente de desktop COSMIC.

    Na nova versão, foram adicionados os widgets "table", "grid", "sensor", "float" e "pin", além de expandir as capacidades do widget para trabalhar com a formatação Markdown. Foram implementados: modo de renderização reativa; barras de rolagem que aparecem quando necessário; API para trabalhar com animações; suporte a métodos de entrada; modo headless; a possibilidade de fazer alterações sem parar o aplicativo (hot reloading); paralelização da decodificação de imagens; ferramentas para depuração e perfilagem de desempenho.

  • O projeto Ribir desenvolve uma biblioteca para a criação de aplicativos multiplataforma com interface gráfica, permitindo o uso de uma única base de código do aplicativo para formar aplicativos gráficos para diferentes plataformas (Linux, Windows, macOS, com planos para Android e iOS). Disponibiliza uma linguagem declarativa de construção de interfaces baseada em macros Rust, mais de 20 widgets, temas de design e renderização baseada em wgpu.
  • Foi apresentada a utilidade Island, destinada ao lançamento isolado de aplicativos. Para isolamento em sandbox, é utilizado o mecanismo Landlock. A Island permite criar regras no formato TOML e aplicá-las para isolar arquivos executáveis existentes usando o Landlock, sem a necessidade de modificar o código. Ao contrário do Firejail, a utilidade Island não requer privilégios de root nem permissões especiais.
  • A empresa Google apresentou a ferramenta Wasefire, escrita em Rust, para o desenvolvimento de firmwares seguros. A ideia principal é executar, em cima do ambiente básico de firmware (plataforma), manipuladores isolados (applet). O desenvolvimento do firmware não está atrelado a linguagens de programação — os componentes do firmware podem ser fornecidos na forma de WebAssembly com extensões WASI (WebAssembly System Interface) e executados com o Wasmtime.
  • Foi publicado o lançamento do firmware UEFI Patina 18, escrito em Rust. O Patina oferece uma substituição para os componentes básicos do firmware UEFI e pode ser utilizado para a migração gradual de firmwares existentes, escritos em C, para o uso da linguagem Rust.
  • O projeto Brimstone está desenvolvendo um novo motor JavaScript, escrito do zero na linguagem Rust. Na sua forma atual, já suporta mais de 97% das funcionalidades do ECMAScript 2026. A máquina virtual para execução de bytecode foi criada com foco na arquitetura do motor V8.
  • O projeto Catten está desenvolvendo um núcleo para o sistema operacional experimental CharlotteOS, escrito em Rust. O núcleo suporta controle de acesso baseado em 'capability' (semelhante ao Fuchsia) e utiliza uma hierarquia de recursos distribuída parecida com a do Plan 9, com endereçamento de caminhos de arquivos via URI.
  • Foi lançada a versão da shell interativa Fish 4.2.0 (friendly interactive shell). O ramo 4.x é notável pela completa transição da base de código da linguagem C++ para Rust.
  • A empresa Cloudflare abriu o código da biblioteca Rust tokio-quiche, para integrar suporte aos protocolos QUIC e HTTP/3 em aplicações assíncronas baseadas no framework Tokio.
  • O projeto Tor lançou as versões 1.7 e 1.8 do Arti, uma implementação da ferramenta Tor, escrita em Rust. Quando o código do Arti alcançar um estágio capaz de substituir completamente a versão em C, os desenvolvedores do Tor pretendem elevar o Arti ao status de implementação principal do Tor e gradualmente descontinuar a implementação em C.

    Na nova versão, foi estabilizada a implementação de descoberta limitada de serviços onion utilizando autenticação de cliente ('restricted-discovery'). Além do proxy SOCKS, foi adicionada suporte a proxies HTTP usando o método CONNECT. Implementou-se a definição adaptativa de timeouts dependendo da carga. Suporte experimental ao tokio-console foi adicionado. O desenvolvimento de funcionalidades para relays e servidores diretórios (Directory Authority) foi continuado. Um novo comando 'arti hsc ctor-migrate' foi adicionado para migrar chaves do cliente em C para o armazenamento de chaves do Arti. Novas configurações foram adicionadas para gerenciar a inicialização de serviços onion.

  • Foi lançada a base de dados RustDB, criada na linguagem Rust, inspirada no PostgreSQL. Suporta operações SQL básicas (CREATE/DROP TABLE/VIEW, INSERT, SELECT, UPDATE, DELETE, SHOW TABLES, EXPLAIN, VACUUM), transações, MVCC, WAL (Write-Ahead Log), índices, e conexão através de protocolo compatível com PostgreSQL. O desenvolvimento do RustDB utilizou inteligência artificial.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster