Jump to content

Ассемблерскрипт

Ассемблерскрипт
Парадигма Мультипарадигмальность : функциональная , универсальная , императивная , объектно-ориентированная.
Семья JavaScript , TypeScript
Разработано Дэниел Вирц, [1] Макс Грей [2]
Разработчик Проект АссамблеиСкрипт [1]
Впервые появился 2017 ; 7 лет назад ( 2017 ) [3]
Стабильная версия
0.27.29 [4]  Отредактируйте это в Викиданных / 7 июля 2024 г .; 26 дней назад ( 7 июля 2024 г. )
Дисциплина набора текста Статический
Объем Лексический
Лицензия Лицензия Апач 2.0 [5]
Расширения имен файлов .тс
Форматы файлов Текст , Юникод (источник)
.wasm Бинарный формат (объект)
Веб-сайт www .assemblyscript .org
Основные реализации
asc (компилятор AssemblyScript)
Под влиянием
JavaScript , TypeScript , WebAssembly

AssemblyScript — это TypeScript на основе язык программирования , оптимизированный для WebAssembly и статически скомпилированный в него (в настоящее время используется asc , эталонный компилятор AssemblyScript). Похожий на ECMAScript и JavaScript , но со статическими типами, язык разработан проектом AssemblyScript. [6] при участии сообщества AssemblyScript.

В 2017 году доступность поддержки WebAssembly , стандартного определения низкоуровневого байт-кода и связанной с ним виртуальной машины , получила широкое распространение среди основных веб-браузеров , предоставляя веб-разработчикам низкоуровневую и потенциально более производительную цель компиляции для клиентской стороны. программы и приложения для выполнения в веб-браузерах в дополнение к интерпретируемому (и на практике динамически компилируемому ) языку веб-скриптов JavaScript . [7] программы и код, статически компилировать WebAssembly позволяет заранее чтобы они могли работать с производительностью потенциально на собственном уровне или на « голом железе » в веб-браузерах, без затрат на интерпретацию или начальной задержки динамической компиляции. [8]

С внедрением WebAssembly в основные веб-браузеры Алон Закай, создатель Emscripten , LLVM / Clang на основе компилятора C и C++ , ориентированного на подмножество JavaScript под названием asm.js , добавил поддержку WebAssembly в качестве цели компиляции в Emscripten, что позволило Программы и код C и/или C++, подлежащие компиляции непосредственно в WebAssembly. [9]

В то время как Emscripten и подобные компиляторы позволяют веб-разработчикам писать новый код или переносить существующий код, написанный на языке высокого уровня, таком как C, C++, Go и Rust , в WebAssembly, чтобы достичь потенциально более высокой производительности выполнения на собственном уровне в веб-браузерах. , это вынуждает веб-разработчиков, привыкших разрабатывать клиентские веб-скрипты и приложения на ECMAScript/JavaScript ( де-факто язык программирования на стороне клиента в веб-браузерах), использовать для WebAssembly другой язык, чем JavaScript. AssemblyScript, как вариант TypeScript, который синтаксически похож на JavaScript, позволяет разработчикам, привыкшим к JavaScript, использовать знакомый язык для работы с WebAssembly, потенциально сокращая время обучения отдельному языку, который можно скомпилировать в WebAssembly. Более того, поскольку AssemblyScript был разработан как оптимальный исходный язык для WebAssembly, система типов языка точно соответствует системе типов WebAssembly. [10] язык предоставляет стандартные низкоуровневые функции (обычно реализованные в виде макросов ), которые напрямую сопоставляются с инструкциями WebAssembly, которые отражают инструкции, доступные на современных процессорах, такие как SIMD и векторные инструкции, а также более специализированные инструкции, такие как clz (подсчитайте ведущие нули), ctz (подсчитайте конечные нулевые биты) и popcnt ( подсчет населения ), используемый в таких приложениях, как шифрование и криптографические библиотеки. [11]

asc , эталонный компилятор AssemblyScript, основан на Binaryen, наборе инструментов внутреннего компилятора, разработанном Алоном Закаи, который компилируется в WebAssembly и является компонентом Emscripten (который также разработал Закай). asc- компилятор и другие инструменты доступны через менеджер пакетов npm .

Хотя WebAssembly изначально был разработан для выполнения в веб-браузерах, разработка WASI (Системный интерфейс WebAssembly), спецификации сообщества для стандартного API , который позволяет программам WebAssembly получать доступ к системным вызовам и другим операционной системы , функциям [12] привело к разработке сред выполнения WebAssembly на основе таких проектов, как Wasmtime  [13] и Васмер  [14] которые позволяют WebAssembly и коду, написанному на таких языках, как AssemblyScript, который может компилироваться в него, работать и в средах, не являющихся веб-средами.

Совместимость с JavaScript

[ редактировать ]

AssemblyScript компилируется в модули WebAssembly, экземпляры которых затем можно создать в веб-страницах на стороне клиента с помощью стандартных методов JavaScript, таких как WebAssembly.compileStreaming и WebAssembly.instantiateStreaming точно так же, как стандартные двоичные файлы WebAssembly. [15] Передача данных между JavaScript и скомпилированными модулями WebAssembly, а также вызовы функций между JavaScript и WebAssembly выполняются так же, как и для любого модуля WebAssembly. [16]

Поскольку язык AssemblyScript в значительной степени является подмножеством TypeScript, теоретически можно написать программу AssemblyScript, используя это подмножество, и скомпилировать ее как в простой JavaScript, так и в WebAssembly, используя компилятор TypeScript и компилятор AssemblyScript соответственно. Это потенциально позволяет создавать переносимый код, который можно развертывать в средах выполнения JavaScript или WebAssembly .

Использование

[ редактировать ]

По состоянию на июль 2022 г. более 12 000 проектов, размещенных на GitHub , полностью или частично написаны на AssemblyScript, [17] с примерно 18 000 загрузок компилятора AssemblyScript в неделю через npm . [18] [19]

В 2021 году Webpack начал использовать AssemblyScript для ускорения расчета хеш-функций, таких как исходники xxhash и md4 . Это также позволило избавиться от нативных зависимостей.

Ведущий разработчик Emscripten Алон Закай охарактеризовал AssemblyScript как «разработанный с учетом WebAssembly и размера кода. Это не существующий язык, который мы используем для новых целей, а язык, разработанный для WebAssembly. wasm-opt интеграция — на самом деле, она построена на ней — и очень легко получить хороший размер кода». [20]

Норвежский музыкант Питер Саломонсен в выступлении на саммите WebAssembly 2020 года под названием «Музыка WebAssembly» продемонстрировал использование AssemblyScript для компиляции в WebAssembly в реальном времени при синтезе живой электронной музыки, сказав: «Я выбрал AssemblyScript, потому что он имеет высокий уровень читаемости и низкоуровневый контроль; это похоже на язык высокого уровня, но вы получаете ощущение низкого уровня и даже можете писать встроенные функции WebAssembly, если хотите». [21]

Аарон Тернер, старший инженер Fastly , поставщика услуг облачных вычислений, использующего WebAssembly для бессерверной вычислительной среды компании Compute@Edge, в обзоре AssemblyScript написал: [22]

Хотя AssemblyScript требует более строгой типизации, чем TypeScript, он максимально приближен к синтаксису и семантике TypeScript — а это означает, что большинству разработчиков JavaScript будет удобно использовать AssemblyScript — и обеспечивает отличную поддержку современной экосистемы JavaScript. Например, компилятор AssemblyScript доступен на npm , а также распространенные инструменты и библиотеки AssemblyScript, такие как аспект . Файлы AssemblyScript также используют ' .ts ', и он включает в себя правильную типизацию, позволяющую AssemblyScript использовать инструменты TypeScript, такие как линтер TypeScript. Если внести небольшие изменения, AssemblyScript можно будет использовать даже с компилятором TypeScript.

Это очень интересно, поскольку AssemblyScript предлагает разработчикам JavaScript минимальные затраты на выбор языка для вывода WebAssembly — как с точки зрения обучения чтению и написанию AssemblyScript, так и с точки зрения использования множества уже существующих инструментов. это может уже быть в рабочем процессе разработчика JavaScript. В сообществе WebAssembly AssemblyScript часто называют отличным средством освоения WebAssembly. Он предлагает большой группе разработчиков, которые уже пишут приложения для Интернета, возможность освоить и изучить WebAssembly. Даже если вы начинаете с нуля и не особо знакомы с JavaScript или TypeScript, AssemblyScript — хороший выбор при выборе языка для вывода WebAssembly.

Однако Тернер далее назвал относительную новизну языка и, следовательно, отсутствие некоторых функций, доступных в более крупных, сложных и устоявшихся языках программирования, потенциальными, но временными недостатками языка.

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б Проект AssemblyScript (24 апреля 2020 г.). «Рабочая группа по ассемблеру» . GitHub.com . Проект АссамблеиСкрипта . Проверено 10 февраля 2021 г. Дэниел Виртц (@dcodeIO) — автор AssemblyScript
  2. ^ Аарон Тернер (28 марта 2019 г.). «WebAssembly для разработчиков Javascript» . YouTube.com . Веб-сборка СФ . Проверено 10 февраля 2021 г. @dcodeIO [Дэниел Виртц] и @MaxGraey [Макс Грей] — два основных разработчика AssemblyScript.
  3. ^ Проект AssemblyScript (2017). «ассемблерный скрипт 0.1.0» . npmjs.com . Проект АссамблеиСкрипта . Проверено 10 февраля 2021 г.
  4. ^ «Релиз 0.27.29» . 7 июля 2024 г. . Проверено 25 июля 2024 г.
  5. ^ Проект AssemblyScript (29 сентября 2017 г.). «ЛИЦЕНЗИЯ» . GitHub.com . Проект AssemblyScript . Проверено 10 февраля 2021 г. AssemblyScript/assemblyscript лицензируется по лицензии Apache License 2.0.
  6. ^ Проект AssemblyScript. «Проект AssemblyScript» . GitHub.com . Проект AssemblyScript . Проверено 10 февраля 2021 г.
  7. ^ Группа сообщества WebAssembly (ноябрь 2017 г.). «Дорожная карта» . WebAssembly.org . Группа сообщества WebAssembly . Проверено 10 февраля 2021 г.
  8. ^ Рабочая группа WebAssembly. «Веб-сборка» . WebAssembly.org . Рабочая группа по веб-сборке . Проверено 10 февраля 2021 г.
  9. ^ Алон Закай и авторы Emscripten. «Эмскриптен» . Emscripten.org . Проект Эмскриптен . Проверено 10 февраля 2021 г. {{cite web}}: |author= имеет общее имя ( справка )
  10. ^ Проект AssemblyScript. «Типы» . Сайт АссамблеиScript.org . Проект AssemblyScript . Проверено 10 февраля 2021 г.
  11. ^ Проект AssemblyScript. "Среда" . Сайт АссамблеиScript.org . Проект AssemblyScript . Проверено 10 февраля 2012 г.
  12. ^ Проект Вастимайм. «WASI: Системный интерфейс WebAssembly» . WASI.dev . Проект Wasmtime . Проверено 10 февраля 2021 г.
  13. ^ Проект Вастимайм. «Wasmtime: небольшая и эффективная среда выполнения для WebAssembly и WASI» . Wasmtime.dev . Проект Wasmtime . Проверено 10 февраля 2021 г.
  14. ^ Wasmer, Inc. «Васмер: универсальная среда выполнения WebAssembly» . Васмер.io . Васмер, Инк . Проверено 10 февраля 2021 г.
  15. ^ Сеть разработчиков Mozilla. «Загрузка и запуск кода WebAssembly» . http://developer.mozilla.org . Сеть разработчиков Mozilla . Проверено 10 февраля 2021 г.
  16. ^ Сеть разработчиков Mozilla. «Использование API JavaScript WebAssembly» . http://developer.mozilla.org . Сеть разработчиков Mozilla . Проверено 10 февраля 2021 г.
  17. ^ Гитхаб. «График зависимостей AssemblyScript/assemblyscript» . GitHub.com . Гитхаб . Проверено 24 июня 2022 г.
  18. ^ npmjs. «Еженедельные загрузки ассемблера» . npmjs.com . npmjs.com . Проверено 24 июня 2022 г.
  19. ^ «Устранение ошибки в машинописном тексте» . 3 июня 2022 г. Суббота, 7 мая 2022 г.
  20. ^ Алон Закай (19 февраля 2020 г.). «Доставка крошечных сборок WebAssembly» . YouTube.com . WebAssembly-Summit.org . Проверено 10 февраля 2021 г.
  21. ^ Питер Саломонсен (19 февраля 2020 г.). «Музыка WebAssembly» . YouTube.com . WebAssembly-Summit.org . Проверено 10 февраля 2021 г.
  22. ^ Аарон Тернер (29 октября 2020 г.). «Знакомьтесь, AssemblyScript: ваш следующий компьютерный язык» . Fastly.com . Быстро . Проверено 10 февраля 2021 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: daba87d50c5c0cafa5b912cdbea0ad49__1709397060
URL1:https://arc.ask3.ru/arc/aa/da/49/daba87d50c5c0cafa5b912cdbea0ad49.html
Заголовок, (Title) документа по адресу, URL1:
AssemblyScript - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)