Nel mondo dello scripting di shell, Bash ha a lungo dominato come linguaggio principale per automatizzare le attività e integrare strumenti da riga di comando. Tuttavia, le sue peculiarità e limitazioni hanno spinto molti sviluppatori a cercare alternative più moderne ed espressive.
Entra in scena Amber, un nuovo linguaggio di programmazione che si compila in Bash, portando la potenza della programmazione di alto livello nel contesto dello scripting di shell.
Amber è simile a Bash nel funzionamento quotidiano dei comandi, ma offre funzionalità integrate di gestione degli errori, semplificando la scrittura di script robusti, come afferma Karaś.
Questo linguaggio è stato progettato specificamente per il tipo di scripting dove l’esecuzione frequente di comandi esterni e la manipolazione dei risultati sono essenziali. A differenza di Python, che richiede più righe di codice e una gestione esplicita degli errori per eseguire e catturare l’output di un comando, Amber offre una sintassi concisa e intuitiva per queste operazioni.
Una caratteristica distintiva di Amber è la sua attenzione alla sicurezza durante l’esecuzione. Quasi tutte le operazioni in Amber sono sicure, con poche eccezioni per i comandi Bash e funzioni che possono fallire in modo imprevisto, gestite tramite la propagazione degli errori o con l’uso esplicito della parola chiave “fail”.
Tuttavia, c’è preoccupazione tra gli utenti riguardo alle prestazioni di Amber rispetto a Bash puro. Poiché Bash non gestisce i numeri floating-point, Amber deve usare un programma esterno per le operazioni aritmetiche, il che può influire sulle prestazioni. Il team sta esplorando soluzioni, come l’introduzione di un nuovo tipo di dato per gestire meglio questi casi.
L’introduzione della sintassi di Amber ha sollevato domande, specialmente l’uso di “>” per i commenti invece di “#”. Karaś ha chiarito che questa scelta è stata fatta per rendere Amber familiare agli utenti di ECMAScript, dove i commenti iniziano con “//”.
Per quanto riguarda la compatibilità con la shell POSIX, essenziale per la portabilità tra sistemi Unix, Karaś ha menzionato l’idea di un flag di compilazione per massimizzare la compatibilità.
Nonostante il potenziale promettente di Amber, è ancora in fase alpha e non è raccomandato per l’uso in ambienti di produzione critici. Il team sta lavorando su miglioramenti, incluso il supporto completo per la gestione degli spazi nei nomi dei file e altre interpolazioni di stringhe, verificati tramite Shellcheck.