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 8.7 beta – silnik Google ze zmianami JavaScript

V8 8.7 beta – silnik Google ze zmianami JavaScript

By Bernadeta Zapała
26 października 2020
125
0
Share:

Minął kolejny miesiąc, co oznacza nową wersję silnika V8. Tym razem jest to wydanie V8 8.7 beta. Każde wydanie silnika jest powiązane z publikowaną stabilną wersją Chrome Beta. Do czasu koordynacji silnika z Chrome 87 Stable, silnik pozostanie w fazie beta. Tak samo było także z wcześniejszymi wersjami – 8.6 i 8.4. Najnowsza wersja posiada kilka gadżetów dla programistów, m.in. szybkie połączenia JS, a także Atomics.waitAsync.

Atomics.waitAsync w V8 8.7 beta

Znane już wcześniej funkcje Atomics.wait i Atomics.notify, typy prymitywne niskiego poziomu, przydają się do implementowania m.in. wzajemnych wykluczeń (mutex). Jednak pierwszego z tych typów nie można wywołać w głównym wątku, blokuje się. Dlatego też zespół pracujący nad silnikiem V8 opracował nową, nieblokującą opcję – Atomics.waitAsync.

API jest oparte na obietnicach. Atomics.waitAsync zwraca jedną z następujących wartości:

  • lokalizacja pamięci nie zawiera oczekiwanej wartości – {async: false, value: ‘not-equal’}
  • wyłącznie dla natychmiastowego przekroczenia czasu 0 – {async: false, value: ‘timed-out’}
  • {async: true, value: promise}

Promise może się później rozwiązać jako wartość ciągu ‘ok’ lub ‘timed-out’, jednak nigdy nie jest odrzucona.

Przykład wykorzystania Atomics.waitAsync

Atomics.waitAsync posiada także następujące parametry:

  • Buffer – łańcuch Int32Array lub BigInt64Array,
  • Index – poprawny indeks w tablicy,
  • ExpectedValue – wartość, której spodziewamy się w miejscu pamięci opisanym przez (buffer, index),
  • Timeout – limit czasu w milisekundach (opcjonalnie, domyślnie Infinity).

Przykładowy zapis: Atomics.waitAsync(i32a, 0, 0, 1000)

Poniżej znajduje się przykładowe wykorzystanie typu:

const sab = new SharedArrayBuffer(16);
const i32a = new Int32Array(sab);
const result = Atomics.waitAsync(i32a, 0, 0, 1000);
//                                     |  |  ^ timeout (opt)
//                                     |  ^ expected value
//                                     ^ index

if (result.value === 'not-equal') {
  // The value in the SharedArrayBuffer was not the expected one.
} else {
  result.value instanceof Promise; // true
  result.value.then(
    (value) => {
      if (value == 'ok') { /* notified */ }
      else { /* value is 'timed-out' */ }
    });
}

// In this thread, or in another thread:
Atomics.notify(i32a, 0);

Natywne wywołania JavaScript

Nowa wersja silnika ma ulepszony interfejs API do wykonywania natywnych wywołań z JS. Przede wszystkim celem API jest poprawa wydajności natywnych interfejsów graficznych w Chrome. Programistom daje także nowe sposoby tworzenia instancji programu v8::FunctionTemplate. Ponadto interfejs API korzysta z niejawnego wnioskowania o funkcjach, co pozwala na stworzenie wewnętrznej struktury (v8 :: CFunctionInfo).

Jest to na razie funkcja eksperymentalna. Uruchamia się ją przez flagę – -turbo-fast-api-calls w V8, a także w Chrome: – -enable-unsafe-fast-js-calls.

API nowego V8 8.7 beta

Przede wszystkim, aby uzyskać listę zmian interfejsu API, należy skorzystać z git log branch-heads/8.6..branch-heads/8.7 include/v8.h. Programiści mogą skorzystać także z git checkout -b 8.7 -t branch-heads/8.7, aby poeksperymentować z nowymi funkcjami silnika.

Źródło: V8.dev

TagsGoogleJavaScriptV8V8 8.7

Share:

  • Narzędzia

    Pnpm 5.0 – lżejszy menedżer pakietów JavaScript

  • Systemy i przeglądarki

    Firefox 78: ulepszenia DevTools oraz w menu kontekstowym

  • Systemy i przeglądarki

    Edge 85 beta z nowymi funkcjami i DevTools

  • 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!

  • 9 grudnia 2020

    Chrome 88 Beta z nowościami w WebXR

  • 9 grudnia 2020

    Snowpack 3.0 RC z eksperymentalnymi funkcjami

  • 4 grudnia 2020

    Android Studio Arctic Fox – nowe wydanie narzędzia Google

  • 4 grudnia 2020

    The Hack Summit 2020 – konferencja IT Security

  • 2 grudnia 2020

    PowerToys 0.27 z poprawkami błędów

  • 2 grudnia 2020

    Aleph.js alfa z funkcją importowania map

  • 27 listopada 2020

    Cypress 6.0 zwiększa zakres możliwości obsługi sieci

  • 26 listopada 2020

    Firefox 83 przyspiesza i wprowadza tryb HTTPS-Only

  • 25 listopada 2020

    Electron 11.0 z obsługą Apple Silicon

  • 25 listopada 2020

    Prettier 2.2 z obsługą najnowszego TypeScript 4.1

 

 

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