Elvelt
← プロジェクト一覧に戻る
Unified Framework開発中

MPL_FrameWork

MPL_Compiler、MPL_Transpiler、MPL_Standard、EMPLSを統合した次世代の多言語開発フレームワーク。独自中間表現「EMPL IR」をコアに据え、言語の壁を越えた相互変換、高速コンパイル、統一標準ライブラリ実行基盤を提供します。

MPL_CompilerMPL_TranspilerMPL_StandardEMPLSEMPL IRC++20
Components:

概要

MPL_FrameWorkは、ELVELTが推進する「言語の境界を再定義する」包括的な多言語エコシステム基盤です。 多言語をC++20へ統合するコンパイラ「MPL_Compiler」、言語間の論理構造と文脈を保ったまま移植を行う「MPL_Transpiler」、全言語共通のランタイム仕様「MPL_Standard」、そしてこれらすべての設計を体現・検証するリファレンス言語「EMPLS」の4つの柱によって構成されています。 これらはすべて独自の中間表現「EMPL IR」をハブとして緊密に連携し、単一言語の枠を超えた真のポリグロット開発環境を実現します。

Architecture & Core Workflow

Pillar 01

MPL_Compiler

9言語フロントエンドを解析し、C++20へ最適化出力。

Target: C++20 Binary
Pillar 02

MPL_Transpiler

EMPL IRをハブとした言語間の高精度ASTロジック移植。

Target: Cross-Language
Pillar 03

MPL_Standard

言語中立な8大モジュールの標準API仕様およびC++ランタイム。

Spec: Specification.json
Pillar 04

EMPLS

EMPL IRの可読表現・検証と仕様駆動開発を担う組み込み言語。

Role: Reference & Round-trip
COMPONENT 01Compiler Infrastructure

MPL_Compiler

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)でコンパイル可能。

技術仕様

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

MPL_Transpiler

トランスパイラ文脈保持AST構造変換

概要

MPL_Transpilerは、MPL_FrameWorkの中核であるEMPL IRをハブとして活用するトランスパイラです。各言語フロントエンドが生成する統一IRを経由することで、言語間のロジック等価性を保ちつつ、ASTレベルでの高精度な構造変換を行います。レガシー資産のモダン言語への移行(例: 古いJavaからGoやRustへ)においても、ターゲット言語のベストプラクティス(Idiomatic Code)に基づいた変換とリファクタリング提案を出力することを目標としています。

主な特徴

  • ASTベース変換: 単なるテキスト置換ではなく、抽象構文木レベルでの構造変換により、論理的矛盾のないコード生成を実現。
  • コメント・スタイル保持: 元のコードに含まれるドキュメントやコメント、インデントスタイルを可能な限りターゲット言語の慣習に合わせて維持。
  • AIアシスト型型推論: 動的型付け言語から静的型付け言語への変換時に、文脈から最適な型定義を自動補完。

技術仕様

対象言語MPL_Compilerと同じ9言語(JS/TS, Python, C#, Go, Rust, PHP, Ruby, Java, EMPLS)
変換精度Logic Preservation > 99.5%
提供形態(予定)CLI, VSCode Extension, Web API
COMPONENT 03Standard Library

MPL_Standard

言語中立StandardLibraryCallNodeSpecification.json

概要

MPL_Standard(MPL Standard Library)は、MPL_FrameWorkにおける「言語中立かつターゲット中立な API 層」です。JavaScript の console.log も Python の print() も、内部的には StandardLibraryCallNode("Console", "WriteLine", [...]) という同じ IR ノードに変換されます。これにより、フロントエンド側 (各言語の構文糖衣) とバックエンド側 (C++ 等の生成) の双方が、言語やターゲットに縛られることなく共通 API を利用できます。Specification.json が純粋な型・シグネチャの真実の源であり、CppImpl.h はその C++20 実装です。

主な特徴

  • 言語中立な API: Console, Environment, IO, Path, Process, Math, String, DateTime の 8 モジュールを純粋な仕様として提供。
  • StandardLibraryCallNode: 各フロントエンドの標準ライブラリ呼び出しは、IR 上でこのノードに正規化される。
  • Specification.json: 型・引数・戻り値を含む純粋な JSON 仕様が単一の真実の源 (Single Source of Truth)。
  • ターゲット非依存: C++, JavaScript, Python など、どのバックエンド実装にも置き換え可能な等価 API を定義。
  • C++ 実装: MPL_Standard/CppImpl.h が第三者依存ライブラリ無しで C++20 のみで実装。

技術仕様

仕様書MPL_Standard/Specification.json
IR ノードStandardLibraryCallNode
モジュール数8 (Console, Environment, IO, Path, Process, Math, String, DateTime)
C++ 実装MPL_Standard/CppImpl.h (C++20 のみ)
COMPONENT 04Embedded Language

EMPLS

シンプル構文EMPL IR対応サンプル駆動

概要

EMPLS (EMPL Sample Language) は、MPL_FrameWork プロジェクトに同梱されている公式組み込み言語です。「すべてのフロントエンド/バックエンドが共有する EMPL IR そのものを、可読なソースコードで書いたらどうなるか」を示す、いわば IR の人間可読版として設計されています。明示的な型注釈、クラス、ラムダ、try-catch-finally など、近代的な言語機能を一通り備えながら、構文は学習コストを抑えるために最小限に保たれています。examples/main.empls や docs/empls-grammar.md が公式の仕様書・リファレンス実装として機能します。

主な特徴

  • 明示的な型注釈: var/let/const に続けて「:: 型名」という構文で var::int のように変数の型を宣言可能。
  • 標準ライブラリ呼び出し: System.Console.WriteLine(...) などの MPL Standard API をそのまま記述可能。
  • モダン制御構文: if, for, for-of, while, do-while, switch, try-catch-finally を一通りサポート。
  • クラスとラムダ: class/constructor/func 宣言と lambda(params){...} 式の両方を利用可能。
  • ラウンドトリップ対応: EMPLPrinter が出力する EMPL IR テキストを EMPLSFrontend がパース可能 (リント・検証用途)。

技術仕様

用途組み込み言語 (サンプル・検証用)
位置付けMPL_FrameWork 公式リファレンス言語
BNF 仕様docs/empls-grammar.md
ラウンドトリップEMPLPrinter ⇄ EMPLSFrontend