WebAssembly, или сокращенно Wasm, — это низкоуровневый формат байт-кода, который запускается в браузере так же, как JavaScript. Он разработан так, чтобы анализировать его быстрее, чем JavaScript, а также быстрее выполнять, что делает его подходящей целью компиляции для новых и существующих языков.
Этот репозиторий содержит список языков, которые в настоящее время компилируются или имеют свои виртуальные машины в WebAssembly (wasm).
? - В производстве.
? - Стабилен для производственного использования.
? - Нестабильно, но можно использовать.
? - Работа продолжается.
☠️ – не поддерживается или устарел.
Unmaintained
Unmaintained
Unmaintained
Unmaintained
Unmaintained
Unmaintained
Unmaintained
Unmaintained
.NET Framework — это программная платформа, разработанная Microsoft и работающая в основном в Microsoft Windows. Он включает в себя большую библиотеку классов под названием Framework Class Library (FCL) и обеспечивает языковую совместимость (каждый язык может использовать код, написанный на других языках) на нескольких языках программирования.
Ада — это структурированный, статически типизированный, императивный и объектно-ориентированный язык программирования высокого уровня, вдохновленный Паскалем и другими языками. Он имеет встроенную языковую поддержку для проектирования по контракту (DbC), чрезвычайно строгую типизацию, явный параллелизм, задачи, синхронную передачу сообщений, защищенные объекты и недетерминизм. Ada повышает безопасность и удобство сопровождения кода, используя компилятор для поиска ошибок в пользу ошибок времени выполнения.
AssemblyScript — это новый компилятор, ориентированный на WebAssembly, использующий синтаксис TypeScript и динамичную экосистему узла. Вместо того, чтобы требовать установки сложных наборов инструментов, вы можете просто установить их с помощью npm или запустить в браузере.
Astro — это интересный и безопасный язык для быстрого прототипирования и высокопроизводительных приложений.
Unmaintained
Ballerina — это язык программирования с открытым исходным кодом для облака, который упрощает использование, объединение и создание сетевых сервисов. Компилятор WebAssembly реализован для собственного компилятора Ballerina nBallerina.
BASIC (аббревиатура от «Универсальный код символьных инструкций для начинающих») — один из первых языков программирования общего назначения и высокого уровня. Это по-прежнему один из самых простых и легких в изучении языков.
basic2wasm
, который компилирует BASIC в WebAssembly с использованием двоичного файла.Brainfuck — это эзотерический язык программирования, созданный в 1993 году Урбаном Мюллером и отличающийся крайним минимализмом. Язык состоит всего из восьми простых команд и указателя инструкций. Хотя он полностью по Тьюрингу, он предназначен не для практического использования, а для того, чтобы бросать вызов и развлекать программистов.
C — это императивный язык программирования общего назначения, поддерживающий структурное программирование, область видимости лексических переменных и рекурсию, а система статических типов предотвращает множество непреднамеренных операций. Первоначально язык C был разработан Деннисом Ритчи между 1969 и 1973 годами в Bell Labs[6] и использовался для повторной реализации операционной системы Unix.
C# — это многопарадигмальный язык программирования, охватывающий строгую типизацию, императивную, декларативную, функциональную, универсальную, объектно-ориентированную (на основе классов) и компонентно-ориентированную дисциплины программирования. Его команду разработчиков возглавляет Андерс Хейлсберг. Поддержка WebAssembly осуществляется через Blazor.
C++ — язык программирования общего назначения. Он обладает императивными, объектно-ориентированными и общими функциями программирования, а также предоставляет возможности для низкоуровневых манипуляций с памятью. Он был разработан с уклоном в сторону системного программирования и встроенных, ограниченных в ресурсах и больших систем, а его дизайн подчеркивает производительность, эффективность и гибкость использования. Разработка языка была начата в 1979 году Бьярном Страуструпом как «C с классами».
C4wa («C для веб-сборки») — это подмножество стандарта C, специально предназначенное для простой и эффективной компиляции веб-сборки. Сгенерированные файлы WASM не содержат дополнительных затрат, готовы к использованию в любой среде выполнения веб-сборки, поддерживают импорт функций с переменными аргументами (например,
printf
). Существует также возможность создавать хорошо отформатированные и читаемые файлы WAT.
Clean — это современный, чистый и ленивый функциональный язык программирования общего назначения, предназначенный для создания реальных приложений. Некоторые из его наиболее примечательных особенностей языка — это уникальная типизация, динамическая типизация и универсальные функции.
Язык программирования, похожий на Go и TypeScript.
COBOL — это компилируемый английский язык программирования, предназначенный для использования в бизнесе. Он императивен, процедурен и объектно-ориентирован. COBOL в основном используется в бизнесе, финансах и административных системах.
Crystal — это язык программирования, преследующий следующие цели:
- Иметь синтаксис, аналогичный Ruby (но совместимость с ним не является целью)
- Статическая проверка типов, но без необходимости указывать тип переменных или аргументов метода.
- Уметь вызывать код C, записывая к нему привязки в Crystal.
- Имейте оценку во время компиляции и генерацию кода, чтобы избежать шаблонного кода.
- Компилируйте в эффективный собственный код.
Быстрое, эффективное и одновременное написание сценариев. Динамический и постепенный типы; Параллелизм с волокнами; Многопоточный; Память безопасна; FFI и встраиваемый.
D — это язык программирования общего назначения со статической типизацией, доступом на системном уровне и синтаксисом, подобным C.
Доступный, портативный и продуктивный язык для создания высококачественных приложений на любой платформе.
Eclair — это минимальная и быстрая реализация журнала данных, которая компилируется в LLVM IR и WASM.
Eel — это небольшой язык, используемый, среди прочего, для написания «пресетов» визуализатора для Milkdrop, программы визуализации музыки, поставляемой с Winamp.
Elixir — это динамичный функциональный язык, предназначенный для создания масштабируемых и легко поддерживаемых приложений. Elixir построен на основе Erlang и использует те же абстракции для создания распределенных отказоустойчивых приложений.
F# — это зрелый, кроссплатформенный, функциональный язык программирования с открытым исходным кодом. Он дает пользователям и организациям возможность решать сложные вычислительные проблемы с помощью простого, удобного в обслуживании и надежного кода. Поддержка WebAssembly обеспечивается с помощью Bolero — набора бесплатных библиотек и инструментов с открытым исходным кодом, созданных на основе Blazor. F# был главным образом задуман Доном Саймом из Microsoft Research, но сейчас он поддерживается F# Foundation и его сообществом.
Faust (Functional Audio Stream) — это функциональный язык программирования, специально разработанный для обработки и синтеза сигналов в реальном времени. Отличительная характеристика Фауста должна быть составлена полностью.
Forest — это функциональный язык программирования, который компилируется в WebAssembly. Основной репозиторий содержит компилятор и основной синтаксис, реализованный в настоящее время в Haskell.
Форт — интерактивный, расширяемый, императивный, нетипизированный, основанный на стеке язык программирования.
Go — это статически типизированный компилируемый язык в традициях C, с добавленными функциями безопасности памяти, сборки мусора, структурной типизации и функций параллельного программирования в стиле CSP.
Grain — это строго типизированный функциональный язык программирования, созданный для современной сети.
Haskell — это стандартизированный чисто функциональный язык программирования общего назначения с нестрогой семантикой и строгой статической типизацией. Он назван в честь логика Хаскелла Карри.[1] Последним стандартом Haskell является Haskell 2010. По состоянию на май 2016 года группа работает над следующей версией Haskell 2020.
Idris — чисто функциональный язык программирования общего назначения с зависимыми типами. Зависимые типы позволяют определять типы на основе значений, а это означает, что некоторые аспекты поведения программы могут быть точно определены в типе. Он скомпилирован с активной оценкой. На его функции влияют Haskell и ML.
Unmaintained
Джанет создает хороший язык системных сценариев или язык для встраивания в другие программы. Это похоже на «современный Lisp» с отличным и простым взаимодействием с C и множеством типов данных, таких как массивы, структуры, таблицы и т. д.
Java — это язык программирования общего назначения, который является параллельным, основанным на классах, объектно-ориентированным и специально разработанным для того, чтобы иметь как можно меньше зависимостей реализации. Он предназначен для того, чтобы позволить разработчикам приложений «писать один раз, запускать где угодно» (WORA), а это означает, что скомпилированный код Java может работать на всех платформах, поддерживающих Java, без необходимости перекомпиляции. Java была первоначально разработана Джеймсом Гослингом в Sun Microsystems и выпущена в 1995 году как основной компонент платформы Java Sun Microsystems. Язык заимствует большую часть своего синтаксиса из C и C++, но в нем меньше возможностей низкого уровня, чем в любом из них.
JavaScript — это интерпретируемый язык программирования высокого уровня, соответствующий спецификации ECMAScript. Это язык, который также характеризуется как динамичный, слабо типизированный, основанный на прототипах и мультипарадигмальный.
Джулия с самого начала была рассчитана на высокую производительность. Программы Julia компилируются в эффективный собственный код для нескольких платформ через LLVM.
Unmaintained
KCL — это язык записей и функций на основе ограничений, который в основном используется в сценариях конфигурации и политики.
Kotlin — современный, но уже зрелый язык программирования, призванный сделать разработчиков счастливее. Он лаконичен, безопасен, совместим с Java и другими языками и предоставляет множество способов повторного использования кода на нескольких платформах для продуктивного программирования.
Kotlin/Wasm — это новая цель и набор инструментов в семействе Kotlin. Он имеет несколько особых свойств:
- Он компилируется в Wasm напрямую, без каких-либо дополнительных слоев, чтобы компилироваться как можно быстрее, в том числе постепенно в будущем.
- Он использует экспериментальные/свежие предложения, такие как GC, ссылки на типизированные функции, обработку исключений и Stringref.
Минимальный язык, скомпилированный в байт-код Wasm.
LabVIEW — это среда разработки для языка графического программирования потоков данных G, используемого для сбора данных, управления приборами и промышленной автоматизации.
Лисп (исторически LISP) — это семейство языков программирования с долгой историей и характерной префиксной записью, заключенной в круглые скобки.
Lobster — это статически типизированный язык с потокозависимым выводом типов и специализацией, подсчетом ссылок во время компиляции (анализ времени жизни), который немного похож на Python. Изначально он предназначался специально для игр. У Lobster есть собственный бэкэнд Wasm, который компилируется непосредственно в связываемые (с LLD) файлы .wasm.
Lox — это язык, созданный Бобом Нистромом и используемый для обучения компиляторов в книге «Создание интерпретаторов». Он динамически типизирован и поддерживает классы, замыкания и первоклассные функции.
Lua — это легкий многопарадигмальный язык программирования, разработанный в первую очередь для встроенных систем и клиентов.[2] Lua является кроссплатформенным, поскольку интерпретатор написан на ANSI C и имеет относительно простой C API. Первоначально Lua был разработан в 1993 году как язык расширения программных приложений для удовлетворения растущего в то время спроса на настройку.
Lys — это типизированный функциональный язык, который компилируется непосредственно в WebAssembly.
MoonBit — это комплексный набор инструментов на языке программирования для облачных и периферийных вычислений с использованием WebAssembly. Язык похож на Rust с поддержкой GC. Быстрый компилятор оптимизирован для создания очень компактных двоичных файлов WASM.
Минимальный, простой, эффективный, статически типизированный, компилируемый, метапрограммируемый, безопасный и расширяемый язык системного программирования с разновидностью Lua.
NerdLang — это разновидность JS с некоторыми дополнениями, ориентированными на эффективность. Nerd — это собственный компилятор JavaScript, целью которого является сделать JavaScript универсальным. Nerd может компилировать собственные приложения для Windows, Mac, Linux, iOS, Android, Raspberry, STM32, Arduino, Web (включая WASM) и других.
Never — простой функциональный язык программирования. Технически его можно классифицировать как функциональный язык программирования с синтаксической областью, строго типизированный, с вызовом по значению.
Необычный язык с красивыми шаблонами дизайна.
OCaml, первоначально называвшийся Objective Caml, является основной реализацией языка программирования Caml, созданного Ксавье Леруа, Жеромом Вуйоном, Дэмиеном Долижем, Дидье Реми, Аскандером Суаресом и другими в 1996 году. OCaml, являющийся членом семейства языков ML, расширяет ядро. Язык Caml с конструкциями объектно-ориентированного программирования.
Паскаль — это императивный, процедурный и объектно-ориентированный язык программирования общего назначения со статической типизацией. Компилятор Free Pascal предназначен для многих процессорных архитектур, включая wasm32; операционные системы, включая WASI; и встроенные платформы.
Perl — это язык программирования общего назначения, первоначально разработанный для манипулирования текстом, а теперь используемый для широкого круга задач, включая системное администрирование, веб-разработку, сетевое программирование, разработку графического пользовательского интерфейса и многое другое.
PHP — это язык сценариев общего назначения, который особенно подходит для веб-разработки на стороне сервера, и в этом случае PHP обычно работает на веб-сервере. Любой код PHP в запрошенном файле выполняется средой выполнения PHP, обычно для создания динамического содержимого веб-страницы или динамических изображений, используемых на веб-сайтах или в других местах.
Plorth — это стековой конкатенативный строго типизированный функциональный язык сценариев, который легко встроить в приложения, написанные на C++. Он вдохновлен языками программирования Forth и Factor.
Poetry — это поэтически динамичный и простой язык программирования, который компилируется в WebAssembly. Он имеет минималистичный синтаксис, похожий на CoffeeScript, и дает вам полный контроль над импортом и экспортом Wasm.
Python — это интерпретируемый язык программирования высокого уровня с открытым исходным кодом для программирования общего назначения. Созданный Гвидо ван Россумом и впервые выпущенный в 1991 году, Python имеет философию дизайна, которая подчеркивает читаемость кода, в частности, используя значительное количество пробелов. Он предоставляет конструкции, которые позволяют четко программировать как в малых, так и в больших масштабах.
Пролог — это язык логического программирования общего назначения, связанный с искусственным интеллектом и компьютерной лингвистикой. Пролог уходит своими корнями в логику первого порядка, формальную логику, и в отличие от многих других языков программирования, Пролог задуман в первую очередь как декларативный язык программирования: логика программы выражается в терминах отношений, представленных в виде фактов и правил. Вычисление инициируется путем выполнения запроса по этим отношениям.
R — это язык и среда для статистических вычислений и графики.
Агент открытой политики (OPA) — это механизм политики общего назначения с открытым исходным кодом, который унифицирует применение политики во всем стеке. Rego — это язык декларативной политики высокого уровня, специально созданный для выражения политик в отношении сложных иерархических структур данных.
Ring — это простой, маленький и гибкий практический многопарадигмальный язык общего назначения. Поддерживаемые парадигмы программирования: императивное, процедурное, объектно-ориентированное, функциональное, метапрограммирование, декларативное программирование с использованием вложенных структур и естественное программирование. Язык является портативным (MS-DOS, Windows, Linux, macOS, Android, WebAssembly и т. д.) и может использоваться для создания консольных, графических, веб-приложений, игр и мобильных приложений.
Быстрый, дружелюбный и функциональный язык. Компилируется в машинный код или WASM. Roc — прямой потомок языка программирования Elm.
Ruby — это интерпретируемый язык программирования высокого уровня с открытым исходным кодом для программирования общего назначения. Создано Мац. У Ruby есть философия дизайна, которая подчеркивает читаемость кода, в частности, используя как можно меньше символов (специальных символов
:.{}%[]&=>;
).
Rust — это язык системного программирования, спонсируемый компанией Mozilla Research, которая описывает его как «безопасный, параллельный, практичный язык», поддерживающий функциональные и императивно-процедурные парадигмы. Rust синтаксически похож на C++, но его разработчики задумали обеспечить лучшую безопасность памяти при сохранении производительности.
wasm32-unknown-unknown
target — серверная часть компилятора Rust для WebAssembly (без необходимости использования Emscripten).Scheme — это язык программирования, который поддерживает несколько парадигм, включая функциональное программирование и императивное программирование, и является одним из двух основных диалектов Lisp. В отличие от Common Lisp, другого основного диалекта, Scheme следует минималистской философии проектирования, определяющей небольшое стандартное ядро с мощными инструментами для расширения языка.
Scopes — это язык программирования общего назначения и инфраструктура компилятора, специально предназначенная для быстрого прототипирования и разработки высокопроизводительных приложений, требующих многоэтапной компиляции во время выполнения.
Speedy.js — это компилятор хорошо продуманного, свободного от проблем с производительностью подмножества JavaScript, ориентированного на WebAssembly. Поскольку WebAssembly имеет статическую типизацию, в проекте используется TypeScript для проверки типов и определения типов программных символов.
Unmaintained
Swift — это многопарадигмальный компилируемый язык программирования общего назначения, разработанный Apple Inc. для iOS, macOS, watchOS, tvOS, Linux и z/OS.
Tcl (Tool Command Language) — очень мощный, но простой в освоении язык динамического программирования, зрелый, но развивающийся, легко расширяемый и подходящий для очень широкого спектра применений.
Theta — это современный функциональный язык программирования общего назначения со строгой системой типов и выразительным синтаксисом. Он имеет модульную конструкцию и поддерживает сопоставление с образцом, перегрузку функций и другие возможности.
TurboScript — это экспериментальный язык программирования для параллельного программирования для Интернета, который компилируется в JavaScript (asm.js) и WebAssembly (ориентированный на пост-MVP). Синтаксис аналогичен TypeScript, а компилятор имеет открытый исходный код и написан на TypeScript. TurboScript не имеет никаких зависимостей.
TypeScript — это язык программирования с открытым исходным кодом, разработанный и поддерживаемый Microsoft. Это строгая синтаксическая расширенная версия JavaScript, добавляющая в язык дополнительную статическую типизацию.
V - это статически напечатанный составной язык программирования, предназначенный для построения обслуживания программного обеспечения.
Быстрый и легкий безопасный, сборный мусорный язык систем. Его компилятор производит оптимизированные, автономные нативные исполняемые файлы, модули Webassembly или банки для JVM.
WA-это язык программирования общего назначения, предназначенный для разработки программного обеспечения для обеспечения надежности и обслуживаемости. Вместо того, чтобы потребовать настройки сложных инструментов, вы можете просто установить его - или запустить в браузере.
凹语言 ™ (凹读音 «wa») 是 针对 wasm 平台设计的的通用编程语言 , 支持 Linux 、 macos 和 Windows等主流操作系统和 хром 等浏览器环境 同时也支持作为独立 Shell 脚本和被嵌入脚本模式执行。
Wah - это немного более высокого уровня языка, который является суперсетом Webassembly. Он направлен на то, чтобы сделать текстовый формат Webassembly немного более дружелюбным для людей, без введения нового синтаксиса или данных данных.
Unmaintained
Уолт является альтернативным синтаксисом для формата текста Webassembly. Это эксперимент для использования синтаксиса JavaScript для написания как можно «близко к металлу». Это JavaScript с правилами. .WALT -файлы компилируются непосредственно в двоичный формат WebAssembly.
Unmaintained
Macro Language Webassembly: WAM Syntax - это почти суперсет синтаксиса WAST, который более удобен для того, чтобы разработчики писать напрямую.
Unmaintained
WASE: Webassembly сделан легко. Вас - это язык, который пытается сделать Wasm легко написать. Языковые карты тесно связаны с Webassembly и компилируются непосредственно на Bytecode Wasm. Имеет сильную набор с типовым выводом.
Да, webassembly.
Wasm3
является самым быстрым интерпретатором Webassembly, который позволяет самостоятельно управлять Webassembly.
Wonkey-это легкий, ориентированный на объектно, современный и кроссплатформенный язык программирования для создания кроссплатформенных видеоигр, сильно вдохновленных «блицбазическим» диапазоном языков.
Lisp-подобный язык, который компилируется для webassembly, написанного в ракетке
Unmaintained
Компилятор игрушки C для X86-64 и WASM
Zig-это язык программирования общего назначения, разработанный для надежности, оптимальности и обслуживания.
Пожалуйста, прочитайте рекомендации взноса, если вы хотите внести свой вклад.
В той мере, что в соответствии с законом, Стив Акиними отказался от всех авторских прав и связанных или соседних прав на эту работу.