aboutsummaryrefslogtreecommitdiff
path: root/files/ru/webassembly/index.html
blob: 0a6210d9a3ce4286366766950e6f5e2ecaa2d11f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
---
title: WebAssembly
slug: WebAssembly
translation_of: WebAssembly
---
<div>{{WebAssemblySidebar}}</div>

<p class="summary" dir="ltr" id="docs-internal-guid-22bb55aa-d69e-e8ef-cbc6-aafea272f684">WebAssembly – это новый открытый формат байт-кода, исполняемого современными браузерами. Он позволяет переносить код, написанный на таких языках как C, C++, C#, Rust, в низкоуровневые ассемблерные инструкции и использовать его в сети. Формат имеет компактные размеры, высокую производительность, близкую к нативной, и может одновременно работать с  JavaScript.</p>

<h2 dir="ltr" id="В_двух_словах">В двух словах</h2>

<p dir="ltr">WebAssembly оказывает огромное влияние на веб-платформу — он предоставляет способ исполнения кода, написанного на различных языках, в сети, со скоростью близкой к нативной, чего ранее невозможно было достичь.</p>

<p dir="ltr">WebAssembly разработан для дополнения JavaScript – используя WebAssembly JavaScript API вы можете загружать модули WebAssembly в приложения JavaScript и обеспечивать взаимодействие между ними, используя общие функции. Такой подход позволяет вам получить производительность и мощность WebAssembly, а также выразительность и гибкость JavaScript в ваших приложениях, даже если вы не знаете как писать код WebAssembly, а используете готовые модули.</p>

<p dir="ltr">И что ещё лучше, так это то, что WebAssembly разрабатывается как веб-стандарт <a href="https://www.w3.org/wasm/">W3C WebAssembly Working Group</a> и <a href="https://www.w3.org/community/webassembly/">Community Group</a> при активном участии основных производителей браузеров.</p>

<div class="row topicpage-table">
<div class="section">
<h2 dir="ltr" id="Руководства">Руководства</h2>

<dl>
 <dt><a href="/ru/docs/WebAssembly/Concepts">Основы WebAssembly</a></dt>
 <dd>Прежде всего, начните с чтения общего описания WebAssembly - что это такое, чем это может быть полезно, почему он подходит для веб-платформы и как его использовать.</dd>
 <dt><a href="/en-US/docs/WebAssembly/C_to_wasm">Компиляция кода C/C++ в WebAssembly</a></dt>
 <dd>После того как вы написали код на C / C ++, вы можете скомпилировать его в .wasm, например, с помощью инструмента <a href="/en-US/docs/Mozilla/Projects/Emscripten/">Emscripten</a>. Давайте посмотрим, как это работает.</dd>
 <dt><a href="https://developer.mozilla.org/en-US/docs/WebAssembly/existing_C_to_wasm">Компиляция существующего кода C в WebAssembly</a></dt>
 <dd>Главное, что позволяет WebAssembly, это использование огромного множества разнообразных и проверенных временем библиотек, написанных на языке C, в сети.</dd>
 <dt><a href="/ru/docs/WebAssembly/Loading_and_running">Загрузка и запуск кода WebAssembly</a></dt>
 <dd>После того, как у вас появился .wasm, эта статья расскажет, как из него получить, скомпилировать и создать экземпляр модуля, совмещая <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly">WebAssembly JavaScript API</a> c <a href="/en-US/docs/Web/API/Fetch_API">Fetch</a> или <a href="/en-US/docs/Web/API/XMLHttpRequest">XHR</a> API.</dd>
 <dt><a href="/en-US/docs/WebAssembly/Caching_modules">Кеширование скомпилированных модулей WebAssembly</a></dt>
 <dd>Кеширование больших модулей WebAssembly на клиенте полезно для повышения скорости запуска приложений. В этой статье объясняется, как это сделать с помощью <a href="/en-US/docs/Web/API/IndexedDB_API">IndexedDB</a>.</dd>
 <dt><a href="/ru/docs/WebAssembly/Using_the_JavaScript_API">Использование WebAssembly JavaScript API</a></dt>
 <dd>После того, как вы загрузили модуль .wasm, вы захотите его использовать. В этой статье мы покажем вам, как использовать WebAssembly через WebAssembly JavaScript API.</dd>
 <dt><a href="/en-US/docs/WebAssembly/Exported_functions">Экспортируемые функции WebAssembly</a></dt>
 <dd>Экспортируемые функции WebAssembly — это функции нативного модуля, доступные в JavaScript, которые позволяют вызывать код WebAssembly из JavaScript. В этой статье описывается, что они из себя представляют.</dd>
 <dt><a href="/ru/docs/WebAssembly/Understanding_the_text_format">Описание текстового формата WebAssembly</a></dt>
 <dd>Эта статья описывает текстовый формат WebAssembly. Это низкоуровневое текстовое представления модулей .wasm используемое в инструментах разработчика во время отладки.</dd>
 <dt><a href="/en-US/docs/WebAssembly/Text_format_to_wasm">Перевод из текстового формата WebAssembly в wasm</a></dt>
 <dd>Эта статья содержит руководство по переводу модулей WebAssembly, написанных в текстовом формате, в двоичный файл .wasm.</dd>
</dl>
</div>

<div class="section">
<h2 dir="ltr" id="Ссылки_на_API">Ссылки на API</h2>

<dl>
 <dt>{{jsxref("Global_objects/WebAssembly", "WebAssembly")}}</dt>
 <dd>Этот объект является пространством имён для всех функций, связанных с WebAssembly.</dd>
 <dt>{{jsxref("Global_objects/WebAssembly/Module", "WebAssembly.Module()")}}</dt>
 <dd>Объект <code>WebAssembly.Module</code> содержит не контролируемый WebAssembly код, который уже скомпилирован браузером и может эффективно использоваться совместно с<a href="/en-US/docs/Web/API/Worker/postMessage"> Workers</a>, <a href="/en-US/docs/WebAssembly/Caching_modules">кешироваться в IndexedDB</a>, и иметь несколько экземпляров.</dd>
 <dt>{{jsxref("Global_objects/WebAssembly/Instance", "WebAssembly.Instance()")}}</dt>
 <dd>Объект <code>WebAssembly.Instance</code> это контролируемый, исполняемый экземпляр <code>Module</code><code>Instance</code> содержит все  <a href="/en-US/docs/WebAssembly/Exported_functions">экспортированные функции WebAssembly</a>, которые позволяют вызывать код WebAssembly из JavaScript.</dd>
 <dt>{{jsxref("Global_objects/WebAssembly/instantiateStreaming", "WebAssembly.instantiateStreaming()")}}</dt>
 <dd>Функция <code>WebAssembly.instantiateStreaming()</code> является основной для компиляции и создания экземпляра кода WebAssembly, возвращающая одновременно <code>Module</code> и <code>Instance</code>.</dd>
 <dt>{{jsxref("Global_objects/WebAssembly/Memory", "WebAssembly.Memory()")}}</dt>
 <dd><code>WebAssembly.Memory</code> это изменяемый {{jsxref("Global_objects/ArrayBuffer", "ArrayBuffer")}} содержащий в себе данные не имеющие типа к которым обращается <code>Instance</code>.</dd>
 <dt>{{jsxref("Global_objects/WebAssembly/Table", "WebAssembly.Table()")}}</dt>
 <dd><code>WebAssembly.Table</code> объект является изменяемым типизированным массивом значений, таких как ссылки на функции, которые доступны <code>Instance</code>.</dd>
 <dt>{{jsxref("WebAssembly.CompileError()")}}</dt>
 <dd>Создаёт новый WebAssembly <code>CompileError</code> объект.</dd>
 <dt>{{jsxref("WebAssembly.LinkError()")}}</dt>
 <dd>Создаёт новый WebAssembly <code>LinkError</code> объект.</dd>
 <dt>{{jsxref("WebAssembly.RuntimeError()")}}</dt>
 <dd>Создаёт новый WebAssembly <code>RuntimeError</code> объект.</dd>
</dl>
</div>
</div>

<h2 dir="ltr" id="Примеры">Примеры</h2>

<ul dir="ltr">
 <li><a href="https://github.com/JasonWeathersby/WASMSobel">WASMSobel</a></li>
 <li>Больше примеров вы можете найти в нашем репозитории <a href="https://github.com/mdn/webassembly-examples/">webassembly-examples</a>.</li>
</ul>

<h2 id="Спецификация">Спецификация</h2>

<table class="standard-table">
 <thead>
  <tr>
   <th scope="col">Specification</th>
   <th scope="col">Status</th>
   <th scope="col">Comment</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>{{SpecName('WebAssembly JS')}}</td>
   <td>{{Spec2('WebAssembly JS')}}</td>
   <td>Initial draft definition of the JavaScript API.</td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_compatibility">Совместимость с браузерами</h2>

<p>{{Compat("javascript.builtins.WebAssembly")}}</p>

<h2 id="Смотрите_также">Смотрите также</h2>

<ul dir="ltr">
 <li><a href="https://research.mozilla.org/webassembly/">WebAssembly on Mozilla Research</a></li>
 <li><a href="http://webassembly.org/">webassembly.org</a></li>
 <li><a href="https://hacks.mozilla.org/category/webassembly/">WebAssembly articles on Mozilla Hacks blog</a></li>
 <li><a href="https://www.w3.org/community/webassembly/">W3C WebAssembly Community Group</a></li>
 <li><a href="/en-US/docs/Web/HTTP/Headers/Large-Allocation">Large-Allocation HTTP header</a></li>
 <li><a href="https://developers.google.com/web/updates/2018/03/emscripting-a-c-library">Emscripting a C Library to Wasm</a></li>
</ul>