From 55ddd4454665a3c66e3d5b186bc79048468d36e7 Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Mon, 15 Mar 2021 14:29:50 +0300 Subject: Auto fixes --- files/ru/webassembly/c_to_wasm/index.html | 6 +++--- files/ru/webassembly/concepts/index.html | 2 +- files/ru/webassembly/exported_functions/index.html | 2 +- files/ru/webassembly/rust_to_wasm/index.html | 12 ++++++------ .../ru/webassembly/understanding_the_text_format/index.html | 4 ++-- files/ru/webassembly/using_the_javascript_api/index.html | 8 ++++---- 6 files changed, 17 insertions(+), 17 deletions(-) (limited to 'files/ru/webassembly') diff --git a/files/ru/webassembly/c_to_wasm/index.html b/files/ru/webassembly/c_to_wasm/index.html index 81e1dc93a3..7f47e01433 100644 --- a/files/ru/webassembly/c_to_wasm/index.html +++ b/files/ru/webassembly/c_to_wasm/index.html @@ -20,7 +20,7 @@ translation_of: WebAssembly/C_to_wasm

Когда рабочее окружение подготовлено, попробуем собрать пример кода на языке Си при помощи Emscripten. Вам доступно большое количество опций для настройки компиляции, но мы рассмотрим только два основных сценария компиляции с использованием Emscripten:

@@ -105,7 +105,7 @@ int main(int argc, char ** argv) {
-

Примечание: Вы можете указать компилятору создавать только JavaScript кода, без HTML, используя внутри флага -o, .js вместо .html для формата выходного файла, например emcc -o hello2.js hello2.c -O3 -s WASM=1. После этого вы должны создать свой собственный HTML файл с нуля. Однако так делать не рекомендуется — Emscripten теребуется большое количество связывающего кода для обработки операций выделения памяти, утечек памяти и других проблем, которые уже включены в предоставляемый шаблон. Намного легче использовать уже готовое решение, чем создавать свои собственные версии самому.

+

Примечание: Вы можете указать компилятору создавать только JavaScript кода, без HTML, используя внутри флага -o, .js вместо .html для формата выходного файла, например emcc -o hello2.js hello2.c -O3 -s WASM=1. После этого вы должны создать свой собственный HTML файл с нуля. Однако так делать не рекомендуется — Emscripten требуется большое количество связывающего кода для обработки операций выделения памяти, утечек памяти и других проблем, которые уже включены в предоставляемый шаблон. Намного легче использовать уже готовое решение, чем создавать свои собственные версии самому.

Вызов пользовательской функции, определенной в Си

@@ -142,7 +142,7 @@ void EMSCRIPTEN_KEEPALIVE myFunction(int argc, char ** argv) {
  • -

    Теперь добавьте html_template/shell_minimal.html в ваш новый каталог, просто для удобства. В настоящем проекте стоит размещать его в специально отпределенный каталог.

    +

    Теперь добавьте html_template/shell_minimal.html в ваш новый каталог, просто для удобства. В настоящем проекте стоит размещать его в специально определенный каталог.

  • Теперь снова займемся этапом компиляции. Внутри вашего последнего каталога, используя терминал, скомпилируйте ваш Си код следующей командой. (Обратите внимание что при компиляции обязательно нужно использовать опцию NO_EXIT_RUNTIME, иначе после выполнения функции main(), рабочий цикл будет завершен. Это приведет, например, к вызову функции atexits и дальше будет невозможно использовать наш скомпилированный код. Другими словами это необходимо для правильной эмуляции Си.)

    diff --git a/files/ru/webassembly/concepts/index.html b/files/ru/webassembly/concepts/index.html index 3aa607bd3f..dde3fc40a4 100644 --- a/files/ru/webassembly/concepts/index.html +++ b/files/ru/webassembly/concepts/index.html @@ -117,7 +117,7 @@ translation_of: WebAssembly/Concepts

    Таким образом, часть связующего кода предоставляет функциональность каждой библиотеки, используемой кодом C/C++. Связующий код также содержит логику для вызова вышеупомянутых WebAssembly JavaScript API для извлечения, загрузки и запуска файла .wasm.

    -

    Сгенерированный HTML-документ загружает связующий файл JavaScript и может записать stdout в {{htmlelement("textarea")}}. Если приложение использует OpenGL, HTML документ будет содержать элемент {{htmlelement("canvas")}}, который будет использоватся для  рендеринга. Очень легко изменить тип вывода комптляции Emscripten на любое веб-приложение, которое вам нужно.

    +

    Сгенерированный HTML-документ загружает связующий файл JavaScript и может записать stdout в {{htmlelement("textarea")}}. Если приложение использует OpenGL, HTML документ будет содержать элемент {{htmlelement("canvas")}}, который будет использоваться для  рендеринга. Очень легко изменить тип вывода компиляции Emscripten на любое веб-приложение, которое вам нужно.

    Вы можете найти полную документацию по Emscripten на emscripten.org, а также руководство по созданию набора инструментов и компиляции вашего собственного приложения на C/C++ в wasm в разделе Компилирование из C/C++ в WebAssembly.

    diff --git a/files/ru/webassembly/exported_functions/index.html b/files/ru/webassembly/exported_functions/index.html index bf29f3f76b..c586422de3 100644 --- a/files/ru/webassembly/exported_functions/index.html +++ b/files/ru/webassembly/exported_functions/index.html @@ -27,7 +27,7 @@ translation_of: WebAssembly/Exported_functions

    Пример

    -

    Давайте посмотрим на пример, чтобы прояснить ситуацию (вы можете найти его на GitHub как table-set.html или запустить в своем браузере, и посмотерть текстовое представление модуля wasm):

    +

    Давайте посмотрим на пример, чтобы прояснить ситуацию (вы можете найти его на GitHub как table-set.html или запустить в своем браузере, и посмотреть текстовое представление модуля wasm):

    var otherTable = new WebAssembly.Table({ element: "anyfunc", initial: 2 });
     
    diff --git a/files/ru/webassembly/rust_to_wasm/index.html b/files/ru/webassembly/rust_to_wasm/index.html
    index efc4bd52d0..629987ff09 100644
    --- a/files/ru/webassembly/rust_to_wasm/index.html
    +++ b/files/ru/webassembly/rust_to_wasm/index.html
    @@ -29,7 +29,7 @@ translation_of: WebAssembly/Rust_to_wasm
     

    Чтобы установить Rust, посетите Install Rust страницу и проследуйте всем инструкциям. Так вы установите тулзу, называемую "rustup", которая позволит вам управлять несколькими версиями Rust. По умолчанию, она устанавливает последний стабильный релиз Rust, который вы будете использовать для стандартной разработки на Rust. Rustup устанавливает rustc, компилятор Rust, вместе с cargo, Rust-овским пакетным менеджером, rust-std, стандартной  библиотекой Rust, и несколькими вспомогательными доками — rust-docs.

    -

    Заметка: Обратите внимание на пост-установочную заметку о необходимости добавить cargo bin директорию в список PATH. Она должна быть добавлена автоматически, но вам нужно будет перезапустить терминал, чтобы изменения втсупили в силу.

    +

    Заметка: Обратите внимание на пост-установочную заметку о необходимости добавить cargo bin директорию в список PATH. Она должна быть добавлена автоматически, но вам нужно будет перезапустить терминал, чтобы изменения вступили в силу.

    wasm-pack

    @@ -111,7 +111,7 @@ pub fn greet(name: &str) { }
    -

    Это содержимое нашего проекта на Rust. У него есть три основные части, давайте пройдемся по ним по очереди. Мы дадим здесь обощенное пояснение и поясним некоторые детали; чтобы узнать больше о Rust, пожалуйста, просмотрите бесплатную online-книгу The Rust Programming Language.

    +

    Это содержимое нашего проекта на Rust. У него есть три основные части, давайте пройдемся по ним по очереди. Мы дадим здесь обобщенное пояснение и поясним некоторые детали; чтобы узнать больше о Rust, пожалуйста, просмотрите бесплатную online-книгу The Rust Programming Language.

    Использование wasm-bindgen для коммуникации между Rust и JavaScript

    @@ -164,7 +164,7 @@ pub fn greet(name: &str) {

    Еще раз, мы видим #[wasm_bindgen] атрибут. В этом случае, он модифицирует не блок extern, а fn; это значит, что мы хотим, чтобы эта функция на Rust была доступна для JavaScript. Прямо противоположно extern: это не те функции, которые нам нужны, а те, что мы предоставляем миру!

    -

    Наша функция называется greet, и она принимает один аргумент, строку (пишется &str), name. Затем она вызывает функцию alert, которую мы запросили в блоке extern выше. Она передает вызов макросу format!, который позволяет нам соеденить строки.

    +

    Наша функция называется greet, и она принимает один аргумент, строку (пишется &str), name. Затем она вызывает функцию alert, которую мы запросили в блоке extern выше. Она передает вызов макросу format!, который позволяет нам соединить строки.

    format! принимает два аргумента в нашем случае: форматируемую строку и переменную, которую должен в нее поместить. Форматируемая строка это "Hello, {}!" часть. Она содержит {}, куда будет вставлена переменная. Переменная, которую мы передаем, это name, аргумент функции, так что если мы вызовем greet("Steve"), то увидим "Hello, Steve!".

    @@ -174,7 +174,7 @@ pub fn greet(name: &str) {

    Компиляция кода в WebAssembly

    -

    Чтобы правильно скомпилить наш код, сначала нам надо сконфигурировать его с помощью Cargo.toml. Октройте этот файл и измените его так, чтобы он выглядел следующим образом:

    +

    Чтобы правильно скомпилить наш код, сначала нам надо сконфигурировать его с помощью Cargo.toml. Откройте этот файл и измените его так, чтобы он выглядел следующим образом:

    [package]
     name = "hello-wasm"
    @@ -258,7 +258,7 @@ $ cd site
     }
     
    -

    Заметьте, что вам нужно ввести свое пользовательское имя после @ в секции зависемостей.

    +

    Заметьте, что вам нужно ввести свое пользовательское имя после @ в секции зависимостей.

    Дальше нам нужно сконфигурировать Webpack. Создайте webpack.config.js и введите следующее:

    @@ -305,7 +305,7 @@ js.then(js => { $ npm run serve -

    Так мы запустим сервер. Откройте http://localhost:8080 и вы увидете алерт с надписью Hello, WebAssembly!  в нем! Мы успешно обратились из JavaScript в Rust и из Rust в JavaScript.

    +

    Так мы запустим сервер. Откройте http://localhost:8080 и вы увидите алерт с надписью Hello, WebAssembly!  в нем! Мы успешно обратились из JavaScript в Rust и из Rust в JavaScript.

    Заключение

    diff --git a/files/ru/webassembly/understanding_the_text_format/index.html b/files/ru/webassembly/understanding_the_text_format/index.html index 9acdd0af80..38934e21f2 100644 --- a/files/ru/webassembly/understanding_the_text_format/index.html +++ b/files/ru/webassembly/understanding_the_text_format/index.html @@ -173,7 +173,7 @@ translation_of: WebAssembly/Understanding_the_text_format

    Вызов функций из других функций в том же модуле

    -

    Для вызова функци по индексу или имени используется инструкция call. Например, следующий модуль содержит две функции - первая просто возвращает значение 42, вторая возвращает сумму результата вызова первой функции и единицы:

    +

    Для вызова функции по индексу или имени используется инструкция call. Например, следующий модуль содержит две функции - первая просто возвращает значение 42, вторая возвращает сумму результата вызова первой функции и единицы:

    (module
       (func $getAnswer (result i32)
    @@ -243,7 +243,7 @@ WebAssembly.instantiateStreaming(fetch('logger.wasm'), importObject)
     
     

    Определение глобальных переменных WebAssembly

    -

    WebAssembly имеет возможность создавать экземпляры глобальных переменных. Они доступны как в коде JavaScript, так и через импорт / экспорт для одиного и более экземпляров {{jsxref("WebAssembly.Module")}}. Это очень полезная возможность в плане динамического связывания нескольких модулей.

    +

    WebAssembly имеет возможность создавать экземпляры глобальных переменных. Они доступны как в коде JavaScript, так и через импорт / экспорт для одного и более экземпляров {{jsxref("WebAssembly.Module")}}. Это очень полезная возможность в плане динамического связывания нескольких модулей.

    В текстовом формате WebAssembly это выглядит примерно так (смотрите файл global.html в нашем репозитории на GitHub; смотрите также вживую):

    diff --git a/files/ru/webassembly/using_the_javascript_api/index.html b/files/ru/webassembly/using_the_javascript_api/index.html index d480825a10..21a38cbbc4 100644 --- a/files/ru/webassembly/using_the_javascript_api/index.html +++ b/files/ru/webassembly/using_the_javascript_api/index.html @@ -65,7 +65,7 @@ translation_of: WebAssembly/Using_the_JavaScript_API

    Эти методы не получают непосредственно доступ к байт-коду, так что требуется дополнительный шаг помещения ответа загрузки файла в объект {{domxref("ArrayBuffer")}} перед компилированием и созданием экземпляра wasm-модуля.

    -

    Эквивалентный код будет выглядить так:

    +

    Эквивалентный код будет выглядеть так:

    fetch('simple.wasm').then(response =>
       response.arrayBuffer()
    @@ -101,7 +101,7 @@ translation_of: WebAssembly/Using_the_JavaScript_API
     
       
    var memory = new WebAssembly.Memory({initial:10, maximum:100});
    -

    Единицы измерения начальной (initial) и максимальной (maximum) памяти имеют фиксированый размер в 64KB. Это означает, что в нашем случае объект памяти при создании имеет 640KB, а его максимальный возможный размер будет 6.4MB.

    +

    Единицы измерения начальной (initial) и максимальной (maximum) памяти имеют фиксированный размер в 64KB. Это означает, что в нашем случае объект памяти при создании имеет 640KB, а его максимальный возможный размер будет 6.4MB.

    Объект памяти WebAssembly предоставляет свой хранимый диапазон байт через getter/setter свойства buffer, которое возвращает объект ArrayBuffer. Для примера, чтобы записать число 42 в первое слово линейной памяти, вы можете сделать это:

    @@ -136,7 +136,7 @@ translation_of: WebAssembly/Using_the_JavaScript_API
    1. -

      Сопируйте файл memory.wasm в локальную директорию в которой вы работаете.

      +

      Скопируйте файл memory.wasm в локальную директорию в которой вы работаете.

      Примечание: Вы можете увидеть текстовое представление модуля в файле memory.wat.

      @@ -236,7 +236,7 @@ console.log(tbl.get(1)());  // 42

    Вы можете видеть, что он принимает 2 параметра:

      -
    • Обьект, который содержит 2 свойства, описывающих глобальную переменную: +
    • Объект, который содержит 2 свойства, описывающих глобальную переменную:
      • value: это тип данных, который может быть одним из типов данных, позволенных внутри WebAssembly модуля — i32, i64, f32, или f64.
      • mutable: булево значение, определяющее что переменная может изменяться.
      • -- cgit v1.2.3-54-g00ecf