Mozilla hat auf die Verwendung einer gemeinsamen RegExp-Engine, die mit Chromium kompatibel ist, umgestellt.

Der in Firefox verwendete JavaScript-Engine SpiderMonkey. ĂŒbersetzt auf die aktualisierte Implementierung der regulĂ€ren AusdrĂŒcke, die auf dem aktuellen Code basiert. Irregexp aus der JavaScript-Engine V8, die in Browsern basierend auf dem Chromium-Projekt verwendet wird. Die neue RegExp-Implementierung wird im Firefox 78-Release angeboten, das fĂŒr den 30. Juni geplant ist, und wird es ermöglichen, alle fehlenden ECMAScript-Elemente, die mit regulĂ€ren AusdrĂŒcken zusammenhĂ€ngen, im Browser umzusetzen.

Es wird festgestellt, dass die RegExp-Engine in SpiderMonkey als separates Modul gestaltet ist, was sie relativ unabhĂ€ngig macht und ohne signifikante Änderungen am Code ersetzt werden kann. Die ModularitĂ€t ermöglichte es, 2014 die ursprĂŒnglich in Firefox verwendete RegExp-Engine YARR durch einen Fork der Irregexp-Engine aus V8 zu ersetzen. Irregexp ist an die V8-API gebunden, arbeitet mit dem Garbage Collector zusammen, nutzt V8-spezifische String-Darstellungen und das Objektmodell. Im Prozess der Anpassung an die interne API von SpiderMonkey wurde die Irregexp-Engine 2014 teilweise neu geschrieben, und auftretende Änderungen wie das Flag '\u' wurden, wo möglich, ĂŒbertragen. In einem von Mozilla unterstĂŒtzten Ableger.

Leider ist die Pflege eines synchronisierten Forks eine herausfordernde Aufgabe und erfordert erhebliche Ressourcen. Mit den neuen Möglichkeiten, die der ECMAScript 2018 Standard in Bezug auf regulĂ€re AusdrĂŒcke bietet, haben sich die Entwickler von Mozilla gefragt, wie sie den Transfer von Änderungen aus Irregexp vereinfachen können. Als Lösung wurde ein Konzept fĂŒr ein Wrapper vorgeschlagen, das es ermöglicht, die nahezu unverĂ€nderte Irregexp-Engine in SpiderMonkey zu verwenden (Änderungen beschrĂ€nken sich lediglich auf die automatische Ersetzung von „#include“-Blöcken).

Mozilla hat auf die Verwendung einer gemeinsamen RegExp-Engine, die mit Chromium kompatibel ist, umgestellt.

Der Wrapper bietet Irregexp die notwendigen spezifischen Funktionen von V8, einschließlich Speicherverwaltungs- und Codegenerierungsfunktionen sowie grundlegenden Datenstrukturen, die auf den Mechanismen der Speicherverwaltung, Codegeneratoren und der Struktur von SpiderMonkey basieren.

Ein Update der RegExp-Engine wird es Firefox ermöglichen, Funktionen wie benannte Gruppen, Escape-Klassen fĂŒr Unicode-Zeichen, das dotAll-Flag und den Lookbehind-Modus zu unterstĂŒtzen:

  • Benannte Gruppen ermöglichen es, mit regulĂ€ren AusdrĂŒcken ĂŒbereinstimmende Teile einer Zeichenfolge bestimmten Namen zuzuordnen, anstelle von Positionsnummern der Übereinstimmungen (zum Beispiel kann anstelle von „/(\d{4})-(\d{2})-(\d{2})/“ „/(?\d{4})-(?\d{2})-(?\d{2})/“ verwendet werden, um auf das Jahr nicht ĂŒber result[1], sondern ĂŒber result.groups.year zuzugreifen).
  • Escape von Klassen Unicode-Zeichen werden durch die Konstruktionen \p{
} und \P{
} hinzugefĂŒgt, zum Beispiel definiert \p{Number} alle möglichen Zeichen, die Ziffern darstellen (einschließlich Zeichen wie ①), \p{Alphabetic} – Buchstaben (einschließlich von Hieroglyphen), \p{Math} – mathematische Zeichen usw.
  • Flagge dotAll fĂŒhrt dazu, dass das Muster „.“ auch fĂŒr Zeilenumbruchzeichen aktiviert wird.
  • Modus Lookbehind ermöglicht es, in einem regulĂ€ren Ausdruck zu bestimmen, dass ein Muster einem anderen vorausgeht (zum Beispiel kann man einen Betrag in Dollar erfassen, ohne das Dollarzeichen zu erfassen).

Das Projekt wurde mit der Beteiligung der V8-Entwickler umgesetzt, die ihrerseits daran arbeiteten, die AbhĂ€ngigkeit von Irregexp von V8 zu verringern und einige Eigenschaften, die auf SpiderMonkey nicht umgesetzt werden können, in abschaltbare Abschnitte „#ifdef“ zu verlagern. Die Zusammenarbeit war fĂŒr beide Seiten vorteilhaft. Von ihrer Seite ĂŒbergaben die Entwickler von Mozilla Änderungen an Irregexp, die einige Unstimmigkeiten mit den Anforderungen des JavaScript-Standards beseitigen und die CodequalitĂ€t verbessern. Zudem wurden wĂ€hrend der Fuzzing-Tests von Firefox zuvor unentdeckte Fehler im Code von Irregexp gefunden und behoben, die zu AbstĂŒrzen fĂŒhrten.

Quelle: opennet.ru

ZuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen đŸ”„ ZuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster