このプロジェクトについて
Xagは、高性能、役立つエラーメッセージ、Rustスタイルのメモリ管理を中心に構築されたコンパイル型プログラミング言語です。すべてのサイズは明示的に宣言する必要があり、裸の`int`型はありません。プログラムは、LLVMを介してネイティブコードに事前にコンパイルされるか、2つのAOTインタープリタのいずれかによって実行されます。
コンパイラは、LLVMのネイティブC++ APIに対してC++20で記述されており、LLVM 23以降、CMake、およびNinjaを必要とします。ソースファイルは`.xag`拡張子を使用します。ツールチェーンには、字句解析、構文解析、型チェック、IR検査のためのコマンドが含まれています。
3つの実行エンジンが存在します。テストインタープリタ(明らかに正しく、遅い)、高速インタープリタ(フラットコード最適化)、およびAOTネイティブバックエンドです。これら3つすべてが単一の共有ランタイムを呼び出すため、ランタイム動作について一致します。エンジン間で不一致がある場合、プロジェクトはどのエンジンがずれているかを特定します。
10進数演算は厳密に検証されています。ソフトウェア実装は、Pythonの`decimal`(libmpdec)に対して400,000のケースで、またQEMUエミュレーションを介したPOWERハードウェア10進数ユニットに対して追加の20,000のケースで相互チェックされています。
Unicodeサポートは、Unicode 17.0.0テーブルに対して、書記素クラスのカウントを含むUAX #29に完全に準拠しています。766のUnicode適合ケースすべてがテストスイートで実行されます。
オラクルジェネレータ(`generator/`)は、ランダムなXagプログラムを記述し、すべてのエンジンでテストして不一致を見つけます。このジェネレータは、外部依存関係なしにRustで記述されています。
ライセンス:Apache-2.0 WITH LLVM-exception。使用は無料です。コンパイラまたはランタイムを変更する場合は、Apacheの条件に基づいて帰属表示が必要です。
注:これは初期の進行中の作業であり、まだ何も安定していません。リポジトリ内のほとんどのコードは、言語設計者の指示の下でAIによって生成されています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.