WebAssembly (略して wasm) は、JavaScript と同じようにブラウザーで実行される低レベルのバイトコード形式です。 JavaScript よりも解析が速く、実行も速いように設計されているため、新規および既存の言語のコンパイル ターゲットとして適しています。
このリポジトリには、現在 WebAssembly(wasm) にコンパイルされる言語、または WebAssembly(wasm) に VM がある言語のリストが含まれています。
? - 生産中。
? - 本番環境での使用に対して安定しています。
?・不安定だが使える。
? - 作業中です。
☠️ - メンテナンスされていない、または非推奨です
Unmaintained
Unmaintained
Unmaintained
Unmaintained
Unmaintained
Unmaintained
Unmaintained
Unmaintained
.NET Framework は、Microsoft によって開発されたソフトウェア フレームワークであり、主に Microsoft Windows 上で実行されます。これには、Framework Class Library (FCL) という名前の大規模なクラス ライブラリが含まれており、複数のプログラミング言語にわたる言語の相互運用性 (各言語が他の言語で記述されたコードを使用できる) を提供します。
Ada は、Pascal やその他の言語からインスピレーションを得た、構造化され、静的に型指定され、命令型のオブジェクト指向の高レベル プログラミング言語です。 Design by Contract (DbC)、非常に強力な型指定、明示的な同時実行性、タスク、同期メッセージ パッシング、保護されたオブジェクト、および非決定性の言語サポートが組み込まれています。 Ada は、コンパイラを使用して実行時エラーを優先してエラーを検出することで、コードの安全性と保守性を向上させます。
AssemblyScript は、TypeScript の構文とノードの活発なエコシステムを利用しながら、WebAssembly をターゲットとする新しいコンパイラーです。複雑なツールチェーンをセットアップする必要はなく、単に npm インストールするか、ブラウザーで実行するだけで済みます。
Astro は、ラピッド プロトタイピングや高性能アプリケーションに適した楽しく安全な言語です。
Unmaintained
Ballerina は、ネットワーク サービスの使用、結合、作成を容易にするクラウド用のオープンソース プログラミング言語です。 WebAssembly コンパイラは、ネイティブ Ballerina コンパイラ nBallerina 用に実装されています。
BASIC (「Beginners' All-Purpose Symbolic structs Code」の頭字語) は、初期の汎用および高水準プログラミング言語です。これは今でも最もシンプルで学びやすい言語の 1 つです。
basic2wasm
ツールも提供します。Brainfuck は、1993 年に Urban Müller によって作成された難解なプログラミング言語で、その極端なミニマリズムで有名です。この言語は、8 つの単純なコマンドと命令ポインターのみで構成されています。これは完全にチューリング完全ですが、実用的な使用を目的としたものではなく、プログラマに挑戦し、楽しんでもらうことを目的としています。
C は汎用の命令型コンピューター プログラミング言語であり、構造化プログラミング、字句変数スコープ、再帰をサポートしており、静的型システムにより多くの意図しない操作が防止されます。 C は元々、1969 年から 1973 年にかけてベル研究所でデニス・リッチーによって開発され [6]、Unix オペレーティング システムを再実装するために使用されました。
C# は、強力な型指定、命令型、宣言型、関数型、汎用、オブジェクト指向 (クラスベース)、およびコンポーネント指向のプログラミング分野を網羅するマルチパラダイム プログラミング言語です。開発チームは Anders Hejlsberg が率いています。 WebAssembly のサポートは、Blazor を通じて実現されます。
C++ は汎用プログラミング言語です。命令型、オブジェクト指向、および汎用プログラミング機能を備えていると同時に、低レベルのメモリ操作の機能も提供します。システム プログラミングおよび組み込み、リソースに制約のある大規模システムを重視して設計されており、パフォーマンス、効率、および使用の柔軟性を設計の重点に置いています。この言語の開発は、1979 年に Bjarne Stroustrup によって「クラス付き C」として開始されました。
C4wa (「C for Web Assembly」) は、特にシンプルで効率的な Web アセンブリのコンパイルを目的とした標準 C のサブセットです。生成された WASM ファイルにはオーバーヘッドがなく、すぐに使用できる Web アセンブリ ランタイムとの互換性があり、可変引数関数 (
printf
など) のインポートをサポートします。適切にフォーマットされた読み取り可能な WAT ファイルを作成するオプションもあります。
Clean は、現実世界のアプリケーションを作成するために設計された、汎用の最先端の純粋で遅延関数型プログラミング言語です。最も注目すべき言語機能には、一意性型付け、動的型付け、汎用関数などがあります。
Go や TypeScript に似たプログラミング言語。
COBOL は、ビジネス用途向けに設計された、英語に似たコンパイル済みプログラミング言語です。これは命令的、手続き的、オブジェクト指向です。 COBOL は主にビジネス、財務、管理システムで使用されます。
Crystal は、次の目的を備えたプログラミング言語です。
- Ruby に似た構文を持つ (ただし、Ruby との互換性は目標ではありません)
- 静的に型チェックされますが、変数やメソッド引数の型を指定する必要はありません。
- Crystal で C コードにバインディングを記述することで、C コードを呼び出すことができます。
- 定型コードを回避するために、コンパイル時にコードを評価および生成します。
- 効率的なネイティブ コードにコンパイルします。
高速かつ効率的な同時スクリプト作成。動的タイプと段階的タイプ。ファイバーとの同時実行。マルチスレッド。メモリセーフ。 FFI と埋め込み可能。
D は、静的型付け、システム レベルのアクセス、および C に似た構文を備えた汎用プログラミング言語です。
あらゆるプラットフォーム上で高品質なアプリを作成できる、親しみやすく、移植性があり、生産性の高い言語
Eclair は、LLVM IR および WASM にコンパイルされる最小限の高速 Datalog 実装です。
Eel は、Winamp に付属の音楽視覚化プログラムである Milkdrop のビジュアライザー「プリセット」を記述するために使用される小さな言語です。
Elixir は、スケーラブルで保守可能なアプリケーションを構築するために設計された動的関数型言語です。 Elixir は Erlang 上に構築され、分散型フォールトトレラント アプリケーションを構築するための同じ抽象化を共有します。
F# は、成熟したオープンソース、クロスプラットフォーム、機能優先のプログラミング言語です。これにより、ユーザーと組織は、シンプルで保守しやすく堅牢なコードを使用して、複雑なコンピューティングの問題に取り組むことができます。 WebAssembly のサポートは、Blazor 上に構築された無料のオープンソース ライブラリとツールのセットである Bolero を通じて実現されます。 F# は主に Microsoft Research の Don Syme によって考案されましたが、現在は F# Foundation とそのコミュニティによって維持されています。
Faust (Functional Audio Stream) は、リアルタイム信号処理と合成用に特別に設計された関数型プログラミング言語です。ファウストの特徴は完全にコンパイルされていることです。
Forest は、WebAssembly にコンパイルされる関数型プログラミング言語です。メイン リポジトリには、現在 Haskell で実装されているコンパイラとコア構文が含まれています。
Forth は、対話型で拡張可能、命令型、型なしのスタックベースのプログラミング言語です。
Go は、C の伝統を継承した静的型付けのコンパイル言語で、メモリ安全性、ガベージ コレクション、構造型付け、CSP スタイルの同時プログラミング機能が追加されています。
Grain は、最新の Web 用に構築された、厳密に型指定された関数型プログラミング言語です。
Haskell は、厳密ではないセマンティクスと強力な静的型付けを備えた、標準化された汎用の純粋関数型プログラミング言語です。論理学者ハスケル・カリーにちなんで命名された[1]。 Haskell の最新標準は Haskell 2010 です。2016 年 5 月現在、あるグループが次のバージョンである Haskell 2020 に取り組んでいます。
Idris は、依存型を備えた汎用の純粋関数型プログラミング言語です。依存型を使用すると、型を値に基づいて述語にすることができます。これは、プログラムの動作の一部を型内で正確に指定できることを意味します。熱心に評価してまとめています。その機能は Haskell と ML の影響を受けています。
Unmaintained
Janet は、優れたシステム スクリプト言語、または他のプログラムに埋め込むための言語を作成します。これは「最新の Lisp」のようなもので、優れた簡単な C 相互運用機能と、配列、構造体、テーブルなどのさまざまなデータ型を備えています。
Java は、並行処理、クラスベース、オブジェクト指向の汎用コンピューター プログラミング言語であり、実装の依存関係ができるだけ少なくなるように特別に設計されています。これは、アプリケーション開発者が「一度書いたら、どこでも実行できる」 (WORA) を可能にすることを目的としています。つまり、コンパイルされた Java コードは、再コンパイルすることなく、Java をサポートするすべてのプラットフォームで実行できます。 Java は元々、Sun Microsystems の James Gosling によって開発され、Sun Microsystems の Java プラットフォームのコア コンポーネントとして 1995 年にリリースされました。この言語の構文の多くは C および C++ から派生していますが、低レベルの機能はどちらよりも少ないです。
JavaScript は、ECMAScript 仕様に準拠した高レベルのインタープリタ型プログラミング言語です。これは、動的、弱い型付け、プロトタイプベース、およびマルチパラダイムとしても特徴付けられる言語です。
Julia は最初から高性能を目指して設計されました。 Julia プログラムは、LLVM 経由で複数のプラットフォーム用の効率的なネイティブ コードにコンパイルされます。
Unmaintained
KCL は、主に構成およびポリシーのシナリオで使用される制約ベースのレコードおよび関数型言語です。
Kotlin は、開発者をより幸せにすることを目的とした、最新ではありますがすでに成熟したプログラミング言語です。簡潔かつ安全で、Java やその他の言語と相互運用可能であり、生産的なプログラミングのために複数のプラットフォーム間でコードを再利用するための多くの方法を提供します。
Kotlin/Wasm は、Kotlin ファミリーの新しいターゲットおよびツールチェーンです。これにはいくつかの特別なプロパティがあります。
- 追加のレイヤーなしで Wasm に直接コンパイルされ、将来の増分も含めて可能な限り高速にコンパイルされます。
- GC、型付き関数参照、例外処理、Stringref などの実験的/新しい提案を使用します。
wasm バイトコードにコンパイルされた最小限の言語。
LabVIEW は、データ収集、機器制御、産業オートメーションに使用される G データフロー グラフィカル プログラミング言語の開発環境です。
Lisp (歴史的には LISP) は、長い歴史と独特の完全に括弧で囲まれた接頭辞表記を持つプログラミング言語のファミリーです。
Lobster は、フローに依存した型推論と特殊化、コンパイル時の参照カウント (ライフタイム分析) を備えた静的型付け言語で、Python に似ています。もともとはゲーム専用に作られていました。 Lobster には、リンク可能な (LLD を使用した) .wasm ファイルに直接コンパイルする独自の Wasm バックエンドがあります。
Lox は Bob Nystrom によって作成された言語で、『Crafting Interpreters』という本の中でコンパイラーを教えるために使用されています。これは動的に型付けされ、クラス、クロージャ、およびファーストクラス関数をサポートします。
Lua は、主に組み込みシステムとクライアント向けに設計された軽量のマルチパラダイム プログラミング言語です。[2] Lua は、インタープリタが ANSI C で書かれており、比較的単純な C API を備えているため、クロスプラットフォームです。 Lua はもともと 1993 年に、当時増大していたカスタマイズ需要を満たすためにソフトウェア アプリケーションを拡張するための言語として設計されました。
Lys は、WebAssembly に直接コンパイルされる型付き関数型言語です。
MoonBit は、WebAssembly を使用したクラウドおよびエッジ コンピューティング用のエンドツーエンドのプログラミング言語ツールチェーンです。この言語は GC をサポートする Rust に似ています。高速コンパイラは、非常にコンパクトな WASM バイナリを生成するように最適化されています。
Lua 風味を備えた、最小限、シンプル、効率的、静的型付け、コンパイル済み、メタプログラマブル、安全、拡張可能なシステム プログラミング言語。
NerdLang は JS を減算し、効率性を重視していくつかの追加を加えたものです。 Nerd は、JavaScript をユニバーサルにすることを目的とした JavaScript ネイティブ コンパイラーです。Nerd は、Windows、Mac、Linux、iOS、Android、Raspberry、STM32、Arduino、Web (WASM を含む) などのネイティブ アプリをコンパイルできます。
Never は単純な関数型プログラミング言語です。技術的には、構文的にスコープ指定され、厳密に型指定され、値による呼び出し、関数型プログラミング言語として分類されます。
いくつかの美しいデザインパターンを備えたフリンジ言語。
OCaml は、当初 Objective Caml と呼ばれ、プログラミング言語 Caml の主要な実装であり、1996 年にザビエル・ルロワ、ジェローム・ヴイヨン、ダミアン・ドリジェス、ディディエ・レミー、アスカンデル・スアレスらによって作成されました。ML 言語ファミリーのメンバーである OCaml は、コアを拡張します。オブジェクト指向プログラミング構造を備えた Caml 言語。
Pascal は、汎用の命令型、手続き型、オブジェクト指向の静的型付けプログラミング言語です。 Free Pascal コンパイラは、wasm32 を含む多くのプロセッサ アーキテクチャをターゲットとしています。 WASI を含むオペレーティング システム。そして組み込みプラットフォーム。
Perl は、もともとテキスト操作のために開発された汎用プログラミング言語で、現在ではシステム管理、Web 開発、ネットワーク プログラミング、GUI 開発などの幅広いタスクに使用されています。
PHP は汎用スクリプト言語であり、サーバーサイド Web 開発に特に適しています。この場合、PHP は通常、Web サーバー上で実行されます。要求されたファイル内の PHP コードはすべて、PHP ランタイムによって実行され、通常、Web サイトなどで使用される動的な Web ページ コンテンツや動的な画像が作成されます。
Plorth は、C++ で書かれたアプリケーションに簡単に埋め込める、スタック ベースの連結型の厳密に型指定された関数型スクリプト言語です。これは、Forth および Factor プログラミング言語からインスピレーションを得ています。
Poetry は詩的にダイナミックでシンプルなプログラミング言語であり、WebAssembly にコンパイルされます。 CoffeeScript に似た最小限の構文を備えており、wasm のインポートとエクスポートを完全に制御できます。
Python は、汎用プログラミング用のオープンソースの解釈型高水準プログラミング言語です。 Guido van Rossum によって作成され、1991 年に初めてリリースされた Python は、コードの可読性を重視する設計哲学を持ち、特に空白を大幅に使用します。これは、小規模と大規模の両方で明確なプログラミングを可能にする構造を提供します。
Prolog は、人工知能と計算言語学に関連する汎用論理プログラミング言語です。 Prolog は、形式論理である 1 次論理にそのルーツを持ち、他の多くのプログラミング言語とは異なり、Prolog は主に宣言型プログラミング言語として意図されています。つまり、プログラム ロジックは関係の観点から表現され、事実と規則として表現されます。計算は、これらの関係に対してクエリを実行することによって開始されます。
R は、統計コンピューティングとグラフィックスのための言語および環境です。
Open Policy Agent (OPA) は、スタック全体でポリシーの適用を統合するオープンソースの汎用ポリシー エンジンです。 Rego は、複雑な階層データ構造上でポリシーを表現することを目的として構築された高レベルの宣言型ポリシー言語です。
Ring は、シンプル、小型、柔軟な実用的な汎用マルチパラダイム言語です。サポートされているプログラミング パラダイムは、命令型、手続き型、オブジェクト指向、関数型、メタプログラミング、入れ子構造を使用した宣言型プログラミング、および Natural プログラミングです。この言語は移植可能であり (MS-DOS、Windows、Linux、macOS、Android、WebAssembly など)、コンソール、GUI、Web、ゲーム、およびモバイル アプリケーションの作成に使用できます。
高速でフレンドリーな機能的な言語。マシンコードまたはWASMにコンパイルします。 Roc は Elm プログラミング言語の直接の子孫です。
Ruby は、汎用プログラミング用のオープンソースの解釈型高水準プログラミング言語です。マッツによって作成されました。 Ruby にはコードの可読性を重視する設計哲学があり、特にシジル (特殊文字
:.{}%[]&=>;
) の使用をできる限り少なくします。
Rust は Mozilla Research が後援するシステム プログラミング言語であり、Mozilla Research はそれを関数型パラダイムと命令型手続き型パラダイムをサポートする「安全で並行性のある実用的な言語」と説明しています。 Rust は構文的には C++ に似ていますが、設計者はパフォーマンスを維持しながらメモリの安全性を向上させることを意図しています。
wasm32-unknown-unknown
target - WebAssembly 用の Rust コンパイラ バックエンド (Emscripten は必要ありません)。Scheme は、関数型プログラミングや命令型プログラミングなどの複数のパラダイムをサポートするプログラミング言語であり、Lisp の 2 つの主要な方言のうちの 1 つです。もう 1 つの主要な方言である Common Lisp とは異なり、Scheme は言語拡張のための強力なツールを備えた小さな標準コアを指定するミニマリストの設計哲学に従っています。
Scopes は汎用プログラミング言語およびコンパイラ インフラストラクチャであり、実行時に複数段階のコンパイルが必要な、短期間のプロトタイピングおよび高性能アプリケーションの開発に特に適しています。
Speedy.js は、WebAssembly を対象とした、よく考慮された、パフォーマンス上の落とし穴のない JavaScript のサブセット用のコンパイラです。 WebAssembly は静的に型指定されるため、プロジェクトでは TypeScript を型チェッカーとして使用し、プログラム シンボルの型を解決します。
Unmaintained
Swift は、Apple Inc. によって iOS、macOS、watchOS、tvOS、Linux、および z/OS 用に開発された汎用のマルチパラダイムのコンパイル済みプログラミング言語です。
Tcl (ツール コマンド言語) は、非常に強力でありながら習得が容易な動的プログラミング言語であり、成熟していますが進化しており、拡張性が高く、非常に幅広い用途に適しています。
Theta は、強力な型システムと表現力豊かな構文を備えた、最新の汎用関数型プログラミング言語です。モジュール設計を特徴としており、パターン マッチング、関数のオーバーロード、その他の機能をサポートしています。
TurboScript は、JavaScript (asm.js) および WebAssembly (MVP 以降をターゲットとする) にコンパイルされる、Web 用の並列プログラミング用の実験的なプログラミング言語です。構文は TypeScript に似ており、コンパイラはオープン ソースであり、TypeScript で書かれています。 TurboScript には依存関係がありません。
TypeScript は、Microsoft によって開発および保守されているオープンソース プログラミング言語です。これは JavaScript の厳密な構文スーパーセットであり、オプションの静的型付けを言語に追加します。
V は、保守可能なソフトウェアを構築するために設計された、静的に型付けされたコンパイル済みプログラミング言語です。
高速で軽量の安全な、ごみ収集されたシステムプログラミング言語。そのコンパイラは、JVM用の最適化されたスタンドアロンのネイティブ実行可能ファイル、WebAssemblyモジュール、またはJARを生成します。
WAは、堅牢性と保守性WebAssemblyソフトウェアを開発するために設計された汎用プログラミング言語です。複雑なツールチェーンを設定する必要がある代わりに、単にインストールするか、ブラウザで実行するだけです。
凹语言™™“ wa” )是 )是 wasm平台设计的的通用编程语言、支持linux执行。
WAHは、WebAssemblyのスーパーセットであるわずかに高いレベルの言語です。新しい構文やデータ型を導入することなく、WebAssemblyのテキスト形式を人間に対してやや友好的にすることを目指しています。
Unmaintained
Waltは、WebAssemblyテキスト形式の代替構文です。これは、JavaScript Syntaxを使用して、可能な限り「金属に近い」と書くための実験です。ルールを備えたJavaScriptです。 .waltファイルは、WebAssemblyバイナリ形式に直接コンパイルします。
Unmaintained
WebAssembly Macro Language:WAM Syntaxは、人間の開発者が直接記述する方が便利な廃棄物構文のスーパーセットに近いものです。
Unmaintained
Wase:WebAssemblyは簡単になりました。 Waseは言語であり、Wasmを簡単に書くことを試みます。言語はWebAssemblyに密接にマップし、WASM Bytecodeに直接コンパイルします。タイプの推論を備えた強いタイピングがあります。
はい、WebAssembly。
Wasm3
、WebAssemblyの自己ホーストを可能にする最速のWebAssembly通訳です。
Wonkeyは、「ブリッツバシック」範囲の言語に非常に触発された、クロスプラットフォームのビデオゲームを作成するための、学習しやすく、オブジェクト指向のモダンでクロスプラットフォームのプログラミング言語です。
ラケットで記述されたWebAssemblyにコンパイルするLISPのような言語
Unmaintained
x86-64およびwasmのおもちゃCコンパイラ
Zigは、堅牢性、最適性、保守性のために設計された汎用プログラミング言語です。
貢献したい場合は、貢献ガイドラインをお読みください。
法律の下で可能な限り、Steve Akinyemiは、この作業に対するすべての著作権および関連または隣接する権利を放棄しました。