Dan Book (), wspierający ponad 70 modułów w CPAN, ryzyka przy wdrażaniu zaproponowanego . Przypomnijmy, że w wersji Perl 7 planowane jest domyślne włączenie trybu ścisłej kontroli „strict”, aktywacja „use warnings” oraz zmiana wartości szeregu parametrów wpływających na kompatybilność ze starszym kodem.
Oczekuje się, że zmiana spowoduje niekompatybilność wielu modułów z CPAN w Perl 7 i wymusi wprowadzenie zmian w każdym z tych modułów, co jest nierealistyczne do zrealizowania w przewidzianym roku, zwłaszcza że nie wszyscy autorzy pozostają dostępni. Nowe funkcje Perl 7 również nie pozwolą na użycie modułów, które mają wspierać nie tylko najnowszą wersję Perl.
Wspomniane są również takie możliwe problemy:
- Mylenie nowicjuszy z powodu niekompatybilności niektórych przykładów i rekomendacji z tutoriali napisanych dla Perl 5 w Perl 7.
- Nie zbadano wpływu na rozwój jednoliniowych skryptów. Perl jest aktywnie używany nie tylko do pisania dużych skryptów, ale także do tworzenia jednoliniowych skryptów i krótkich scenariuszy dla administratorów, w których używanie trybu strict jest zbędne.
- Dystrybucje mają problem z jednoczesnym dostarczaniem plików wykonywalnych do uruchamiania skryptów Perl 7 i Perl 5 (oczekiwane powtórzenie historii z Pythonem 2 i 3).
- Kod napisany dla Perl 7 nie musi szczególnie zaznaczać, że nie będzie działał w Perl 5, wielu programistów nie będzie podawać minimalnie obsługiwanej wersji.
- Różne narzędzia i moduły związane z Perl 5 wymagają wprowadzenia poprawek.
- Przygotowanie Perl 7 z powodu redystrybucji zasobów na jakiś czas zamrozi rozwój nowych funkcji Perl.
- Pojawia się ryzyko wypalenia i odejścia aktywnych programistów interpretera Perl, modułów, narzędzi i pakietów towarzyszących z powodu powstania dużego dodatkowego obciążenia bez odpowiedniej motywacji (nie wszyscy zgadzają się z koniecznością stworzenia Perl 7).
- Fundamentalnie zmieni się kultura w społeczności i stosunek do stabilności Perl.
- Autorytet języka zostanie podważony z powodu krytyki naruszenia kompatybilności Perl 7 z istniejącym kodem przy braku czegoś zasadniczo nowego.
Aby złagodzić negatywne skutki, Dan Book zaproponował swój plan, który pozwoli uniknąć problemów z kompatybilnością. Proponuje się zachowanie dotychczasowego procesu rozwoju i przyznanie następnej wersji numeru 7.0.0 zamiast 5.34.0, w której wyłączona zostanie obsługa pośredniej notacji wywołania obiektów oraz wprowadzenie niektórych nowych funkcji, takich jak try/catch. Zmiany, takie jak „use strict” i „use warnings”, proponuje się regulować poprzez jawne wskazanie wersji Perla w kodzie za pomocą pragmy „use v7” (strict jest już domyślnie włączone dla „use v5.12” i nowszych wydań).
Zaleca się, aby domyślnie w interpreterze zachować zestaw parametrów, który nie różni się od Perla 5, z wyjątkiem standardowego procesu czyszczenia przestarzałej składni, stosowanej wcześniej. Obsługa starych funkcji i przestarzałej składni może być, jak dotychczas, wstrzymana zgodnie z obowiązującymi zasadami przekazywania funkcjonalności do kategorii przestarzałych. Sygnał o używaniu w kodzie nowych elementów Perla 7 i dla rozdzielenia nowego i starego stylu proponuje się za pomocą pragmy „use v7”.
Źródło: opennet.ru
