Perl 7 zal de evolutie van Perl 5 naadloos voortzetten zonder achterwaartse compatibiliteit te verbreken

De Raad van Bestuur van het Perl Project schetste plannen voor de verdere ontwikkeling van de tak Perl 5 en de oprichting van een tak van Perl 7. Tijdens de besprekingen was de Raad van Bestuur het erover eens dat het niet acceptabel is om de compatibiliteit met code die al voor Perl 5 is geschreven te verbreken, tenzij compatibiliteit is noodzakelijk om kwetsbaarheden op te lossen. De Raad concludeerde ook dat de taal moet evolueren en dat nieuwe kenmerken intensiever moeten worden gepromoot, terwijl opkomende innovaties gemakkelijker toegankelijk moeten worden gemaakt en adoptie moet worden aangemoedigd.

In tegenstelling tot de oorspronkelijke bedoelingen om wijzigingen die de achterwaartse compatibiliteit verbreken standaard in de Perl 7-branch op te nemen, is het nieuwe plan om de Perl 5-branch geleidelijk over te zetten naar Perl 7 zonder de achterwaartse compatibiliteit met de bestaande code te verbreken. De release van Perl 7.0 zal conceptueel niet verschillen van de volgende Perl 5.xx-vertakking.

De ontwikkeling van nieuwe releases van Perl 5 zal doorgaan zoals voorheen - nieuwe functies die aan de branch zijn toegevoegd en die incompatibel zijn met de oude code zullen, zoals voorheen, alleen worden opgenomen als het pragma "gebruik versie" of "gebruik functiefunctie" expliciet wordt gespecificeerd in de code. Perl 5.010 introduceerde bijvoorbeeld een nieuw trefwoord "say", maar aangezien bestaande code functies met de naam "say" kon gebruiken, werd ondersteuning voor het nieuwe trefwoord alleen mogelijk gemaakt door expliciet het pragma "use feature 'say'" te specificeren.

Nieuwe syntaxis toegevoegd aan de taal, die bij verwerking in eerdere releases tot een fout leidde, wordt onmiddellijk beschikbaar zonder de noodzaak om speciale pragma's te specificeren. Perl 5.36 introduceert bijvoorbeeld een vereenvoudigde syntaxis voor het tegelijkertijd verwerken van meerdere lijstwaarden (β€œforeach my ($key, $value) (%hash) {”) die onmiddellijk beschikbaar zal zijn, zelfs in code zonder de β€œuse v5.36” pragma.

In zijn huidige vorm gebruikt Perl 5.36 het "use v5.36"-pragma om 13 interoperabiliteitsbrekende functies mogelijk te maken ('say', 'state', 'current_sub', 'fc', 'lexical_subs', 'signatures', 'isa ', 'bareword_filehandles', 'bitwise', 'evalbytes', 'postderef_qq', 'unicode_eval' en 'unicode_strings'), schakel standaard de modi 'gebruik strikt' en 'gebruik waarschuwingen' in en schakel ondersteuning uit voor de oudere indirecte notatie voor het aanroepen van objecten (wanneer in plaats van β€œ- >" een spatie wordt gebruikt) en multidimensionale arrays en hashes in Perl 4-stijl ("$hash{1, 2}").

Wanneer er voldoende wijzigingen zijn verzameld, wordt er in plaats van de volgende release van Perl 5.x een versie van Perl 7.0 gegenereerd, die een soort momentopname van de status wordt, maar volledig achterwaarts compatibel blijft met Perl 5. Wijzigingen en instellingen mogelijk maken die de compatibiliteit verbreken, moet u expliciet het β€œuse v7”-pragma aan de code toevoegen. Die. code met het "use v7"-pragma kan worden behandeld als "modern Perl", waarin taalveranderingen die de compatibiliteit verbreken beschikbaar zijn, en zonder - "conservatief Perl", dat volledig achterwaarts compatibel zal blijven met eerdere releases.

Bron: opennet.ru

Voeg een reactie