Reescrevendo Rust
- A linguagem de programação Rust parece um produto de primeira geração
- O apelo inicial de Rust: tipos algébricos, segurança de memória, sem perda de desempenho, gerenciador de pacotes moderno
- Após 4 anos de uso, Rust nem sempre é perfeito
- A evolução da linguagem ficou muito lenta
- Muitos recursos instáveis não foram incluídos no Rust estável
Uma linguagem fantástica
- Quero fazer um fork do compilador de Rust e criar uma nova edição chamada "seph"
- Seria possível manter os recursos existentes de Rust enquanto se adicionam novos recursos
Traits de função (efeitos)
- Rust define traits para structs, mas também precisa definir traits para funções
- Isso permitiria representar várias características de funções
- se a função entra em pânico ou não
- se tem um tamanho de pilha fixo ou não
- se a função executa até o fim ou se fica em espera no meio do caminho
- se a função é pura
- se a função executa código inseguro
- se a função garante término
Recursos em tempo de compilação
- Muitos projetos em Rust usam muitos crates de terceiros
- Esses crates aumentam o risco da cadeia de suprimentos
- Há a proposta de adicionar um recurso que exija permissão explícita para chamadas de funções sensíveis à segurança
- Para chamar recursos como
fs_write, seria necessário permitir isso explicitamente
Pin, Move e empréstimo de structs
Pin é um hack complexo para resolver problemas do borrow checker de Rust
- Em vez de
Pin, faz mais sentido usar uma marker trait Move
- Há a proposta de adicionar uma sintaxe para marcar campos de structs como em estado de empréstimo
- Propõe-se introduzir a marker trait
Move e a trait Mover
Tempo de compilação
- Introduzir o recurso
comptime de Zig para substituir a linguagem de macros de Rust
- Adicionar um pequeno interpretador capaz de executar código em tempo de compilação
- Usar o próprio Rust em vez da linguagem de macros de Rust
Pequenos ajustes
- Corrigir
impl<T: Copy> for Range<T>
- Corrigir
derive com tipos associados
- Suportar AND lógico em expressões
if-let
- Melhorar a usabilidade de ponteiros brutos
- Adicionar um argumento
Allocator a todos os tipos de coleção embutidos
Considerações finais
- Os recursos assíncronos também precisam de melhorias, mas isso exigiria um post separado
- A maioria das mudanças não é compatível com o Rust existente
- Pode ser necessária uma nova edição de Rust
- Estou considerando fazer um fork do compilador diretamente, em vez de me cansar ainda mais com o processo de RFC no GitHub
Resumo do GN⁺
- Rust não é perfeito, apesar do apelo inicial
- A evolução da linguagem ficou lenta, e muitos recursos instáveis não foram incluídos no Rust estável
- Há várias propostas, como traits de função, recursos em tempo de compilação e melhorias em Pin e Move
- Essas propostas podem melhorar bastante a usabilidade de Rust
- Zig é outra linguagem com recursos semelhantes
1 comentários
Comentários do Hacker News
Opinião sobre o processo de RFC do Rust
Problema de dependências no Rust
Estado atual do Rust
Opinião sobre reescrever Rust
Insatisfação com o processo de decisão do Rust
Comentário de Josh Triplett
Opinião sobre a complexidade do Rust
Opinião sobre a velocidade do Rust
Opinião sobre melhorias em Mutex
Opinião sobre a velocidade de desenvolvimento de recursos no Rust
Opinião sobre o design de recursos do Rust
Problema do borrow checker no Rust
Recursos de tempo de compilação no Rust
Recursos instáveis do Rust
Opinião sobre a velocidade de evolução do Rust