Cm プログラミング言語
C++の構文とRustにインスパイアされた機能を併せ持つ、モダンなシステムプログラミング言語
サポート環境: macOS (ARM64) / Ubuntu (x86_64) 詳細
🚀 クイックリンク
📖 ドキュメント
ユーザー向け
- チュートリアル - 段階的な学習ガイド
- クイックスタートガイド - 5分で始めるCm言語
開発者向け
リリース情報
🎯 言語の特徴
✅ 言語コア (v0.14.0)
- C++ライクな構文 - 親しみやすく読みやすい
- 強力な型システム - コンパイル時の安全性
- ジェネリクス - 型安全なジェネリックプログラミング
- インターフェース - トレイトベースのポリモーフィズム
- パターンマッチング - 強力なmatch式とガード条件
- 演算子オーバーロード -
impl T { operator ... }で直接定義、複合代入(+=等)自動対応 - インラインアセンブリ -
__asm__によるハードウェアアクセス - 条件付きコンパイル -
#ifdef/#ifndefディレクティブ
✅ バックエンド
- LLVM Native - ARM64/x86_64 ネイティブコード生成
- WASM - WebAssemblyバックエンド
- JavaScript - Node.js/ブラウザ向けJS生成(通過率77%)
✅ 標準ライブラリ (Native向け)
- コレクション -
Vector<T>,Queue<T>,HashMap<K,V> - スレッド -
std::thread,Mutex,Channel - ネットワーク -
std::http(HTTP/HTTPS、OpenSSL統合) - GPU -
std::gpu(Apple Metalバックエンド)
🔄 進行中
- パッケージ管理 -
cm pkg init/add - 所有権システム - 借用チェッカーの強化
💡 コード例
import std::io::println;
// Hello World
int main() { println("Hello, Cm!"); return 0; }
// ジェネリック関数
<T: Ord> T max(T a, T b) { return a > b ? a : b; }
// インターフェース実装
interface Drawable { void draw(); }
struct Circle { int radius; }
impl Circle for Drawable {
void draw() { println("Circle({})", self.radius); }
}
🛠️ ソースからのビルド
# リポジトリをクローン
git clone https://github.com/shadowlink0122/Cm.git
cd Cm
# LLVMバックエンドでビルド
cmake -B build -DCM_USE_LLVM=ON
cmake --build build
# テストの実行
ctest --test-dir build
📊 プロジェクト統計
| コンポーネント | ステータス | カバレッジ |
|---|---|---|
| Lexer/Parser | ✅ 完了 | 90%+ |
| 型システム | ✅ 完了 | 85%+ |
| HIR/MIR | ✅ 完了 | 80%+ |
| LLVM Backend | ✅ 完了 | 85%+ |
| WASM Backend | ✅ 完了 | 80%+ |
| JS Backend | ✅ 完了 | 77% |
| 標準ライブラリ | 🔄 進行中 | 30%+ |
🤝 貢献について
貢献を歓迎します!詳細は 貢献ガイド をご覧ください。
📄 ライセンス
本プロジェクトは MIT ライセンスの下で公開されています。詳細は LICENSE ファイルをご確認ください。
🔗 リンク
最終更新: v0.14.0 (2026年2月)
© 2025-2026 Cm Language Project