Brush v0.4.0

Brush v0.4.0

Brush é um shell escrito na linguagem Rust, que combina compatibilidade com POSIX e Bash com garantias de segurança de memória e desempenho. O projeto visa se tornar uma alternativa completa aos shells tradicionais, permitindo a execução de scripts existentes e a utilização do .bashrc praticamente sem alterações. Esta versão reúne vários meses de trabalho e mais de 200 pull requests combinados, avançando significativamente o shell em direção à substituição completa do Bash e de ambientes compatíveis com POSIX.

Principais direções de desenvolvimento nesta versão:

  • compatibilidade com Bash: adição de set -e, set -u, pipefail, failglob, manipulador ERR, subprocessos e muito mais;
  • confiabilidade: aprimoramento do tratamento de casos excepcionais - canais fechados, saída corrompida, histórico não-UTF8 e outros;
  • plataformas: suporte ampliado ao macOS (funcionando como shell de login), melhorias no Windows, FreeBSD, Android e sistemas de 32 bits;
  • interatividade: adição de configurações TOML opcionais, hooks preexec/precmd, aprimoramento do suporte a macros readline e mais.

Melhorias chave de compatibilidade com Bash

As principais atualizações desta versão incluem uma extensão significativa do suporte a recursos do Bash. Gerenciamento de erros:

  • set -e (errexit) – saída imediata em caso de erro;
  • set -u (nounset) – erro ao acessar variável não declarada;
  • pipefail – o código de retorno do pipeline é determinado pelo último comando que falhou;
  • failglob – a ausência de correspondências para a expressão glob agora resulta em um erro.

Manipuladores (Traps) e subprocessos:

  • manipulador ERR — permite executar comandos no caso de um erro;
  • subprocessos (coproc) — execução de processos em segundo plano com comunicação bidirecional.

Comandos embutidos:

  • aprimoramento do tratamento de várias construções aritméticas, incluindo literais de alta base, estouros e operadores de atribuição;
  • correções e melhorias afetaram comandos embutidos: caller, read, getopts, printf e outros.

Expansão do suporte a plataformas:

O lançamento da versão v0.4.0 torna o shell disponível em uma gama mais ampla de dispositivos:

  • macOS: corrigido um problema que fazia o shell travar durante o login. Agora, brush pode ser usado como shell de login;
  • Windows: melhorias no tratamento de caminhos, emulação adicionada de /dev/null, o que aumenta significativamente a facilidade de uso no Windows;
  • FreeBSD e Android: uma versão é suportada para essas plataformas;

Funcionalidades interativas e API

  • Configuração: suporte adicionado para um arquivo de configuração TOML opcional (~/.config/brush/config.toml) para configurações específicas do brush;
  • Personalização: os estilos zsh preexec/precmd hooks foram implementados (através de uma flag experimental), úteis para criar prompts personalizados e ferramentas de medição de tempo;
  • API para desenvolvedores: o tipo Shell agora é parametrizado por extensões (ShellExtensions), permitindo que desenvolvedores adicionem seus próprios comandos incorporados e modifiquem o comportamento das variáveis sem a necessidade de fork do projeto;
  • Diversos:
    • suporte melhorado para macros readline para compatibilidade com starship, atuin e fzf (github.com);
    • adicionadas funcionalidades de serialização AST e estado do shell através do serde;
    • agora funções serde estão disponíveis em brush-parser e brush-core para possibilitar a serialização AST e estado do shell.

Fonte: linux.org.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