WebAssembly або wasm — незалежний від браузера універсальний низькорівневий проміжний код для виконання в браузері застосунків, скомпільованих з різних мов програмування. Серед основних завдань WebAssembly виділяється забезпечення перенесення між браузерами, передбачуваність поведінки та ідентичності виконання коду на різних платформах. Використання WebAssembly також дозволить істотно скоротити розмір застосунків, завдяки компактному проміжному коду, і збільшити швидкість декодування.
WebAssembly | |
---|---|
Парадигма | Expression-oriented |
Дата появи | 2015[1] |
Творці | W3C |
Розробник | W3C, Mozilla[d], Microsoft, Google і Apple |
Останній реліз | 2.0 (1 червня 2022)[2] |
Система типізації | статична |
Під впливом від | d і d |
Платформа | платформо-незалежна |
Ліцензія | Apache License |
Звичайні розширення файлів | .wast або .wasm [3] |
Репозиторій вихідного коду | github.com/WebAssembly/spec github.com/WebAssembly/design |
Вебсайт | webassembly.org |
|
Робоча група зі стандартизації технології WebAssembly сформована при організації W3C з представників проєктів Google Chrome, Microsoft Edge, Firefox і WebKit.
Особливості
З особливостей WebAssembly, що дозволяють домогтися вищої продуктивності, в порівнянні з JavaScript, виділяється:
- компактніше представлення WebAssembly дозволяє скоротити час завантаження, у порівнянні із завантаженням навіть стисненого JavaScript;
- декодування WebAssembly займає значно менше часу в порівнянні з парсингом програмного коду JavaScript;
- компіляція і оптимізація виконуються швидше, бо WebAssembly ближчий до машинного коду і вже пройшов стадії оптимізації на етапі компіляції розробником;
- не потрібно виконання операції повторної оптимізації, що враховує статистику про змінні, отриману при виконанні застосунку, бо в WebAssembly спочатку присутня інформація про типи, яку JavaScript змушений обчислювати на ходу в залежності від контексту;
- виконання WebAssembly займає менше часу, бо можна обійтися без хитрощів і прийомів, які повинен використовувати розробник для підвищення швидкодії JavaScript. Крім того, бінарний формат WebAssembly значно ближчий до машинного коду;
- у WebAssembly не потрібно застосування збирача сміття, бо застосовується явне управління пам'яттю.
Відпочатку WebAssembly створювався на основі розробок та . Основна відмінність від полягає в тому, що WebAssembly є бінарним форматом, що не зав'язується на JavaScript і дозволяє виконувати в браузері низькорівневий проміжний код. На відміну від PNaCl, проміжний код WASM не є машинним кодом і не ізольований в окремій віртуальній машині, а виконується зі схожим на JavaScript рівнем ізоляції.
Для розробників підготовлено інструментарій для компіляції модулів WebAssembly з коду мовами C/. Наприклад, для компіляції С/C++/asm.js в WebAssembly можна використовувати Emscripten або створений на його основі спеціальний компілятор . Для перетворення тестового формату в бінарний поставляється транслятор WABT.
Історія
WebAssembly анонсували 17 червня 2015, а 15 березня 2016 показали робочий на Unity у Firefox, Chromium, Google Chrome, та Microsoft Edge.
У лютому 2017 робоча група зі стандартизації WebAssembly вирішила, що бінарний формат і початковий WebAssembly API досягли рівня MVP (мінімально життєздатний продукт), що дає розробникам браузерів зелене світло на включення WebAssembly за умовчанням.
WebAssembly включений за умовчанням у браузерах Firefox 52 та Chrome 57 у березні 2017.
Примітки
- http://webassembly.org/roadmap/
- Release 2.0 — 2022.
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiateStreaming
- Bright, Peter (18 червня 2015). . . Condé Nast. Архів оригіналу за 21 листопада 2015. Процитовано 16 березня 2017.
- . Архів оригіналу за 16 березня 2017. Процитовано 16 березня 2017.
- . ②ality — JavaScript and more. 18 червня 2015. Архів оригіналу за 5 лютого 2016. Процитовано 16 березня 2017.
- . GitHub / WebAssembly / design. 11 червня 2015. Архів оригіналу за 21 листопада 2021. Процитовано 17 березня 2017.
- Wagner, Luke (14 березня 2016). . Mozilla Hacks. Архів оригіналу за 11 серпня 2017. Процитовано 17 березня 2017.
- Thompson, Seth (15 березня 2016). . V8 Blog. Архів оригіналу за 31 березня 2017. Процитовано 17 березня 2017.
- Zhu, Limin (15 березня 2016). . Microsoft Edge dev blog. Архів оригіналу за 18 серпня 2021. Процитовано 17 березня 2017.
- . Архів оригіналу за 9 березня 2017. Процитовано 16 березня 2017.
- . Архів оригіналу за 27 травня 2017. Процитовано 16 березня 2017.
- . Архів оригіналу за 16 березня 2017. Процитовано 16 березня 2017.
Посилання
- Офіційний сайт
- WebAssembly Community Group [ 18 червня 2015 у Wayback Machine.]
- WebAssembly Design [ 1 квітня 2021 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
WebAssembly abo wasm nezalezhnij vid brauzera universalnij nizkorivnevij promizhnij kod dlya vikonannya v brauzeri zastosunkiv skompilovanih z riznih mov programuvannya Sered osnovnih zavdan WebAssembly vidilyayetsya zabezpechennya perenesennya mizh brauzerami peredbachuvanist povedinki ta identichnosti vikonannya kodu na riznih platformah Vikoristannya WebAssembly takozh dozvolit istotno skorotiti rozmir zastosunkiv zavdyaki kompaktnomu promizhnomu kodu i zbilshiti shvidkist dekoduvannya WebAssemblyParadigma Expression orientedData poyavi 2015 1 Tvorci W3CRozrobnik W3C Mozilla d Microsoft Google i AppleOstannij reliz 2 0 1 chervnya 2022 2 Sistema tipizaciyi statichnaPid vplivom vid d i dPlatforma platformo nezalezhnaLicenziya Apache LicenseZvichajni rozshirennya fajliv wast abo wasm 3 Repozitorij vihidnogo kodu github com WebAssembly spec github com WebAssembly designVebsajt webassembly org Mediafajli u Vikishovishi Robocha grupa zi standartizaciyi tehnologiyi WebAssembly sformovana pri organizaciyi W3C z predstavnikiv proyektiv Google Chrome Microsoft Edge Firefox i WebKit OsoblivostiZ osoblivostej WebAssembly sho dozvolyayut domogtisya vishoyi produktivnosti v porivnyanni z JavaScript vidilyayetsya kompaktnishe predstavlennya WebAssembly dozvolyaye skorotiti chas zavantazhennya u porivnyanni iz zavantazhennyam navit stisnenogo JavaScript dekoduvannya WebAssembly zajmaye znachno menshe chasu v porivnyanni z parsingom programnogo kodu JavaScript kompilyaciya i optimizaciya vikonuyutsya shvidshe bo WebAssembly blizhchij do mashinnogo kodu i vzhe projshov stadiyi optimizaciyi na etapi kompilyaciyi rozrobnikom ne potribno vikonannya operaciyi povtornoyi optimizaciyi sho vrahovuye statistiku pro zminni otrimanu pri vikonanni zastosunku bo v WebAssembly spochatku prisutnya informaciya pro tipi yaku JavaScript zmushenij obchislyuvati na hodu v zalezhnosti vid kontekstu vikonannya WebAssembly zajmaye menshe chasu bo mozhna obijtisya bez hitroshiv i prijomiv yaki povinen vikoristovuvati rozrobnik dlya pidvishennya shvidkodiyi JavaScript Krim togo binarnij format WebAssembly znachno blizhchij do mashinnogo kodu u WebAssembly ne potribno zastosuvannya zbiracha smittya bo zastosovuyetsya yavne upravlinnya pam yattyu Vidpochatku WebAssembly stvoryuvavsya na osnovi rozrobok ta Osnovna vidminnist vid polyagaye v tomu sho WebAssembly ye binarnim formatom sho ne zav yazuyetsya na JavaScript i dozvolyaye vikonuvati v brauzeri nizkorivnevij promizhnij kod Na vidminu vid PNaCl promizhnij kod WASM ne ye mashinnim kodom i ne izolovanij v okremij virtualnij mashini a vikonuyetsya zi shozhim na JavaScript rivnem izolyaciyi Dlya rozrobnikiv pidgotovleno instrumentarij dlya kompilyaciyi moduliv WebAssembly z kodu movami C C Napriklad dlya kompilyaciyi S C asm js v WebAssembly mozhna vikoristovuvati Emscripten abo stvorenij na jogo osnovi specialnij kompilyator Dlya peretvorennya testovogo formatu v binarnij postavlyayetsya translyator WABT IstoriyaWebAssembly anonsuvali 17 chervnya 2015 a 15 bereznya 2016 pokazali robochij na Unity u Firefox Chromium Google Chrome ta Microsoft Edge U lyutomu 2017 robocha grupa zi standartizaciyi WebAssembly virishila sho binarnij format i pochatkovij WebAssembly API dosyagli rivnya MVP minimalno zhittyezdatnij produkt sho daye rozrobnikam brauzeriv zelene svitlo na vklyuchennya WebAssembly za umovchannyam WebAssembly vklyuchenij za umovchannyam u brauzerah Firefox 52 ta Chrome 57 u berezni 2017 Primitkihttp webassembly org roadmap Release 2 0 2022 https developer mozilla org en US docs Web JavaScript Reference Global Objects WebAssembly instantiateStreaming Bright Peter 18 chervnya 2015 Conde Nast Arhiv originalu za 21 listopada 2015 Procitovano 16 bereznya 2017 Arhiv originalu za 16 bereznya 2017 Procitovano 16 bereznya 2017 ality JavaScript and more 18 chervnya 2015 Arhiv originalu za 5 lyutogo 2016 Procitovano 16 bereznya 2017 GitHub WebAssembly design 11 chervnya 2015 Arhiv originalu za 21 listopada 2021 Procitovano 17 bereznya 2017 Wagner Luke 14 bereznya 2016 Mozilla Hacks Arhiv originalu za 11 serpnya 2017 Procitovano 17 bereznya 2017 Thompson Seth 15 bereznya 2016 V8 Blog Arhiv originalu za 31 bereznya 2017 Procitovano 17 bereznya 2017 Zhu Limin 15 bereznya 2016 Microsoft Edge dev blog Arhiv originalu za 18 serpnya 2021 Procitovano 17 bereznya 2017 Arhiv originalu za 9 bereznya 2017 Procitovano 16 bereznya 2017 Arhiv originalu za 27 travnya 2017 Procitovano 16 bereznya 2017 Arhiv originalu za 16 bereznya 2017 Procitovano 16 bereznya 2017 PosilannyaOficijnij sajt WebAssembly Community Group 18 chervnya 2015 u Wayback Machine WebAssembly Design 1 kvitnya 2021 u Wayback Machine