--- title: WebAssembly slug: WebAssembly translation_of: WebAssembly ---
{{WebAssemblySidebar}}{{SeeCompatTable}}

WebAssembly jest nowym rodzajem języka, który może być uruchomiony w nowoczesnych wersjach przeglądarek — jest językiem niskopoziomowym, który działa z szybkością zbliżoną do rozwiązań natywnych i pozwala na kompilacje kodu napisanego w takich językach jak C/C++ do kodu docelowego, który może być użyty  w web.
Równocześnie możemy w nim korzystać z Javascript.

W skrócie

WebAssembly ma duży wpływ na całą platformę web - dostarcza sposób na uruchomienie kodu napisanego w wielu różnych językach w przeglądarce z szybkością bliską natywnym rozwiązaniom, co wcześniej nie było możliwe do osiągnięcia. 

WebAssembly jest stworzone do uzupełnienia JavaScript - używając WebAssembly JavaScript API, możesz załadować moduły WA do aplikacji JavaScript i współdzielić funkcjonalności. To pozwala Ci skorzystać jednocześnie z wydajności WebAssembly razem z prostotą i elastycznością JavaScript w jednej i tej samej aplikacji, nawet jeśli nie wiesz jak napisać kod WebAssembly.

Co więcej technolgia ta jest rozwijana jako web standard przez W3C WebAssembly Working Group z aktywnym udziałem największych firm technologicznych.

Przewodnik

Koncepcja WebAssembly
Rozpocznij od przeczytania ogólnej koncepcji stojącej za WebAssembly - co to jest, dlaczego jest przydatne, jak wpasowuje się w platformę web i jak z tego korzystać.
Kompilacja z C/C++ do WebAssembly
Kiedy już napisałeś kod w C/C++, możesz łatwo go skompilować do .wasm korzystając z narzędzi jak Emscripten. Sprawdźmy jak to działa.
Ładowanie i uruchamianie kodu WebAssembly
Kiedy już uzyskasz .wasm, ten artykuł pomoże Ci w jego pobraniu do aplikacji, kompilacji i łączeniu z Fetch lub XHR API.
Cachowanie skompilowanych modułów WebAssembly
Cachowanie dużych modułów WebAssembly po stronie klienckiej jest przydatne dla zwiększenia wydajności uruchamiania aplikacji. Artykuł opisuje jak osiągnąć to za pomocą IndexedDB.
Korzystanie z WebAssembly JavaScript API
Kiedy już załadujesz moduł .wasm do swojego projektu, będziesz chciał go użyć. Ten artykuł pokaże Ci jak używać modułów WA za pomocą WebAssembly JavaScript API.
Wyeksportowane funkcje WebAssembly
Wyeksportowane funkcje WebAssembly są odpowiednikiem zwykłych funkcji i pozwalają na wywołanie kodu WebAssembly wewnątrz JavaScript. Artykuł opisuje czym są i jak ich używać.
Zrozumieć format tekstowy WebAssembly
Artykuł tłumaczy format tekstowy wasm. Jest to niskopoziomowa tekstowa reprezentacja modułu .wasm pokazywana w przeglądarce w narzędziach developerskich przy debugowaniu.
Konwersja formatu tekstowego WebAssembly do wasm
Dowiesz się tutaj jak skonwertować moduł WebAssembly napisany w formacie tekstowym do modułu binarnego .wasm.

API

{{jsxref("Global_objects/WebAssembly", "WebAssembly")}}
Obiekt przestrzeni nazw dla wszystkich metod powiązanych z WebAssembly.
{{jsxref("Global_objects/WebAssembly/Module", "WebAssembly.Module")}}
Obiekt WebAssembly.Module zawiera bezstanowy kod  WebAssembly, który już został skompilowany przez przeglądarkę i może być skutecznie współdzielony z Workerami czy zachachowany w IndexedDB.
{{jsxref("Global_objects/WebAssembly/Instance", "WebAssembly.Instance")}}
Obiekt WebAssembly.Instance jest stanową, wykonywalną instancją modułu. Obiekt Instance zawiera wyeksportowane funkcje WebAssembly, które pozwalają na wywołanie bezpośrednio w kodzie JavaScript.
A WebAssembly.Instance object is a stateful, executable instance of a ModuleInstance objects contain all the Exported WebAssembly functions that allow calling into WebAssembly code from JavaScript.
{{jsxref("Global_objects/WebAssembly/instantiate", "WebAssembly.instantiate()")}}
WebAssembly.instantiate() jest główną metodą API służącą do kompilowania i tworzenia gotowych do użycia instancji kodu WebAssembly. Zwraca Module oraz Instance.
{{jsxref("Global_objects/WebAssembly/Memory", "WebAssembly.Memory()")}}
WebAssembly.Memory jest obiektem zawierającym rozszerzalny {{jsxref("Global_objects/ArrayBuffer", "ArrayBuffer")}}, który przechowuje bajty pamięci dostępnej dla Instance.
{{jsxref("Global_objects/WebAssembly/Table", "WebAssembly.Table()")}}
WebAssembly.Table obiekt jest rozszerzalnym {{jsxref("Global_Objects/TypedArray", "TypedArray")}}
{{jsxref("WebAssembly.CompileError()")}}
Tworzy nowy obiekt CompileError.
{{jsxref("WebAssembly.LinkError()")}}
Tworzy nowy obiekt LinkError.
{{jsxref("WebAssembly.RuntimeError()")}}
Tworzy nowy obiekt RuntimeError.

Przykłady

Specyfikacja

Specyfikacja Status Komentarz
{{SpecName('WebAssembly JS')}} {{Spec2('WebAssembly JS')}} Wstępna szkicowa definicja JavaScript API .

Kompatybilność

{{CompatibilityTable}}
Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support {{CompatChrome(57)}} 15[2] {{CompatGeckoDesktop(52)}}[1] {{CompatNo}} {{CompatOpera(44)}} 11
Feature Android Webview Chrome for Android Edge Mobile Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support {{CompatChrome(57)}} {{CompatChrome(57)}} {{CompatNo}} {{CompatGeckoMobile(52)}}[1] {{CompatNo}} {{CompatNo}} 11

[1] WebAssembly jest włączone w Firefox 52+, jednakże wyłączone w Firefox 52 Extended Support Release (ESR.)

[2] Currently supported behind the “Experimental JavaScript Features” flag. See this blog post for more details.

Zobacz także