De raad van bestuur van het Perl-project heeft de plannen voor de verdere ontwikkeling van de Perl 5-tak en de creatie van de Perl 7-tak samengevat. Tijdens de discussies kwam de raad tot de conclusie dat het onaanvaardbaar is om de compatibiliteit met al geschreven Perl 5-code te schenden, behalve in gevallen waarin schending van de compatibiliteit noodzakelijk is om kwetsbaarheden te verhelpen. De raad concludeerde ook dat de taal moet zich ontwikkelen en dat nieuwe mogelijkheden actiever gepromoot moeten worden, terwijl de toegang tot opkomende innovaties vereenvoudigd en hun implementatie gestimuleerd moet worden.
In tegenstelling tot de oorspronkelijke intenties, die standaard wijzigingen in de Perl 7-tak met terugwerkende kracht toestonden, houdt het nieuwe plan in dat de Perl 5-tak geleidelijk zal worden omgevormd tot Perl 7 zonder de backcompatibiliteit met bestaande code te schenden. De release van Perl 7.0 zal conceptueel niet verschillen van de volgende Perl 5.xx-tak.
De ontwikkeling van nieuwe versies van Perl 5 gaat op dezelfde manier door — nieuwe mogelijkheden die niet compatibel zijn met oude code zullen, zoals voorheen, alleen worden opgenomen als dit expliciet wordt aangegeven in de code met de pragma 'use version' of 'use feature mogelijkheid'. Bijvoorbeeld, in versie Perl 5.010 werd een nieuw trefwoord 'say' geïntroduceerd, maar omdat in bestaande code functies met de naam 'say' konden worden gebruikt, werd de ondersteuning voor het nieuwe trefwoord alleen geactiveerd als de pragma 'use feature 'say'' expliciet werd opgegeven.
De nieuwe syntaxis die aan de taal wordt toegevoegd, die in eerdere versies leidde tot een foutmelding, wordt nu beschikbaar zonder dat speciale pragmas hoeven te worden opgegeven. Bijvoorbeeld, in Perl 5.36 zal een vereenvoudigde syntaxis voor het gelijktijdig verwerken van meerdere waarden uit een lijst verschijnen ('foreach my ($key, $value) (%hash) {'), die direct beschikbaar zal zijn, zelfs in code zonder de pragma 'use v5.36'.
In de huidige versie van Perl 5.36 worden bij het gebruiken van de pragma 'use v5.36' 13 functies die de compatibiliteit schenden geactiveerd ('say', 'state', 'current_sub', 'fc', 'lexical_subs', 'signatures', 'isa', 'bareword_filehandles', 'bitwise', 'evalbytes', 'postderef_qq', 'unicode_eval' en 'unicode_strings'), worden de 'use strict'- en 'use warnings'-modi standaard ingeschakeld en wordt de ondersteuning voor verouderde indirecte notatie van objectaanroepen uitgeschakeld (waarbij in plaats van '->' een spatie wordt gebruikt) en meerdimensionale tabellen en hashes in Perl 4-stijl (' $hash{1, 2}') worden uitgeschakeld.
Wanneer er voldoende veranderingen zijn geaccumuleerd, zal er in plaats van een nieuwe release van Perl 5.x een versie Perl 7.0 worden gevormd, die een soort momentopname van de huidige staat zal zijn, maar volledig achterwaarts compatibel zal blijven met Perl 5. Voor het opnemen van wijzigingen en instellingen die de compatibiliteit schenden, is een expliciete toevoeging in de code nodig met de pragm "use v7". Dat wil zeggen, code met de pragm "use v7" kan worden geïnterpreteerd als "modern Perl", waarin wijzigingen in de taal die de compatibiliteit schenden beschikbaar zijn, terwijl zonder deze pragm het "conservatieve Perl" is, dat volledig achterwaarts compatibel zal blijven met eerdere releases.
Bron: opennet.ru
