Perl 5 żyje i ma się dobrze, ale nadchodzą zmiany
W tym roku Perl będzie obchodził 35. urodziny. Choć może się wydawać, że nie jest on zbyt aktywnie rozwijany, to jednak przekonanie to nie wytrzymuje konfrontacji z faktami. Co prawda Perl 5 wydany został jeszcze w poprzednim stuleciu, to jednak kolejne wersje – a dziś aktualna to 5.36 – przynoszą liczne, choć nie zawsze łatwe do zauważenia nowości.
Perl żyje i ma się dobrze
W ostatnim czasie obszerny artykuł na temat przeszłości, teraźniejszości i przyszłości Perla opublikował Dave Cross, który zauważa, że Perl nie miał premiery dużej nowej wersji oznaczonej kolejnym numerem od 1994 roku. Nie oznacza to jednak, że nie trwały nad nimi prace – Perl 6 był jednak językiem tak innym od tego, co znali deweloperzy, że zdecydowano się go rozwijać jako osobny język, Raku. W efekcie Perl wciąż rozwijamy jest w gałęzi 5.x.
To właśnie ten czynnik mógł sprawić, że według wielu Perl nie jest aktywnie rozwijany, bądź też jego rozwój przebiega wyjątkowo mało dynamicznie. Cross twierdzi jednak, że w praktyce sytuacja wygląda zupełnie inaczej – przez ostatnie 20 lat w Perlu miały zajść wielkie zmiany, dzięki którym udało się nieco oderwać ten język od jego stricte uniksowych korzeni. Wiele mówi zresztą sam tytuł artykułu podkreślający, że dzisiejszy Perl to coś zupełnie innego niż Perl, którego uczyły się starsze pokolenia.
Dziś cykl wydawniczy Perla jest stabilny – raz w roku wydawana jest nowa wersja, zazwyczaj premiera jest w maju. Ponadto w miesięcznych interwałach publikowane są nowe wersje testowe. Według Dave’a Crossa taki harmonogram sprawia, że aktualna dziś wersja 5.36 jest czymś „bardzo odmiennym” od na przykład wersji 5.6.0, która premierę miała w roku 2000.
Nowości we współczesnym Perlu
Co się zatem zmieniło? Na pierwszy rzut oka może wydawać się, że niewiele, a to za sprawą konieczności zachowania wstecznej kompatybilności. W rezultacie duża część nowych funkcji Perla jest domyślnie wyłączona. Taką funkcją jest na przykład polecenie say()
, który ma takie same funkcje jak print()
(wyświetlanie danych w konsoli lub zapisanie ich do pliku), ale z domyślnym automatycznym dodawaniem znaku końca linii.
Wiele zmian, jakie zaszły w Perlu w ciągu ostatnich dwudziestu lat, ma charakter stopniowego pozbywania się archaizmów i łączników Perla ze wspomnianą już uniksową przeszłością. Tak jest na przykład ze zmianami w uchwytach plików typu bareword – w przeszłości mogło dochodzić do pomyłek, gdyż uchwyt mógł być np. zmienną, także zmienną paczki, a nie był w ogóle w ten sposób oznaczony. We współczesnym Perlu takie uchwyty mogą być oznaczane znakiem $
.
Nowości pojawiły się także w tym, jak Perl obsługuje funkcje związane z czasem i datami. Dodany został moduł Time: :Piece
, który być wykorzystywany zamiast kojarzącego się z Uniksem localtime()
. Dzięki temu, np. w sytuacji kiedy konieczne było wydrukowanie czasu, wyeliminowano konieczność przywoływania wielu zmiennych i zwyczajnie znacząco uproszczono to, jak w Perlu obsługuje się czas.
Przyszłość Perla
Nowości jest oczywiście znacznie więcej, po szczegóły Dave Cross odsyła do stron perldelta, które opisują zmiany, jakie pojawiają się w kolejnych nowych wersjach w stosunku do wersji poprzedzającej. Ciekawsze mogą się natomiast okazać jego uwagi co do przyszłości Perla i kierunku rozwoju tego języka, jaki obrano. Można przecież powiedzieć, ze Perl 6 okazał się swojego rodzaju porażką, skoro ewoluował tak bardzo, że stał się de facto innym językiem.
Jako jeden z najciekawszych aktualnie realizowanych przedsięwzięć Cross wymienia projekt o nazwie Corinna. Jest to nowy obiektowy framework, który ma zostać „wpisany w rdzeń Perla”. lecz nie ma całkowicie zastąpić dotychczas wykorzystywanego frameworku, lecz stanowić jego uzupełnianie – priorytetem znów jest tutaj zachowanie jak najszerszej wstecznej kompatybilności. Premiery mamy się spodziewać w wersji 5.38, która zostanie wydana w drugim kwartale przyszłego roku.
Co jednak najważniejsze, po wielu latach Perl wkrótce doczeka się kolejnej dużej wersji! Zostanie oznaczona jako Perl 7 – rada kierująca rozwojem języka nie jest jeszcze przekonana co do konkretnej daty, niemniej liczba nowości, jakie dodano przez ostatnie dwadzieścia lat, ma być w zupełności wystarczająca, aby zasłużyć na nowy numerek. Cross nie wyklucza, że właśnie implementacja wspomnianego frameworka Corinna będzie okazją do zmiany numeracji.