Perl 7 wird die Entwicklung von Perl 5 nahtlos fortsetzen, ohne die Abwärtskompatibilität zu beeinträchtigen

Der Governing Council des Perl-Projekts skizzierte Pläne für die weitere Entwicklung des Perl 5-Zweigs und die Schaffung eines Perl 7-Zweigs. Während der Diskussionen kam der Governing Council zu dem Schluss, dass es nicht akzeptabel ist, die Kompatibilität mit bereits für Perl 5 geschriebenem Code zu unterbrechen, es sei denn, es wird gebrochen Kompatibilität ist notwendig, um Schwachstellen zu beheben. Der Rat kam außerdem zu dem Schluss, dass die Sprache weiterentwickelt und neue Funktionen intensiver gefördert werden sollten, gleichzeitig aber auch der Zugang zu neuen Innovationen erleichtert und die Übernahme gefördert werden sollte.

Im Gegensatz zu den ursprünglichen Absichten, Änderungen, die die Abwärtskompatibilität beeinträchtigen, standardmäßig in den Perl 7-Zweig aufzunehmen, besteht der neue Plan darin, den Perl 5-Zweig schrittweise in Perl 7 umzuwandeln, ohne die Abwärtskompatibilität mit vorhandenem Code zu beeinträchtigen. Die Perl 7.0-Version wird sich konzeptionell nicht vom nächsten Perl 5.xx-Zweig unterscheiden.

Die Entwicklung neuer Versionen von Perl 5 wird wie bisher fortgesetzt – neue Features, die dem Zweig hinzugefügt werden und nicht mit dem alten Code kompatibel sind, werden wie bisher nur dann einbezogen, wenn das Pragma „Version verwenden“ oder „Feature-Feature verwenden“ explizit angegeben wird im Code. Perl 5.010 führte beispielsweise ein neues Schlüsselwort „say“ ein, aber da vorhandener Code Funktionen mit dem Namen „say“ verwenden konnte, wurde die Unterstützung für das neue Schlüsselwort nur durch explizite Angabe des Pragmas „use feature ‚say‘“ aktiviert.

Die der Sprache hinzugefügte neue Syntax, die bei der Verarbeitung in früheren Versionen zu einem Fehler führte, ist sofort verfügbar, ohne dass spezielle Pragmas angegeben werden müssen. Beispielsweise wird Perl 5.36 eine vereinfachte Syntax für die gleichzeitige Verarbeitung mehrerer Listenwerte („foreach my ($key, $value) (%hash) {“) einführen, die sofort verfügbar ist, auch im Code ohne „use“. v5.36“ Pragma.

In seiner aktuellen Form verwendet Perl 5.36 das Pragma „use v5.36“, um 13 die Interoperabilität beeinträchtigende Funktionen („say“, „state“, „current_sub“, „fc“, „lexical_subs“, „signatures“, „isa ', ' bareword_filehandles', 'bitwise', 'evalbytes', 'postderef_qq', 'unicode_eval' und 'unicode_strings'), aktivieren standardmäßig die Modi „use strict“ und „use warnings“ und deaktivieren die Unterstützung für die ältere indirekte Notation für Aufrufen von Objekten (wenn anstelle von „- >“ ein Leerzeichen verwendet wird) und mehrdimensionale Arrays und Hashes im Perl 4-Stil („$hash{1, 2}“).

Wenn sich genügend Änderungen angesammelt haben, wird anstelle der nächsten Version von Perl 5.x eine Version von Perl 7.0 generiert, die zu einer Art Zustandsschnappschuss wird, aber vollständig abwärtskompatibel mit Perl 5 bleibt. Um Änderungen und Einstellungen zu ermöglichen Um die Kompatibilität zu beeinträchtigen, müssen Sie dem Code explizit das Pragma „use v7“ hinzufügen. Diese. Code mit dem Pragma „use v7“ kann als „modernes Perl“ behandelt werden, in dem kompatibilitätsverletzende Sprachänderungen verfügbar sind, und ohne „konservatives Perl“, das vollständig abwärtskompatibel mit früheren Versionen bleibt.

Source: opennet.ru

Kommentar hinzufügen