Tapioca Language Project proposal

Proj Tapioca

C++はいつでも最善の選択肢にはなれません。システムプログラミングではCを直接使用することができ、非システムプログラミングではガベージコレクションを備えた言語を選ぶべきです。しかし、C++の特徴はしばしばトラブルを引き起こし、基本的には役に立ちません。

Tapioca プロジェクトの概要

プログラミング言語はソフトウェア開発において重要な役割を果たしています。様々なニーズに応じて、さまざまなプログラミング言語が作られています。Linus氏の言葉通り、システム開発にはC言語のような低水準言語を、アプリケーション開発にはGC機能を備えた言語を選ぶのが最適です。一般的には、C/C++などの低水準プログラミング言語でランタイムなどの低レベルな要素を作成し、Java/Lua/Pythonなどの高水準言語でアプリケーション開発を行う手法が存在します。この開発手法は実行効率と開発効率の両方を考慮したものであり、参考になる価値があります。

しかし、現在のこのアプローチにはまだいくつかの問題が存在します(多くは、Yeonjiの個人的な好みに関連する問題です)。これらの問題を解決するために、個人のプログラミングプラットフォームとしてTapiocaプロジェクトが提案されました。Tapiocaプロジェクトの名前は、タピオカミルクティー(Javaとコーヒーに対応)に由来しています。Tapiocaプロジェクトには主に以下の要素が含まれます:

  • TSC:Tapiocaプラットフォームにおいて、主役となるプログラミング言語で、アプリケーションを実装するために使用されます。
  • TVM:Tapiocaプラットフォームの仮想マシンで、TapiocaScriptコードの解釈と実行に使用されます。
  • TLL:Tapiocaプラットフォームにおいて、ランタイムやインタプリタを実装するために使用される低レベル言語です。

TSCプログラミング言語

Tapioca Script(以下、TSC)はTapiocaプロジェクトのアプリケーション向けプログラミング言語です。現在、スクリプト言語はPythonやRubyなどの独立した言語と、JavaScriptやLuaなどの埋め込み言語に分類されています。TSCはJavaScriptやLuaのような埋め込み言語として存在したいと考えています。同時に、JavaScriptやLuaに存在するいくつかの問題を解決したいとも考えています。

TVM仮想マシン

Tapioca Virtual Machine(以下、TVM)はTapiocaプロジェクトのプログラム仮想マシンです。TSCの標準コンパイラはTSCコードをTVMバイトコードにコンパイルし、TVMはこのバイトコードを解釈して実行する主な機能を持っています。TVMプロジェクトはJavaのようなプラットフォームであり、統一されたバイトコードと動作規範を持つことを目指しています。ただし、独立したJVMとは異なり、TVMは組み込みプログラム仮想マシンを目指しています。

TLL言語

Tapioca Low-layer Language(以下、TLL)はTapiocaプロジェクトが提供する低レベル言語です。TLLの主な目的は、TVM仮想マシンと一部のランタイムライブラリを実装することです。TLLはC言語に似た、最小限のランタイムを備えた低レベル開発言語として設計されています。C言語に存在するいくつかの問題を解決し、より使いやすい開発体験を提供することを目指しています。

ロードマップ

  • ブートストラップロードマップ
    • 第1フェーズ:TSCの定義とTVMの実装(C/golang)
    • 第2フェーズ:TVM上でのTSCのブートストラップ(TSC)
    • 第3フェーズ:TLL言語の定義と実装(TSC)
    • 第4フェーズ:TVMのセルフブートストラップ(TSC->TLL->TVM->TSC)