Elvelt
プロジェクト一覧に戻る
Core Infrastructure開発中

MPL_Compiler

複数のプログラミング言語(JavaScript/TypeScript、Python、C#、Go、Rust、PHP、Ruby、Java、EMPLS)をC++20へトランスパイルする多言語コンパイラ基盤。独自の中間表現「EMPL IR」を介したフロントエンド/バックエンドのプラグイン構造により、言語とターゲットを自在に拡張できます。

9言語フロントエンドEMPL IRC++20バックエンドプラグイン式

概要

MPL_Compilerは、ソースコードを「フロントエンド → EMPL IR → バックエンド → C++」というパイプラインで変換する多言語コンパイラです。動的型付け言語(JavaScript、Python、PHP、Rubyなど)と静的型付け言語(C#、Go、Rust、Javaなど)の両方をサポートし、単一のC++出力に統合します。JavaScriptフロントエンドはNode.js互換のモジュール解決、ESM/CJS、デコレーター、BigInt、ES2025の新機能まで対応しており、実際のnpmパッケージのコンパイルも可能です。CMakeベースのビルドシステムとCTestによる包括的なテストスイートを備え、品質と再現性を担保しています。

主な特徴

  • 多言語フロントエンド: JavaScript/TypeScript、Python、C#、Go、Rust、PHP、Ruby、Java、そして組み込み言語EMPLSを統一的にサポート。
  • EMPL IR: 動的型付け/静的型付けを問わず、クラス・制御構造・非同期/ジェネレーターを含むすべての言語機能を抽象化した中間表現。
  • プラグインアーキテクチャ: ILanguageFrontend/ILanguageBackendインターフェースとPluginRegistryにより、新規言語やターゲットを容易に追加可能。
  • モダンJavaScript: ESM/CJSの両方、厳格モード、クラス、デコレーター、BigInt、Symbol、for-await-of、using宣言、ES2025機能までを網羅。
  • 実パッケージ対応: 実際のnpmパッケージをNode.js互換のモジュール解決(node_modules、package.jsonのexports/imports)でコンパイル可能。

リンク

GitHubで見る

技術仕様

対応入力JavaScript/TypeScript, Python, C#, Go, Rust, PHP, Ruby, Java, EMPLS
出力ターゲットC++20ソースコード
実装言語C++20
ビルドシステムCMake 3.8+
テストCTest(広範なテストスイート)
ライセンスELVELTライセンス