Dopo venti mesi di sviluppo, è stata rilasciata una nuova versione dell'interprete dei comandi GNU Bash 5.2, utilizzato di default nella maggior parte delle distribuzioni Linux. È stato contemporaneamente rilasciato anche la libreria readline 8.2, impiegata in bash per organizzare l'editing della riga di comando.
Tra i principali miglioramenti si possono notare:
- Il codice per l'analisi delle strutture di sostituzione dei comandi è stato riscritto. La nuova implementazione utilizza la chiamata ricorsiva del parser bison e presenta un controllo della sintassi di qualità superiore, con un rilevamento anticipato degli errori nelle strutture sostituibili.
- Migliorata l'analisi e l'espansione degli indici degli array. È stata implementata la possibilità di utilizzare i parametri «@» e «*» nel comando integrato unset per azzerare una chiave con un valore specifico invece di azzerare l'intero array.
- È stata aggiunta una nuova impostazione «patsub_replacement», che, quando attivata, utilizza il carattere «&» nella stringa sostitutiva per inserire una parte della stringa che corrisponde al modello specificato. Per inserire il letterale «&» è necessario il suo escape con una barra rovesciata.
- È stato ampliato il numero di situazioni in cui non avviene una ramificazione dei processi aggiuntivi; ad esempio, fork non è più applicato quando si utilizza la costruzione «$(<file)».
- È stato implementato un nuovo framework interno per timer e calcolo di timeout.
- È stata fornita la possibilità di includere durante la fase di compilazione (configure —enable-alt-array-implementation) un'alternativa per l'implementazione degli array, ottimizzata per ottenere la massima velocità di accesso a fronte di un aumento del consumo di memoria.
- È stato ampliato l'uso delle sostituzioni $’…’ e $»…», utilizzate durante la localizzazione. Sono state aggiunte le impostazioni noexpand_translations e l'opzione di compilazione «configure —enable-translatable-strings» per gestire l'inclusione del supporto per le sostituzioni localizzabili $»…».
- È stata aggiunta e attivata per impostazione predefinita l'impostazione «globskipdots», che impedisce di restituire «.» e «..» durante l'espansione dei percorsi.
Fonte: opennet.ru
