Brush v0.4.0

Brush v0.4.0

Brush è una shell di comando scritta in Rust, che combina la compatibilità con POSIX e Bash con garanzie di sicurezza della memoria e prestazioni elevate. Il progetto mira a diventare un'alternativa completa alle tradizionali shell, consentendo di eseguire script esistenti e utilizzare .bashrc praticamente senza modifiche. Questa versione unisce diversi mesi di lavoro e oltre 200 pull request unite, spingendo significativamente la shell verso una sostituzione completa di Bash e degli ambienti compatibili con POSIX.

Le principali aree di sviluppo in questa release:

  • compatibilità con Bash: aggiunti set -e, set -u, pipefail, failglob, gestore ERR, subprocessi e molto altro;
  • affidabilità: migliorata la gestione dei casi eccezionali – canali chiusi, output danneggiato, cronologia non UTF-8 e altro;
  • piattaforme: ampliato il supporto per macOS (funzionamento come shell di accesso), migliorato il funzionamento su Windows, FreeBSD, Android e sistemi a 32 bit;
  • interattività: aggiunti configurazioni TOML opzionali, hook preexec/precmd, migliorato il supporto per i macro readline e altro.

Miglioramenti chiave della compatibilità con Bash

Le principali modifiche di questa versione includono un significativo ampliamento del supporto per le funzionalità di Bash. Gestione degli errori:

  • set -e (errexit) – uscita immediata in caso di errore;
  • set -u (nounset) – errore nel tentativo di accedere a una variabile non dichiarata;
  • pipefail – il codice di ritorno della pipeline è determinato dall'ultimo comando che ha fallito;
  • failglob – l'assenza di corrispondenze per l'espressione glob ora porta a un errore.

Gestori (Traps) e coprocessi:

  • gestore ERR — consente di eseguire comandi in caso di errore;
  • coprocessi (coproc) — esecuzione di processi in background con comunicazione bidirezionale.

Comandi incorporati:

  • migliorata la gestione di molte costruzioni aritmetiche, tra cui letterali ad alta base, overflow e operatori di assegnazione;
  • correzioni e miglioramenti hanno riguardato i comandi incorporati: caller, read, getopts, printf e altri.

Espansione del supporto per le piattaforme:

La versione v0.4.0 rende la shell accessibile su una gamma più ampia di dispositivi:

  • macOS: risolto un problema che causava il blocco della shell al momento del login. Ora brush può essere utilizzata come shell di accesso (login shell);
  • Windows: miglioramenti nella gestione dei percorsi, aggiunta l'emulazione /dev/null, che aumenta notevolmente la facilità d'uso su Windows;
  • FreeBSD e Android: supporto per la compilazione su queste piattaforme;

Funzionalità interattive e API

  • Configurazione: aggiunto supporto per un file di configurazione TOML opzionale (~/.config/brush/config.toml) per impostazioni specifiche di brush;
  • Personalizzazione: implementati stili preexec/precmd di zsh (dietro un flag sperimentale), utili per la creazione di prompt personalizzati e strumenti di misurazione del tempo;
  • API per sviluppatori: il tipo Shell è ora parametrizzato da estensioni (ShellExtensions), offrendo agli sviluppatori la possibilità di aggiungere comandi integrati personalizzati e modificare il comportamento delle variabili senza la necessità di forkare il progetto;
  • Varie:
    • migliorato il supporto per i macro readline per la compatibilità con starship, atuin e fzf (github.com);
    • aggiunte funzionalità di serializzazione AST e stato della shell tramite serde;
    • ora in brush-parser e brush-core sono disponibili funzioni serde per la serializzazione di AST e stato della shell.

Fonte: linux.org.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster