Nasza strona używa cookies. Korzystając ze strony, wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki. Rozumiem

Najnowsza wersja silnika V8 JavaScriptu w Google Chrome 80

Poznaj wersję 8.0 silnika V8 JavaScriptu i zobacz, co nowego wnosi do Google Chrome 80.
Najnowsza wersja silnika V8 JavaScriptu w Google Chrome 80

Wczoraj Google wydało przeglądarkę Chrome 80, która zawiera m.in. nowe DevTools i SameSite cookies, ale chcielibyśmy się tutaj skupić na czymś, co jest pomijane w opisach najnowszego wydania przeglądarki — włączeniu najnowszej wersji 8.0 silnika V8.

V8 pochwaliło się wersją v 8.0 na swoim blogu 18 grudnia. Ich wpis zawierał najważniejsze cechy nowej wersji. Zobaczmy zatem, czym jest V8 i co swojego wniesie do najnowszego stabilnego wydania przeglądarki Google’a.


Czym jest V8

V8 jest otwartym silnikiem JavaScriptu stworzonym przez Google i napisanym w języku C++. Używa go Google Chrome oraz Node.js. Silnik ten jest również wieloplatformowy. 

Wśród nowinek i usprawnień w wersji 8.0 znalazły się: kompresja wskaźników, wsparcie dla optional chainingu i nullish coalescing, które są tutaj kluczowe.


Sterta mniejsza nawet o 40%

Team V8 przyjrzał się dokładnie możliwości zmniejszenia zużycia pamięci. Na stercie V8 przechowuje różne typy danych, jednak dominują otagowane wartości, które reprezentowane są w zależności od architektury jako 32 lub 64 bity. Developerzy zorientowali się, że wyższe bity mogą być odtworzone na podstawie niższych, co pozwoliło na przechowywanie w pamięci tylko unikalnych informacji. Ta poprawka spowodowała zmniejszenie rozmiaru sterty nawet o 40%.

Pamiętajmy, że gdy mówi się o redukowaniu czegokolwiek, często zachodzi obawa, że może to negatywnie wpłynąć na działanie finalnego produktu. Leszek Świrski, jeden z developerów V8, uspokaja jednak, że poprawka ta właściwie zwiększa wydajność poprzez zmniejszenie czasu potrzebnego na przetwarzanie w samym V8, ale także na skrócenie operacji GC. W zależności od strony i architektury, zmniejszenie zużycia pamięci skraca czas potrzebny V8 o 3 do 8%, a operacje GC są krótsze nawet o 20%.


Optional Chaining

Kolejną nowością jest Optional Chaining. Pozwala on na stworzenie łańcucha odwołań do kolejnych podwłaściwości bez każdorazowego sprawdzania, czy dana właściwość jest zdefiniowana oraz czy nie jest nullem. Ułatwia to trawersowanie obiektów w JS. Od teraz, używając V8 i operatora ?., można napisać:

const nameLength = db?.user?.name?.length;


zamiast

let nameLength;
if (db && db.user && db.user.name)
nameLength = db.user.name.length;


Gdy którakolwiek z pośrednich właściwości jest niezdefiniowana lub jest nullem, to cały łańcuch wywołań zwróci undefined.


Operator ??

Drugim nowym operatorem jest ??, zwany nullish coalescing. Pozwala to na wygodniejsze przypisywanie domyślnych wartości. Wartość domyślna zostanie przypisana tylko, jeśli sprawdzana wartość jest niezdefiniowana lub jest nullem. Adresuje to problemy związane z operatorem ||, który badał czy wartość jest prawdziwa w sensie logicznym.


A kiedy nowe V8 pojawi się w Node.js?

Patrząc na nowe funkcje zaimplementowane w V8 trudno oprzeć się wrażeniu, że dużo bardziej przydałyby się w Node.js. Team Node’a rozpoczął prace nad włączeniem nowego silnika, jednak nadal są pewne problemy z kompatybilnością między platformami. Muszą zostać one rozwiązane, by możliwy był upgrade do V8 8.0. Postęp prac można śledzić w PR na Githubie.


Podsumowanie

Nowa wersja V8 jest już oficjalnie częścią Chrome 80. Użytkownicy mogą już zatem korzystać z odchudzenia pamięci wraz z pozostałymi nowinkami obecnymi w najnowszym wydaniu silnika JS.

Lubisz dzielić się wiedzą i chcesz zostać autorem?

Podziel się wiedzą z 160 tysiącami naszych czytelników

Dowiedz się więcej