Movatterモバイル変換


[0]ホーム

URL:


Перейти до вмісту
Вікіпедія
Пошук

WebAssembly

Очікує на перевірку
Матеріал з Вікіпедії — вільної енциклопедії.

Статус версії сторінки

На цій сторінці показано неперевірені зміни

WebAssembly
ПарадигмаExpression-oriented
Дата появи2015[1] Редагувати інформацію у Вікіданих
ТворціW3C Редагувати інформацію у Вікіданих
РозробникW3C, Microsoft, Google, Mozilla[d] і Apple Inc. Редагувати інформацію у Вікіданих
Останній реліз2.0 (1 червня2022)[2]
Система типізаціїстатична
Під впливом відasm.jsd і Google Native Clientd Редагувати інформацію у Вікіданих
Платформаплатформо-незалежна
ЛіцензіяApache License
Звичайні розширення файлів.wast або.wasm[3] Редагувати інформацію у Вікіданих
Репозиторій вихідного кодуgithub.com/WebAssembly/design
github.com/WebAssembly/spec Редагувати інформацію у Вікіданих
Вебсайтwebassembly.org Редагувати інформацію у Вікіданих

WebAssembly абоwasm — незалежний відбраузера універсальний низькорівневийпроміжний код для виконання в браузерізастосунків, скомпільованих з різнихмов програмування. Серед основних завдань WebAssembly виділяється забезпечення перенесення між браузерами, передбачуваність поведінки та ідентичності виконання коду на різних платформах. Використання WebAssembly також дозволить істотно скоротити розмір застосунків, завдяки компактному проміжному коду, і збільшити швидкість декодування.

Робоча група зі стандартизації технології WebAssembly сформована при організаціїW3C з представників проєктівGoogle Chrome,Microsoft Edge,Firefox іWebKit.[4]

Особливості

[ред. |ред. код]

З особливостей WebAssembly, що дозволяють домогтися вищої продуктивності, в порівнянні зJavaScript, виділяється:[5]

  • компактніше представлення WebAssembly дозволяє скоротити час завантаження, у порівнянні із завантаженням навіть стисненогоJavaScript;
  • декодування WebAssembly займає значно менше часу в порівнянні з парсингомпрограмного кодуJavaScript;
  • компіляція і оптимізація виконуються швидше, бо WebAssembly ближчий домашинного коду і вже пройшов стадії оптимізації на етапі компіляції розробником;
  • не потрібно виконання операції повторної оптимізації, що враховує статистику про змінні, отриману при виконанні застосунку, бо в WebAssembly спочатку присутня інформація про типи, яку JavaScript змушений обчислювати на ходу в залежності від контексту;
  • виконання WebAssembly займає менше часу, бо можна обійтися без хитрощів і прийомів, які повинен використовувати розробник для підвищення швидкодії JavaScript. Крім того, бінарний формат WebAssembly значно ближчий до машинного коду;
  • у WebAssembly не потрібно застосуваннязбирача сміття, бо застосовується явне управління пам'яттю.

Відпочатку WebAssembly створювався на основі розробокasm.js[6] таPNaCl[4]. Основна відмінність відAsm.js полягає в тому, що WebAssembly є бінарним форматом, що не зав'язується на JavaScript і дозволяє виконувати в браузері низькорівневий проміжний код. На відміну від PNaCl, проміжний код WASM не є машинним кодом і не ізольований в окремій віртуальній машині, а виконується зі схожим на JavaScript рівнем ізоляції.

Для розробників підготовлено інструментарій для компіляції модулів WebAssembly з коду мовамиC/C++. Наприклад, для компіляції С/C++/asm.js в WebAssembly можна використовуватиEmscripten або створений на його основі спеціальний компіляторBinaryen. Для перетворення тестового формату в бінарний поставляється транслятор WABT.

Історія

[ред. |ред. код]

WebAssembly анонсували 17 червня 2015[7], а 15 березня 2016 показали робочийAngry Bots наUnity уFirefox,[8]Chromium,Google Chrome,[9] таMicrosoft Edge.[10]

У лютому 2017 робоча група зі стандартизації WebAssembly вирішила[11], що бінарний формат і початковий WebAssembly API досягли рівня MVP (мінімально життєздатний продукт), що дає розробникам браузерів зелене світло на включення WebAssembly за умовчанням.

WebAssembly включений за умовчанням у браузерах Firefox 52[12] та Chrome 57[13] у березні 2017.

У серпні 2024 було представлено експериментальне демо відображення рукописного шрифту з допомогою рушія Harfbuz на WASM[14][15].

Примітки

[ред. |ред. код]
  1. http://webassembly.org/roadmap/
  2. Release 2.0 — 2022.
  3. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiateStreaming
  4. абBright, Peter (18 червня 2015).The Web is getting its bytecode: WebAssembly.Ars Technica.Condé Nast. Архіворигіналу за 21 листопада 2015. Процитовано 16 березня 2017.
  5. Lin Clark. What makes WebAssembly fast?. Архіворигіналу за 16 березня 2017. Процитовано 16 березня 2017.
  6. WebAssembly: a binary format for the web.②ality — JavaScript and more. 18 червня 2015. Архіворигіналу за 5 лютого 2016. Процитовано 16 березня 2017.
  7. Launch bug.GitHub / WebAssembly / design. 11 червня 2015. Архіворигіналу за 21 листопада 2021. Процитовано 17 березня 2017.
  8. Wagner, Luke (14 березня 2016).A WebAssembly Milestone: Experimental Support in Multiple Browsers.Mozilla Hacks. Архіворигіналу за 11 серпня 2017. Процитовано 17 березня 2017.
  9. Thompson, Seth (15 березня 2016).Experimental support for WebAssembly in V8.V8 Blog. Архіворигіналу за 31 березня 2017. Процитовано 17 березня 2017.
  10. Zhu, Limin (15 березня 2016).Previewing WebAssembly experiments in Microsoft Edge.Microsoft Edge dev blog. Архіворигіналу за 18 серпня 2021. Процитовано 17 березня 2017.
  11. WebAssembly consensus and end of Browser Preview. Архіворигіналу за 9 березня 2017. Процитовано 16 березня 2017.
  12. Firefox 52: Introducing Web Assembly, CSS Grid and the Grid Inspector. Архіворигіналу за 27 травня 2017. Процитовано 16 березня 2017.
  13. Stable Channel Update for Desktop. Архіворигіналу за 16 березня 2017. Процитовано 16 березня 2017.
  14. Jingyi, Xie (21 серпня 2024),hsfzxjy/handwriter.ttf, процитовано 21 серпня 2024
  15. hsfzxjy (21 серпня 2024).Show HN: Handwriter.ttf – Handwriting Synthesis with Harfbuzz WASM.Hacker News(англ.).This project as proof-of-concept implements a synthesizer that generates and rasterizes handwriting-style font, backed by a super-lightweight RNN model (~14MiB).

Посилання

[ред. |ред. код]
Можливості · стандарти · протоколи
Можливості
Вебстандарти
Протоколи
Діючі
На основіBlink
На основіGecko
На основіWebKit
Інші
Розробку припинено
На основіGecko
На основіMSHTML
На основіWebKit
Інші
Отримано зhttps://uk.wikipedia.org/w/index.php?title=WebAssembly&oldid=43325197
Категорії:
Приховані категорії:

[8]ページ先頭

©2009-2026 Movatter.jp