Jeszcze chwila do pierwszych alpha tej wersji ale już wiemy czego można się spodziewać.
Jak to będzie wyglądało czasowo
Chociaż większość z nas nie przeniosła się jeszcze na PHP 8.0 w swoich domyślnych pakietach dystrybucji Linuksa, nie mówiąc już o środowiskach produkcyjnych, PHP 8.1 znajduje się już w fazie rozwoju i zgodnie z planami powinno być dostępne pod koniec listopada. Jest to niezaskakujący termin, biorąc pod uwagę dotychczasowy cykl wydawniczy tego języka. Z kolei już za dwa miesiące powinny pojawić się pierwsze wydania PHP 8.1 alpha.
Harmonogram PHP 8.1 jest więc taki jak w większości ubiegłych lat i zakłada kolejno:
- trzy wydania alpha co 2 tygodnie
- zamrożenie nowych funkcjonalności pod koniec lipca
- wersje beta
- wersje release candidate
- PHP 8.1.0 w dniu 25 listopada 2021 roku
Co będzie nowego?
Ze znanych obecnie modyfikacji warto wymienić:
- W końcu zostaną wprowadzone enumy.
- Pojawi się funkcja fsync(), zapewniająca, że system operacyjny zapisał zmiany danych (oraz metadanych) w bazowej pamięci. Jest też planowana nowa funkcja fdatasync() skupiająca się tylko na synchronizowaniu danych, ale już nie metadanych.
- Pozornie niekończące się prace nad poprawą wydajności PHP będą kontynuowane z większą liczbą optymalizacji oczekiwanych w tym cyklu. Jednym ze szczegółowych rozwiązań ma być to, że opcache w PHP 8.1 dodaje pamięć podręczną dla dziedziczenia. Powinno to pomóc zmniejszyć obciążenie związane z dziedziczeniem klas PHP.
- Dodanie obsługi Fibers w celu ulepszenia asynchroniczności w PHP. Zmiany pozwalają na przerywanie funkcji PHP bez zanieczyszczania stosu wywołań oraz na obsługę nieblokujących implementacji I/O istniejących interfejsów.
- Kod hashujący PHP 8.1 dodaje obsługę xxHash i MurmurHash V3.
- Kontynuacja prac nad przenoszeniem większej ilości zasobów do obiektów. W przypadku PHP 8.1 zasoby dla fileinfo, GD, FTP, IMAP, LDAP i nie tylko powinny już zostać przeniesione zgodnie z logiką obiektową.
Enum
Ujmując rzecz w skrócie, Enum to typ wyliczeniowy, który ma stałą liczbę możliwych wartości. Popularną analogią do Enum są kolory w talii kart do gry. Talia kart do gry ma cztery kolory i są one ustalone: trefl, karo, kier i pik. I tylko te. W PHP te kolory można wyliczyć za pomocą Enum:
enum Suit {
case Clubs;
case Diamonds;
case Hearts;
case Spades;
}
Sprawdź oferty pracy na TeamQuest
W przeciwieństwie do używania specjalnych ciągów lub liczb do przechowywania parametrów i pracy z nimi, Enum sprawia, że kod aplikacji jest bardziej czytelny i pozwala uniknąć nieoczekiwanego stanu aplikacji (bo limituje możliwe wartości tylko do tych uprzednio sprecyzowanych).
MurmurHash
PHP 8.1 dodaje obsługę algorytmu MurmurHash, który jest niekryptograficznym algorytmem hashującym. Obsługiwane będą następujące warianty MurmurHash w wersji 3:
- murmur3a: 32-bitowy hash
- murmur3c: 128-bitowy hash w architekturze x86
- murmur3f: 128-bitowy hash w architekturze x64
MurmurHash jest hashem strumieniowym, co oznacza, że wartości mogą być aktualizowane w ustalonej kolejności bez konieczności haszowania ciągu wejściowego jako całości. MurmurHash nie został zaprojektowany jako kryptograficzny algorytm hashujący więc do hashowania haseł lepiej jest użyć password_hash
i pochodnych. Ponadto żaden z wariantów MurmurHash nie jest dozwolony w funkcji hash_hmac
.