Google, Microsoft, Mozilla та інші об'єдналися для запуску WebAssembly, нового бінарного формату для Web

Google, Microsoft, Mozilla та інженери проекту WebKit 17 червня зробили анонс, що вони об'єдналися для запуску WebAssembly, нового бінарного формату для компілювання веб-додатків.

Веб розвивається завдяки стандартам, і, погано це чи добре, JavaScript один з них. Однак протягом багатьох років ми бачили багато спроб обійти обмеження мови, наприклад, створення компіляторів, які транслюють код з інших мов в JavaScript. Деякі з цих проектів фокусуються на додавання нових можливостей в мову (наприклад, TypeScript від Microsoft) або прискорення JavaScript (наприклад, Mozilla asm.js). Зараз багато з цих проектів об'єднуються в тому чи іншому вигляді в WebAssembly.

Новий формат дозволяє програмістам компілювати їх код для браузера (на поточний момент розробники сфокусувалися на C/C++, інші мови будуть додані пізніше). Цей скомплированный код надалі виповнюється всередині движка JavaScript. Замість того, щоб парсити вихідний код, що все-таки часто займає тривалий час (особливо на мобільних пристроях), WebAssembly може бути декодирован значно швидше.

Ідея полягає в тому, що WebAssembly надасть розробникам єдиний спосіб компіляції, який в кінцевому рахунку стане веб-стандартом, реалізованим у всіх браузерах.

Файли JavaScript це звичайні текстові файли, які завантажуються з сервера і потім парсятся і компілюються движком JavaScript в браузері. Команда WebAssembly вирішила використовувати бінарний формат тому, що код може бути стиснутий краще, ніж стандартний текстовий JavaScript файл, і тому, що для движка набагато швидше декодувати бінарний формат (до 23 разів швидше в поточній реалізації), ніж, наприклад, декодувати asm.js код.

Проект asm.js від Mozilla має довгострокову мету привнести швидкості, близькі до нативним у веб. Проект Native Client від Google для запуску нативного коду в браузері має схожу мету, але отримав відносно невелике поширення. Схоже на те, що зараз WebAssembly має можливість привнести краще від цих проектів в браузери.

В якості першого кроку, команда WebAssembly ставить за мету досягти тієї ж функціональністю, що і asm.js (і розробники зможуть використовувати ту ж утиліту Emscripten для WebAssembly, що вони використовують для компіляції asm.js коду зараз).

На цій ранній стадії команда також планує запустити бібліотеки polyfill, яка буде транслювати код WebAssembly в JavaScript таким чином, що він може бути виконаний будь-яким браузером — навіть без наявності вбудованої підтримки WebAssembly (що, очевидно, абсурдно, тому що необхідність у цій бібліотеці відпаде, як тільки браузери отримають вбудовану підтримку WebAssembly). З часом команда розробить утиліт (компілятори, дебагери та інші) і додасть підтримку інших мов (наприклад, Rust, Go і C#).

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

Ми часто можемо побачити, що всі значущі розробники браузерів працюють разом над таким проектом, так що щось виразно стоїть чекає нас попереду.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.