AXIS — Python風構文のシステムプログラミング言語

Tool

概要

AXISは「Python風の文法で書けるが、実行速度はCに近い」ことを目標にした、極めてミニマルなシステムプログラミング言語です。コンパイラは外部のリンクやアセンブリツール、ランタイムライブラリを必要とせず、直接x86-64の機械語を生成して実行可能バイナリを作り出します。現時点ではLinux x86-64のみサポートで、バージョンは1.0.1-beta。小規模なリポジトリながら、言語設計とコード生成の骨格を自前で実装している点が特徴です。

GitHub

リポジトリの統計情報

  • スター数: 12
  • フォーク数: 0
  • ウォッチャー数: 12
  • コミット数: 7
  • ファイル数: 17
  • メインの言語: Python

主な特徴

  • Pythonに近い記法で低レベルプログラミングが可能(学習コスト低めを狙うデザイン)。
  • 外部アセンブラ/リンカを不要にする一体型のコード生成(ワンバイナリ生成)。
  • ネイティブx86-64機械語を直接生成し、ランタイム依存を最小化。
  • MITライセンスで公開されたベータ段階のプロジェクト(軽量で改変しやすい)。

技術的なポイント

AXISの最も注目すべき点は「外部ツールに依存せずにネイティブコードを生成する」点です。これを実現するにはコンパイラ内部でアセンブリ相当の処理と、最終的に実行可能形式(Linux環境であればELF)の生成とレイアウトを行う必要があり、通常はアセンブラやリンカが担う責務を直接扱っています。したがってAXISは、命令選択→レジスタ割当→バイナリエンコーディング→セクション配置→シンボル管理→エントリポイント設定といったバックエンド処理を独自実装していると考えられます。

言語表現はPython風とのことなので、パーサは比較的シンプルな構文解析器(再帰下降やパーサコンビネータ)で実装されている可能性が高く、型付けやメモリ管理の方式は設計次第で大きく変わります。READMEからは詳細な型システムやガベージコレクションの有無は不明ですが、「ランタイムを必要としない」との記述から、できるだけ静的なリソース管理や明示的なメモリ操作を優先しているか、最小限のランタイム(スタートアップコードやシステムコールラッパ)をバイナリに埋め込む設計が想像されます。

パフォーマンス面では、Cレベルを目指すために最適化(定数畳み込み、簡易的な最適化パス、インライン化等)をバックエンドで行っている可能性があります。また、外部リンカを使わないため、ライブラリのリンクやC ABI互換性をどう扱うかが設計上の鍵になります。UNIXシステムコールを直接扱うことでランタイム依存を軽減できますが、Cとの相互運用(FFI)や既存ライブラリの利用は制約を受ける傾向があります。

現状リポジトリは小規模・初期段階なので、拡張ポイントとしては(1)クロスプラットフォーム対応(他アーキテクチャやWindows対応)、(2)標準ライブラリの整備、(3)テスト/CIの追加、(4)ドキュメントとチュートリアルの充実、(5)より高度な最適化パスの実装、などが考えられます。開発言語がPythonであるため、プロトタイプとしての改良や実験がしやすく、新機能の追加・試験導入も行いやすいのが利点です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitattributes: file
  • .gitignore: file
  • .vscode: dir
  • CHANGELOG.md: file
  • LICENSE: file

…他 12 ファイル

(リポジトリは合計で17ファイル。vscodeディレクトリはエディタ設定、CHANGELOGとLICENSEはプロジェクト管理情報として整備されています。)

まとめ

Python風の記法でネイティブ性能を狙う興味深い実験的コンパイラ。今後の拡張に期待。

リポジトリ情報:

READMEの抜粋:

AXIS

Version Platform License

A minimalist system programming language with Python-like syntax and C-level performance.

AXIS compiles directly to x86-64 machine code without requiring external linkers, assemblers, or runtime libraries.

⚠️ Platform Requirements: Linux x86-64 only (Ubuntu, Debian, Fedora, Arch…)