Какво предлага програмният език от ниско ниво WebAssembly

3
128

Mozilla представи браузъра Firefox 52 – последната версия на този уеб-браузър за операционната система Windows XP. Направени са важни промени: улеснено е включването към хотспот точките, при които е необходимо логване в браузъра, появява се предупреждение за опасност, ако се наложи въвеждане на парола при незащитена връзка, премахната е поддръжката на NPAPI плъгините, освен Flash, закрити са 28 уязвимости.

Но нищо не може да се сравни с главното и фундаментално нововъведение – поддръжката на езика за програмиране от ниско ниво WebAssembly (wasm). Това е нов асемблер, който се счита за една от най-значителните иновации в уеб-платформите през последното десетилетие. Именно това не достигаше на JavaScript.

WebAssembly

Програмистите и разработчиците обясниха защо е възникнала необходимостта от създаването на WebAssembly. Причината е, че JavaScript още в началото е замислен като лек програмен език за създаване на простички скриптове. Никой не е предполагал, че той така ще се разрасне и че ще започне да се използва по такъв начин. JavaScript е измислен за начинаещите в програмирането, подходящ например за създаването на някаква форма в уеб-страницата.

Оттогава много неща се промениха. Съвременните уеб-приложения са сложни компютърни програми с клиентски и сървърен код, по-голямата част от който е написан на JavaScript. Въпреки прогреса в развитието на самия JavaScript и всички опити за създаването на високоефективни енджини за бързо изпълнение на JavaScript, почти нищо не се получи, понеже това не е възможно, тъй като JavaScript има свои специфични ограничения. Браузърът просто не може да изпълни този код толкова бързо, както се изпълняват процесорните инструкции в операционната система.

Mozilla първа се сети да създаде своеобразна виртуална машина в браузъра, в която може да се изпълнява код от ниско ниво и преди няколко години демонстрира asm.js (тогава Google експериментираше с Native Client API). Подезикът asm.js се прояви така добре, че веднага стана ясно: необходимо е обединяването на всички по-големи софтуерни компании в създаването на нов съвместен проект, който да придвижи целия уеб много напред.

Програмният език от ниско ниво WebAssembly без проблеми работи съвместно с JavaScript и дава възможност за работа на уеб-приложенията с много по-висока скорост и производителност – почти като вградените в операционните системи приложения.

Сега става възможно стартирането в браузъра на бързи 3D игри, системи за автоматично проектиране, видео редактори, графични редактори, сложни изчисления, кодиране на видео – на практика всичко.

С течение на времето много от съществуващите уеб-приложения – електронна поща, социални мрежи, текстови редактори и JavaScript фреймуъркове ще започнат да използват WebAssembly. Това съществено ще увеличи скоростта на зареждане и рязко ще увеличи тяхната производителност и скорост на работа.

За разлика от другите подходи, като например Flash, които изискват инсталирането на плъгин в браузъра, за постигане на висока скорост на работа, WebAssembly изцяло се вписва в днешната уеб-платформа. Това е отворен и съвместим стандарт, интегриран в браузърите. Това означава, че програмистите свободно могат да използват WebAssembly за интензивни CPU изчисления (компресия, разпознаване на човешките лица, физика) директно в съответните уеб-приложения, в които се използва JavaScript.

WebAssembly е отворен стандарт, създаден съвместно от Mozilla, Google, Microsoft и Apple. Това всъщност е групата с четирите най-разпространени уеб-браузъри и може да се каже, че WebAssembly ще стане всеобщ стандарт.

Google обяви, че ще осигури поддръжката на WebAssembly в следващата версия на Chrome (57), а Microsoft работи върху тази реализация в Edge.

Новият програмен език от ниско ниво ще стане своеобразно допълнение към JavaScript и в крайна сметка ще започне да работи навсякъде, където работи JS: във всички браузъри и във всички среди като Node.js.

Кой ще спечели от използването на WebAssembly? Става дума не само за писане на нови програми на wasm. Чрез компилатори от типа на Emscripten цели игри и вече отдавна готови десктоп програми могат да бъдат портвани за уеб. C/C++ кодът, използван в десктоп приложенията, с помощта на този компилатор ще се изпълнява в браузъра с почти същата скорост, с която работи оригиналната програма. Освен за C/C++, за програмния език Rust също е реализирана поддръжката на WebAssembly.

Катопример можем да разгледаме демонстрационната програма Zen Garden (необходима е десктоп-версията на браузъра Firefox 52).

Функциите на JavaScript извикват функциите на WebAssembly и обратното. Тоест, в рамките на една и съща програма е възможно да се пише сорс код на езика за програмиране от високо ниво JavaScript и от време на време да се преминава към C/C++/Rust в най-проблемните и бавни места на програмата.

Програмистите постепенно ще започнат да повторно да използват и усъвършенстват модулите, написани на WebAssembly, и да ги разпространяват, както сега се използват различните JavaScript библиотеки. Вече са създадени и се развиват различните програмистки инструменти за WebAssembly като компилатори, дебъгери, работи се върху поддръжката на многопоточна работа и паралелни алгоритми.

„В известен смисъл WebAssembly променя понятието за уеб-програмист“ – каза Дейвид Брайант (David Bryant), ръководител на отдела по разработване на платформите в Mozilla. „Това променя и фундаменталните свойства на уеб-пространството“.

И действително, вече е възможно портването на стандартни C/C++ програми, за стартиране и изпълнение в браузъра, а съвсем скоро същото ще се случи и за другите програмни езици, като Java, Swift, C#, които ще станат съвместими със стандартната уеб-платформа. По този начин, всички програмисти в крайна сметка ще станат и уеб-програмисти.

3
ДОБАВИ КОМЕНТАР

avatar
3 Коментари
0 Отговори на коментарите
0 Последователи
 
Коментарът с най-много реакции
Най-горещият коментар
3 Автори на коментарите
АнонименАнонименКоментар Автори на последните коментари
  Абонирай се  
нови стари оценка
Извести ме за
Коментар
Коментар

Е, крайно време беше да се направи нещо по въпроса, ура !

Анонимен
Анонимен

Да бяхте вкарали и линк към демото
https://s3.amazonaws.com/mozilla-games/ZenGarden/EpicZenGarden.html

Анонимен
Анонимен

Да бяхте добавили и линк към демото – https://mzl.la/webassemblydemo