Zen-C: 高水準言語のように書き、Cのように実行する
95日前原文(github.com)
概要
- Zen Cは現代的なシステムプログラミング言語で、C11互換のCコードに変換
- 型推論・パターンマッチ・ジェネリクス・RAIIなど高機能を実装
- C ABI 100%互換で、手動メモリ管理やasync/awaitもサポート
- GCC/Clang/Zigを利用した高い互換性とクロスコンパイル対応
- 簡単な導入・拡張性・豊富なテスト・貢献歓迎
Zen C モダンエルゴノミクス:ゼロオーバーヘッド・ピュアC
- Zen Cは、人間が読めるC11コードへコンパイルされるモダンなシステム言語
- 型推論、パターンマッチ、ジェネリクス、トレイト、async/await、RAIIによる手動メモリ管理などを搭載
- C ABI完全互換を維持しつつ、高級言語のような記述性とC並みの実行速度を両立
クイックスタート
- インストール手順
git clone https://github.com/z-libs/Zen-C.gitcd Zen-Cmakesudo make install
- 基本コマンド
zc run hello.zc:コンパイル&実行zc build hello.zc -o hello:実行ファイル生成zc repl:インタラクティブシェル
- 環境変数
ZC_ROOTで標準ライブラリのパス指定可能- 任意ディレクトリから標準インポートが利用可能
Zen C 言語リファレンス
1. 変数・定数
- 型推論が標準、明示型も指定可能
var x = 42;:int型と推論const PI = 3.14159;:コンパイル時定数var explicit: float = 1.0;:型明示- ミュータビリティ
- デフォルトは可変
//> immutable-by-defaultで不変が標準var mut y = 10;で明示的可変
2. プリミティブ型
- C相当型を網羅
int, uint:プラットフォーム標準整数I8..I128, U8..U128:固定幅整数isize, usize:ポインタサイズ整数byte:U8エイリアスF32, F64:浮動小数点bool, char, string, void:真偽値・文字・C文字列・空型
3. 集合型
- 配列:値セマンティクス、固定長
var ints: int[5] = {1, 2, 3, 4, 5};
- タプル:複数値のグループ化
(1, "Hello")のように定義
- 構造体:ビットフィールド対応
struct Point { x: int; y: int; }
- 列挙型:タグ付きユニオン(Sum型)
enum Shape { Circle(float), Rect(float, float), Point }
- ユニオン:C標準のunsafeアクセス
4. 関数・ラムダ
- 関数定義
fn add(a: int, b: int) -> int { return a + b; }- 名前付き引数対応
- ラムダ式(クロージャ)
var double = x -> x * factor;- ブロック構文も利用可能
5. 制御構文
- 条件分岐
if x > 10 { ... } else if ... else { ... }- 三項演算子
var y = if x > 10 ? 1 : 0;
- パターンマッチ
match val { 1 => ... 2 | 3 => ... _ => ... }- 列挙型の分解も可能
- ループ
- 範囲for:
for i in 0..10 { ... } - コレクションfor、while、無限ループ、repeat
- 範囲for:
- 高度な制御
- guard/unlessによる早期return
6. 演算子
- 算術・比較・インデックスなどC相当
- **Null合体(??)・Null代入(??=)・安全ナビゲーション(?.)・try演算子(?)**をサポート
7. メモリ管理
- defer:スコープ終了時に処理実行
- autofree:変数スコープ終了時に自動解放
- RAII/Dropトレイト:自動クリーンアップロジック実装
8. オブジェクト指向
- メソッド定義:implブロックで静的/インスタンスメソッド
- トレイト:共通動作定義と実装
- コンポジション:
useで他構造体のフィールドをmixin
9. ジェネリクス
- 型安全なテンプレート
- 構造体・関数の型パラメータ化
10. 並行処理(Async/Await)
- pthreadベースの非同期関数
async fn fetch_data() -> string { ... }awaitで結果取得
11. メタプログラミング
- comptime:コンパイル時処理
- embed:ファイル埋め込み
- プラグイン:構文拡張
- Cマクロ:プリプロセッサマクロ透過
12. アトリビュート
- 関数・構造体の装飾
@must_useや@deprecatedなどC11拡張相当の多彩なアノテーション
13. インラインアセンブリ
- GCCスタイルasmを直接記述可能
- volatile・名前付き制約で安全なアセンブリ挿入
- Intel構文も一部対応(TCC非対応)
14. ビルドディレクティブ
- ソース冒頭コメントでビルド設定
- ライブラリリンク・インクルードパス・CFLAGS・pkg-config・シェルコマンド・immutableモード等
- 例
//> include: ./include//> link: -lraylib -lm//> cflags: -Ofast//> pkg-config: gtk+-3.0
コンパイラ互換性・推奨環境
- GCC/Clang/Zig:全機能対応・100%合格
- TCC:高速だが一部機能未対応(__auto_type、Intel ASM、ネスト関数不可)
- Zig cc:クロスコンパイルに最適
- --ccフラグでバックエンド指定
テスト・貢献ガイド
- テストスイート
make testで全テスト実行./zc run tests/test_match.zcで個別テスト./tests/run_tests.sh --cc clang等で各コンパイラ確認
- コントリビュート方法
- GitHubでFork&ブランチ作成
- Cスタイル遵守、テスト必須
- Pull Requestで変更点明記
- コンパイラ拡張
- パーサ:
src/parser/ - コード生成:
src/codegen/ - 標準ライブラリ:
std/
- パーサ:
Zen Cは、Cの資産を最大限活かしつつ、現代的な開発体験を提供する新世代言語。高機能・高互換・高拡張性を備え、Cエコシステムの未来を切り拓く選択肢。