Nach zwanzigmonatiger Entwicklung wurde die neue Version des GNU Bash-Kommandointerpreters 5.2 veröffentlicht, die standardmäßig in den meisten Linux-Distributionen verwendet wird. Gleichzeitig wurde die neue Version der readline-Bibliothek 8.2 herausgegeben, die in Bash zur Organisation der Bearbeitung der Eingabeaufforderung verwendet wird.
Zu den wichtigsten Verbesserungen gehören:
- Der Code zur Analyse von Befehlsersetzungen wurde überarbeitet. Die neue Implementierung verwendet einen rekursiven Aufruf des Bison-Parsers und bietet eine qualitativ hochwertigere Syntaxprüfung und frühzeitige Fehlererkennung in den ersetzenden Konstruktionen.
- Die Analyse und Erweiterung von Array-Indizes wurde verbessert. Es wurde die Möglichkeit realisiert, die Parameter „@“ und „*“ in dem eingebauten Befehl unset zu verwenden, um einem Schlüssel mit einem bestimmten Wert anstelle des gesamten Arrays den Rücksetzvorgang zu ermöglichen.
- Eine neue Einstellung „patsub_replacement“ wurde hinzugefügt, bei der das Zeichen „&“ in der zu ersetzenden Zeichenfolge zum Einfügen eines Teils der Zeichenfolge verwendet wird, der dem angegebenen Muster entspricht. Um das Literal „&“ einzufügen, muss es mit einem Rückwärtsschrägstrich maskiert werden.
- Die Anzahl der Situationen, in denen kein Fork zusätzlicher Prozesse durchgeführt wird, wurde erweitert. Fork wird nun beispielsweise nicht verwendet, wenn die Konstruktion „$(<datei)“ verwendet wird.
- Ein neues internes Framework für Timer und die Berechnung von Timeouts wurde implementiert.
- Die Möglichkeit zur Aktivierung einer alternativen Implementierung von Arrays auf der Build-Ebene (configure —enable-alt-array-implementation) wurde bereitgestellt, die optimiert ist, um maximale Zugriffsgeschwindigkeit bei erhöhtem Speicherverbrauch zu erreichen.
- Die Nutzung der Platzhalter $’…’ und $»…», die bei der Lokalisierung verwendet werden, wurde erweitert. Neue Einstellungen noexpand_translations und die Build-Option „configure —enable-translatable-strings“ steuern die Aktivierung der Unterstützung für lokalisierbare Platzhalter $»…».
- Die Einstellung „globskipdots“ wurde hinzugefügt und standardmäßig aktiviert, um das Zurückgeben von „.“ und „..“ beim Erweitern von Pfaden zu verhindern.
Quelle: opennet.ru
