Шо то за WebAssembly таке?
July 06, 2022 · Edit this page on GitHub
Спочатку було... погано
Колись давно, коли ви ще не були вигорівшими сініорами (десь пять років тому), хтось подумав «А що якщо замість тупорильского JS закачувати байткод у браузери і виконувати його, то може буде швидше працювати?». Зібрав тусу з браузерів і усі такі, «а давай спробуємо».
Спробували.
Але пробували робити не галерні ледарі, а серьйозні пацики, тож вони одразу думали як його так зробити, щоб потім не було бобо по секьюріті. І зробили таку собі jail вбудовану у саму суть контейнерів.
А ще вони подивились на світ навколо і вирішили що треба робити зручно і щоб різні мови можна було у такий байткод компілювати. І вирішили використовувати інтерфейси.
Тобто, якщо ти пишешь на Go чи на Rust, то ти просто реалізуєш інтерфейс для своєї функціі, компіліш її і вуаля, можешь дренькати її з браузра. З шаленою швидкістю у порівнянні з звичайним JS.
І шо?
Завдяки Web Assembly у браузери прийшов великий софт на кшталт лайтрума чи автокада, та будь шо. Навіть на маленьких сайтах деінде юзають wasm.
І все було добре. Але при розробці хлопці та дівчата забули, що майже усі fullstack девелопери то джаваскриптери з нодою, котрі як вуточки побачили вебассемблі і такі — ну треба його усюди тепер заюзати.
І почали тягнути його усюди. Десь добре приживається, десь не дуже.
І десь таки поприживалося
Наприклад, можна на любій мові написати плагін для різних балансерів. Раніше треба було якось за біндінги чеплятися, а ще й треба було розробити підтримку плагінів у программі. а зараз усе це реалізовано під єдиним протоколом.
І теперича, якщо ви хочете у envoy добавити свою логіку, то просто пишете плагін, компілите його у васм і додаєте у envoy, усе просто і швидко.
А от як заміна контейнерів — треба вже думати про доступ до стораджу та нетворку, то розробляють ось таке https://github.com/WebAssembly/component-model
Може й запрацює. Буде в нас Ерланг нової епохи.
десь так 🙂