English

Cm言語 実装済み機能一覧 (v0.14.0)

Cm言語コンパイラおよびランタイムで現在利用可能な機能の一覧です。

💎 基本機能

機能 状態 詳細
プリミティブ型 int, uint, float, double, bool, char, string
演算子 算術、比較、論理、ビット演算、三項演算子
制御構文 if/else, while, for, switch, defer
関数 定義、オーバーロード、デフォルト引数、可変長引数
モジュール import, export, 名前空間
const強化 配列サイズにconst変数を使用可能、定数式のコンパイル時評価

🏗️ 型システム

機能 状態 詳細
構造体 (struct) 定義、初期化、メンバアクセス、コンストラクタ(self())
デストラクタ ~self()によるリソース自動解放
列挙型 (enum) 強型付け列挙型、整数値指定
Tagged Union 関連データ付きenum、match分解(Option, Result)
ジェネリクス 型パラメータ、関数・構造体ジェネリクス、ジェネリックコンストラクタ、複数型パラメータ
インターフェース interface定義、impl実装、動的ディスパッチ
型制約 (where) AND境界 (T: A + B), OR境界 (T: A | B)
型エイリアス typedef NewType = OldType
インラインユニオン型 int \| null 構文でnull許容型を簡潔に記述
null型 独立したnull型、ユニオン型のメンバーとして使用
ポインタ 生ポインタ、-> 演算子によるフィールドアクセス

🚀 高度な機能

機能 状態 詳細
パターンマッチング match 式、リテラル・Enum・ワイルドカード、パターンガード
with自動実装 Eq, Ord, Clone, Hash の自動導出
演算子オーバーロード impl T { operator ... } で直接定義、複合代入(+=等)自動対応、ビット演算子
関数ポインタ 関数を値として扱う、ラムダ式
文字列補間 println("x = {x}") 形式の出力
外部関数 (FFI) extern "C" ブロック、Cライブラリ連携
mustキーワード 戻り値使用の強制
インラインアセンブリ __asm__ キーワード、x86_64/ARM64対応
条件付きコンパイル #ifdef/#ifndef/#else/#endif、定義済みマクロ

📦 標準ライブラリ

モジュール 状態 詳細
std::io println/print(Zero-libc実装)
std::thread spawn, join, detach, sleep_ms
std::sync Mutex, Channel
std::collections Vector<T>, Queue<T>, HashMap<K,V>
std::gpu Metal GPU演算(macOS)
std::net TCP/UDP通信
std::http HTTP/HTTPS通信

⚙️ バックエンド

バックエンド 状態 詳細
JITコンパイラ LLVM ORC JIT、高速な実行
LLVM (Native) ネイティブ実行ファイル生成 (x86_64, ARM64)
LLVM (WASM) WebAssembly出力、ブラウザ/WASI実行
JavaScript Node.js/ブラウザ向けJS生成(v0.14.0で通過率87%)

🛠️ ツール・最適化

機能 状態 詳細
cm lint コード品質チェック、診断カタログ
cm fmt コードフォーマッタ
MIR最適化 定数畳み込み、DCE、インライン化、LICM
末尾呼び出し最適化 再帰関数のスタック最適化
無限ループ検出 コンパイル時の静的無限ループ解析
自動デバッグ出力 #debug ディレクティブによるトレース
マルチアーキテクチャ make build ARCH=arm64/x86_64

📊 診断システム

カテゴリ コード範囲 説明
構文エラー E001-E099 パーサーエラー
型エラー E100-E299 型チェックエラー
ポインタエラー E300-E399 null参照、const違反、->演算子提案
ジェネリクスエラー E400-E499 型引数不一致、制約違反
Enum/Matchエラー E500-E599 網羅性、重複アーム
リテラルエラー E600-E699 オーバーフロー、定数式必須
警告 W100-W401 未使用変数、潜在的問題
Lintルール L200-L402 スタイル、ベストプラクティス

最終更新: 2026年2月15日 バージョン: v0.14.0