devnews.pl

Main Menu

  • Informacje
    • Systemy i przeglądarki
    • Gadżety
  • Narzędzia
  • Frontend
  • Backend
  • QA
  • Języki programowania

logo

devnews.pl

  • Informacje
    • Systemy i przeglądarki
    • Gadżety
  • Narzędzia
  • Frontend
  • Backend
  • QA
  • Języki programowania
Informacje
Home›Informacje›V8 wersja 8.6 – faza beta silnika Google

V8 wersja 8.6 – faza beta silnika Google

By Bernadeta Zapała
29 września 2020
154
1
Share:

V8 jest silnikiem stanowiącym podstawę Node.js. Działa on samodzielnie lub jest osadzony w dowolnej aplikacji C++. Twórcy 21 września opublikowali kolejną gałąź – V8 wersja 8.6 – na razie w fazie beta. W tej fazie będzie do czasu wydania koordynacji ze stabilnym Chrome 86. Nowa wersja silnika posiada wiele różnych gadżetów dla programistów.

#BLM

Nowy V8 sprawia, że baza kodu ma większy szacunek. W związku z ruchem Black Lives Matters wiele programów i narzędzi zmieniło stosowane pojęcia – GitHub zmienia gałąź „master” na „main”, by nie stosować odniesień do niewolnictwa. Ponieważ Google także wydało zobowiązania dotyczące równości rasowej, to V8 zastąpił niektóre terminy w projekcie.

Otwarty JS-Fuzzer w V8 wersja 8.6

JS-Fuzzer to oparty na mutacjach fuzzer JavaScript, który teraz stał się projektem open source. Przede wszystkim mutuje on istniejące przypadki testowe między silnikami. Korzysta przy tym z transformacji Babel AST, skonfigurowanych przez rozszerzalne klasy muratorów.

Przyspieszenia w Number.prototype.toString

Ogólnie konwersja liczby JS na łańcuch jest dość złożoną operacją. Należy zwracać uwagę na wiele czynników, np. notację naukową, NaN, nieskończoności, precyzję zmiennoprzecinkową czy zaokrąglenia. Programista nie zna długości łańcucha przed jego obliczeniem. Dlatego też implementacja Number.prototype.toString przeniosłoby się do funkcji środowiska wykonawczego C++.

V8 wersja 8.6 redukuje koszty związane z wywoływaniem funkcji uruchomieniowej C++ dla prostszych operacji jak drukowanie małych liczb całkowitych (Smi). Współpraca z Microsoftem zaowocowała nową, prostszą i szybszą ścieżką właśnie dla małych liczb całkowitych. Ścieżkę Number.prototype.toString napisano w Torque, dzięki czemu zmniejszono narzuty i poprawiono drukowanie mikro znaków o 75%.

Inne zmiany JS w V8

Wywołanie Atomics.wake przemianowano na Atomics.notify. Dzięki temu dopasowano ją do zmian specyfikacji we wcześniejszej wersji 7.3. Kolejną zmianą jest dodanie właściwości Symbol.toStringTag do obiektu Reflect. Ostatnią w dziale JS jest właściwość .name klas anonimowych, której wartością jest pusty ciąg ”.

WebAssembly – SIMD w Liftoff

Podstawowym kompilatorem dla WebAssembly jest Liftoff. Propozycja SIMD pozwala WebAssembily na korzystanie z dostępnych funkcji wektorowych do przyspieszenia sprzętowego intensywnych obliczeniowo obciążeń.  Dotychczas SIMD zaimplementowano wyłącznie w TurboFan – kompilatorze V8. Dzięki temu wydajność instrukcji SIMD jest maksymalna. Na poniższym wykresie widać różnicę w implementowaniu funkcji pobierającej tablicę liczb zmiennoprzecinkowych i ograniczającej jej wartości do zera, korzystając z Liftoff oraz TurboFan. Jako bazę użyto skalarnej implementacji Liftoff.

V8 wersja 8.6 - wykres SIMD

Liftoff SIMD jest nawet 2,8 razy szybszy od skalarnego Liftoff. Z kolei TurboFan SIMD wykazuje 7,5 razy większą prędkość.

V8 wersja 8.6 z szybszymi połączeniami Wasm do JS

Ostatnią zmianą przy WebAssembly jest dodanie łatki firmy Microsoft, która pozwala uniknąć wywołania przez adapter argumentów. Jeśli WebAssembly wywołuje zaimportowaną funkcję JavaScript, korzystamy z tak zwanego opakowania Wasm-to-JS. To opakowanie tłumaczy argumenty na obiekty zrozumiałe przez JS. Z kolei przy zwrocie wywołania JS – tłumaczy je na wartości zrozumiałe przez WebAssembly.

W przypadku wykrycia niezgodności w liczbie argumentów wywołuje się „trampolinę adaptera argumentów”. Często jednak jest to zbędna operacja – gdy funkcja nie korzysta z obiektu arguments. Wtedy właśnie nowa łatka unika wywołania przez adapter argumentów. Dzięki temu wywołania są znacznie bardziej przyśpieszone.

V8 wersja 8.6 API

Do API V8 dodano nową funkcję Isolate::HasPendingBackgroundTasks, która pozwala programistom sprawdzać, czy istnieją w tle oczekujące prace. Dzięki temu rozwiązano problem wyłączania V8, mimo nieukończonej kompilacji WebAssembly, która dalej rozpoczyna dalsze wykonywanie skryptu. Isolate::HasPendingBackgroundTasks umożliwia programatorowi czekać na nowe zadania pierwszego planu zamiast wyłączania V8.

TagsGoogleJavaScriptV8V8 wersja 8.6 betaWebassembly

Share:

  • deklaratywny shadow dom
    Informacje

    Deklaratywny Shadow DOM –nowy sposób implementacji

  • Systemy i przeglądarki

    Safari Technology Preview 118 dostępne dla programistów

  • Yarn 2.1
    Narzędzia

    Yarn 2.1 – pierwsza kompilacja stabilnej majowej wersji

  • 13 kwietnia 2021

    TypeScript 4.3 beta z oddzielnymi typami zapisu

  • 7 kwietnia 2021

    Billboard.js 3.0 z nowym typem świecy

  • 2 kwietnia 2021

    Silnik V8 9.0 beta udostępniony

  • 1 kwietnia 2021

    ReacType 6.0 z nowym dashboardem

  • 29 marca 2021

    Udostępniono Android 12 Developer Preview 2

  • 24 marca 2021

    Git 2.31 dostępny z konserwacją w tle

  • 19 marca 2021

    Relay Hooks – nowy zestaw interfejsów API

  • 18 marca 2021

    Deno 1.8 ze wsparciem interfejsu API WebGPU 

  • 16 marca 2021

    React Native 0.64 z silnikiem Hermes na iOS

  • 9 marca 2021

    Windows Terminal Preview 1.7 z lepszym zarządzaniem oknami

  • 3 marca 2021

    Vite 2.0 wydane z nowymi wtyczkami

  • 25 lutego 2021

    ReacType 5.0 – zmiany we wprowadzaniu komponentów

  • 23 lutego 2021

    Dapr v.1.0 gotowy do fazy produkcji

  • 22 lutego 2021

    ReScript 9.0 z zewnętrzną konfiguracją stdlib

  • 22 lutego 2021

    One UI 3.1 z ciekawymi nowościami dla urządzeń Samsunga

  • 22 lutego 2021

    Windows Terminal Preview 1.6 z nową sekcją ustawień

  • 15 lutego 2021

    Visual Studio Code 1.53 z ulepszeniami debugowania

  • 8 lutego 2021

    Edge 89 beta, Edge Dev 90 i nowości na kanale Canary

  • 2 lutego 2021

    Firefox 85 i Firefox Nightly – nowe wersje przeglądarki Mozilli

  • 29 stycznia 2021

    Billboard.js 2.2.0 z nowymi funkcjami wykresów

  • 26 stycznia 2021

    Kendo UI R1 2021 – nowości dla bibliotek

  • 21 stycznia 2021

    Narzędzie Vno – połączenie Vue i Deno

  • 19 stycznia 2021

    GitHub Enterprise Server 3.0 RC – kandydat do wydania

  • 15 stycznia 2021

    TypeScript 4.2 Beta z ulepszeniami typów krotek

  • 13 stycznia 2021

    Styczniowy Patch Tuesday z luką 0-day

  • 11 stycznia 2021

    Safari Technology Preview 118 dostępne dla programistów

  • 8 stycznia 2021

    Microsoft Launcher na Androida z usprawnionym dotykiem

  • 7 stycznia 2021

    WebStorm 2020.3.1 dostępny dla urządzeń z Apple Silicon

  • 22 grudnia 2020

    ReScript 8.4 z przypiętymi zależnościami

  • 14 grudnia 2020

    Edge 88 beta i przeglądarka na kanale Canary dostępne!

 

 

Jesteśmy pasjonatami najnowszych technologii w świecie programowania. Zbieramy dla Was informacje i porady z całego świata, które sprawią, że Twoja praca stanie się jeszcze bardziej efektywna.

Obserwuj nas codziennie, aby być na bieżąco oraz śmiało udostępniaj nasze posty.

Zespół DevNews

Kategorie

  • Backend
  • Bez kategorii
  • Frontend
  • Gadżety
  • Informacje
  • Języki programowania
  • Narzędzia
  • QA
  • Systemy i przeglądarki

OBSERWUJ NAS

KONTAKT

Chcesz się z nami skontaktować?

Napisz do nas wiadomość: kontakt@devnews.pl

www.devnews.pl | DEVNEWS 2020 | Newsy i ciekawostki ze świata IT