Zarząd projektu Perl podsumował plany dotyczące dalszego rozwoju gałęzi Perl 5 oraz stworzenia gałęzi Perl 7. W trakcie dyskusji zarząd zgodził się, że nie można naruszać zgodności z już napisanym kodem dla Perl 5, z wyjątkiem przypadków, gdy naruszenie zgodności jest konieczne w celu usunięcia luk w zabezpieczeniach. Rada doszła również do wniosku, że język powinien się rozwijać, a nowe możliwości powinny być intensywniej promowane, przy jednoczesnym uproszczeniu dostępu do pojawiających się innowacji oraz stymulowaniu ich wdrażania.
W przeciwieństwie do pierwotnych zamiarów, zezwalających na domyślne włączenie w gałęzi Perl 7 zmian naruszających zgodność wsteczną, nowy plan zakłada stopniowe przekształcanie gałęzi Perl 5 w Perl 7 bez naruszania zgodności wstecznej z już istniejącym kodem. Wydanie Perl 7.0 koncepcyjnie nie będzie się różnić od kolejnej gałęzi Perl 5.xx.
Rozwój nowych wydań Perl 5 będzie kontynuowany w dotychczasowym kształcie — nowe możliwości dodawane do gałęzi, które są niezgodne ze starym kodem, będą włączane tylko przy wyraźnym wskazaniu w kodzie pragmy „use version” lub „use feature capability”. Na przykład w wersji Perl 5.010 wprowadzono nowe słowo kluczowe „say”, ale ponieważ w istniejącym kodzie mogły być używane funkcje o nazwie „say”, obsługa nowego słowa kluczowego była włączana tylko przy wyraźnym wskazaniu pragmy „use feature 'say'”.
Nowy składnik języka, który w poprzednich wydaniach generował błąd, jest dostępny od razu bez potrzeby wskazywania specjalnych pragm. Na przykład w Perl 5.36 pojawi się uproszczony składnik jednoczesnej obsługi kilku wartości listy („foreach my ($key, $value) (%hash) {“), który będzie dostępny od razu, nawet w kodzie bez pragmy „use v5.36”.
W obecnej formie w Perl 5.36 przy użyciu pragmy „use v5.36” aktywują się 13 możliwości naruszających zgodność (‘say’, ‘state’, ‘current_sub’, ‘fc’, ‘lexical_subs’, ‘signatures’, ‘isa’, ‘bareword_filehandles’, ‘bitwise’, ‘evalbytes’, ‘postderef_qq’, ‘unicode_eval’ i ‘unicode_strings’), domyślnie włączane są tryby „use strict” i „use warnings” oraz wyłączana jest obsługa przestarzałej pośredniej notacji wywoływania obiektów (gdzie zamiast „->” używa się spacji) oraz wielowymiarowych tablic i haszy w stylu Perl 4 („$hash{1, 2}”).
Kiedy zgromadzi się wystarczająco dużo zmian, zamiast kolejnej wersji Perl 5.x zostanie utworzona wersja Perl 7.0, która będzie swoistym podsumowaniem aktualnego stanu, ale pozostanie w pełni zgodna wstecz z Perl 5. Aby wprowadzić zmiany i ustawienia naruszające zgodność, będzie konieczne wyraźne dodanie w kodzie pragma „use v7”. Oznacza to, że kod z pragmą „use v7” można traktować jako „nowoczesny Perl”, w którym dostępne są zmiany języka naruszające zgodność, a bez tej pragmy — jako „konserwatywny Perl”, który pozostanie całkowicie zgodny wstecz z wcześniejszymi wersjami.
Źródło: opennet.ru
