Brush v0.4.0

Brush v0.4.0

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

Le principali direzioni 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 UTF8 e altro;
  • piattaforme: supporto ampliato per macOS (funzionamento come shell di accesso), migliorato funzionamento su Windows, FreeBSD, Android e sistemi a 32 bit;
  • interattività: aggiunti configurazioni TOML opzionali, hook preexec/precmd, migliorato supporto per le macro readline e altro.

Miglioramenti chiave nella compatibilità con Bash

Le modifiche più significative di questa versione sono state l'espansione significativa del supporto delle funzionalità di Bash. Gestione degli errori:

  • set -e (errexit) – uscita immediata in caso di errore;
  • set -u (nounset) – errore nell'accesso a variabili non dichiarate;
  • pipefail – il codice di ritorno della pipeline è definito dall'ultimo comando fallito;
  • failglob – l'assenza di corrispondenze per un'espressione glob ora porta a un errore.

Gestori (Traps) e subprocessi:

  • gestore ERR – consente di eseguire comandi in caso di errore;
  • subprocessi (coproc) – avvio di processi in background con comunicazione bidirezionale.

Comandi incorporati:

  • migliorata la gestione di molte costruzioni aritmetiche, inclusi letterali con basi elevate, overflow e operatori di assegnazione;
  • correzioni e miglioramenti hanno coinvolto comandi incorporati: caller, read, getopts, printf e altri.

Espansione del supporto alle piattaforme:

La release v0.4.0 rende la shell disponibile su un'ampia gamma di dispositivi:

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

Funzionalità interattive e API

  • Configurazione: è stato aggiunto il supporto per un file di configurazione TOML opzionale (~/.config/brush/config.toml) per impostazioni specifiche di brush;
  • Personalizzazione: sono stati implementati gli hook preexec/precmd di stile 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), permettendo agli sviluppatori di aggiungere comandi integrati propri e modificare il comportamento delle variabili senza bisogno di forkare il progetto;
  • Varie:
    • migliorato il supporto per i macro readline per 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