Files
hakorune/README.ja.md
Moe Charm 19f775c34d feat(phase12.7): 糖衣構文Phase 12.7-B完了 + 自律型AI開発システム制御機能
🚀 Phase 12.7-B: ChatGPT5糖衣構文(基本実装完了)
- パイプライン演算子(|>)実装
- セーフアクセス(?.)とデフォルト値(??)実装
- sugar gateによる段階的有効化機能
- 糖衣構文テストスイート追加

🤖 自律型AI開発システム改善
- codex-async-notify.sh: タスク制御指示追加
  - "下の箱を積み過ぎないように先に進んでください"
  - "フェーズが終わったと判断したら止まってください"
- プロセス数表示機能の改善(count_running_codex_display)
- 自動停止機能が正常動作(Phase 12.7-C前で停止確認)

📚 ドキュメント更新
- Paper 13: 自律型AI協調開発システムの革新性を文書化
- ANCP可逆マッピング仕様追加
- nyfmt PoC(フォーマッター)計画追加

🧱 箱理論の体現
- 74k行のコードベース(Phase 15で20k行を目指す)
- ANCP適用で最終的に6k行相当を狙う
- 世界最小の実用コンパイラへの道

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-05 05:16:21 +09:00

11 KiB
Raw Blame History

🐱 Nyash プログラミング言語

超真面目に作っている趣味言語
20日でゼロからネイティブバイナリへ - AI駆動の言語革命

🇺🇸 English Version / 英語版はこちら

Build Status Everything is Box Performance JIT Ready ブラウザで試す MIT License


開発者向けクイックスタート: docs/DEV_QUICKSTART.md

変更履歴(要点): CHANGELOG.md

🎮 今すぐブラウザでNyashを試そう

👉 ブラウザプレイグラウンドを起動 👈

インストール不要 - ウェブブラウザで即座にNyashを体験


🚀 速報: ネイティブEXE達成

2025年8月29日 - 誕生からわずか20日で、Nyashがネイティブ実行ファイルへのコンパイルを実現

# NyashソースからネイティブバイナリへCraneliftが必要
cargo build --release --features cranelift-jit
./tools/build_aot.sh program.nyash -o app         # ネイティブEXE
./app                                             # スタンドアロン実行!

20日間で達成したこと

  • インタープリター付き完全プログラミング言語
  • 13.5倍高速化を実現したVM
  • JITコンパイラCranelift統合
  • WebAssemblyサポート
  • プラグインシステムC ABI
  • ネイティブバイナリ生成
  • プラグイン経由のPython統合

なぜNyashなのか

🎯 Everything is Box 哲学

// 従来の言語は複雑な型システムを持つ
// Nyash: 一つの概念がすべてを支配する - Box

static box Main {
    main() {
        // すべての値はBox - 統一、安全、シンプル
        local name = new StringBox("Nyash")
        local count = new IntegerBox(42)
        local data = new MapBox()
        
        // PythonオブジェクトもBox
        local py = new PyRuntimeBox()
        local math = py.import("math")
        print("sqrt(9) = " + math.getattr("sqrt").call(9).str())
        
        return 0
    }
}

前例のない開発速度

  • 1日目: 基本インタープリター動作
  • 4日目: すでにJIT計画開始
  • 13日目: VMが13.5倍高速化達成
  • 20日目: ネイティブ実行ファイル生成!

🔌 プラグインファースト・アーキテクチャ

// あらゆる機能がプラグインBoxになれる
local file = new FileBox()          // ファイルI/Oプラグイン
local http = new HttpClientBox()    // ネットワークプラグイン
local py = new PyRuntimeBox()       // Pythonプラグイン

// プラグインもネイティブコードにコンパイル!

🏗️ 複数の実行モード

1. インタープリターモード (開発用)

./target/release/nyash program.nyash
  • 即座に実行
  • 完全なデバッグ情報
  • 開発に最適

2. VMモード (本番用)

./target/release/nyash --backend vm program.nyash
  • インタープリターより13.5倍高速
  • 最適化されたバイトコード実行
  • 本番環境対応のパフォーマンス

3. JITモード (高性能)

NYASH_JIT_EXEC=1 ./target/release/nyash --backend vm program.nyash
  • Cranelift搭載JITコンパイル
  • ほぼネイティブ性能
  • ホット関数最適化

4. ネイティブバイナリ (配布用)

# 事前ビルドCranelift
cargo build --release --features cranelift-jit

./tools/build_aot.sh program.nyash -o myapp
./myapp  # スタンドアロン実行!
  • 依存関係ゼロ
  • 最高性能
  • 簡単配布

簡易スモークテストVM と EXE の出力一致確認):

tools/smoke_aot_vs_vm.sh examples/aot_min_string_len.nyash

LLVM バックエンドの補足

  • NYASH_LLVM_OBJ_OUT: --backend llvm 実行時に .o を出力するパス。
    • 例: NYASH_LLVM_OBJ_OUT=$PWD/nyash_llvm_temp.o ./target/release/nyash --backend llvm apps/ny-llvm-smoke/main.nyash
  • NYASH_LLVM_ALLOW_BY_NAME=1: デバッグ専用の by-name フォールバックby-id が未提供の場合の暫定措置)。
    • 開発時のみ有効化してください(本番では無効)。

5. WebAssembly (ブラウザ用)

cargo build --release --features wasm-backend
./target/release/nyash --compile-wasm program.nyash
  • ブラウザで実行
  • デフォルトでクロスプラットフォーム
  • Webファースト開発

🧰 タスク実行 (nyash.toml)

nyash.toml[tasks][env] で、ビルド/スモークなどのタスクを簡単に実行できますMVP

nyash.toml の末尾に追記):

[env]
RUST_BACKTRACE = "1"

[tasks]
build_llvm = "LLVM_SYS_180_PREFIX=$(llvm-config-18 --prefix) cargo build --release --features llvm"
smoke_obj_array = "NYASH_LLVM_OBJ_OUT={root}/nyash_llvm_temp.o ./target/release/nyash --backend llvm apps/ny-llvm-smoke/main.nyash"

実行:

./target/release/nyash --run-task build_llvm
./target/release/nyash --run-task smoke_obj_array

補足:

  • [env] の値は実行前に環境へ適用されます。
  • {root} は現在のプロジェクトルートに展開されます。
  • 現状は最小機能OS別/依存/並列は未対応)。

📊 パフォーマンスベンチマーク

実世界ベンチマーク結果 (ny_bench.nyash)

モード           | 時間      | 相対速度
----------------|-----------|---------------
インタープリター | 110.10ms  | 1.0x (基準)
VM              | 8.14ms    | 13.5倍高速
VM + JIT        | 5.8ms     | 19.0倍高速
ネイティブ      | ~4ms      | ~27倍高速

🎮 言語機能

クリーンな構文

box GameCharacter {
    private { name, health, skills }
    
    // birthコンストラクタ - Boxに生命を与える
    birth(characterName) {
        me.name = characterName
        me.health = 100
        me.skills = new ArrayBox()
        print("🌟 " + characterName + " が誕生しました!")
    }
    
    learnSkill(skill) {
        me.skills.push(skill)
        return me  // メソッドチェーン
    }
}

// 使用例
local hero = new GameCharacter("ネコ")
hero.learnSkill("火魔法").learnSkill("回復")

モダンなAsync/Await

// シンプルな並行処理
nowait task1 = fetchDataFromAPI()
nowait task2 = processLocalFiles()

// 待機中に他の作業
updateUI()

// 結果収集
local apiData = await task1
local files = await task2

デリゲーションパターン

// 継承よりコンポジション
box EnhancedArray from ArrayBox {
    private { logger }
    
    override push(item) {
        me.logger.log("追加中: " + item)
        from ArrayBox.push(item)  // 親に委譲
    }
}

🔌 プラグインシステム

Nyashは「Everything is Plugin」アーキテクチャを開拓

# nyash.toml - プラグイン設定
[libraries."libnyash_python_plugin.so"]
boxes = ["PyRuntimeBox", "PyObjectBox"]

[libraries."libnyash_net_plugin.so"]  
boxes = ["HttpServerBox", "HttpClientBox", "WebSocketBox"]

C/Rustで独自のBox型を作成してシームレスに統合


🛠️ はじめる

クイックインストール (Linux/Mac/WSL)

# クローンとビルド
git clone https://github.com/moe-charm/nyash.git
cd nyash
cargo build --release --features cranelift-jit

# 最初のプログラムを実行
echo 'print("Hello Nyash!")' > hello.nyash
./target/release/nyash hello.nyash

Windows

# Windows向けクロスコンパイル
cargo install cargo-xwin
cargo xwin build --target x86_64-pc-windows-msvc --release
# target/x86_64-pc-windows-msvc/release/nyash.exe を使用

# WindowsでのネイティブEXEAOTビルドCranelift と MSYS2/WSL が必要)
cargo build --release --features cranelift-jit
powershell -ExecutionPolicy Bypass -File tools\build_aot.ps1 -Input examples\aot_min_string_len.nyash -Out app.exe
./app.exe

🌟 独自のイノベーション

1. AI駆動開発

  • Claude、ChatGPT、Codexの協力で開発
  • コンセプトからネイティブコンパイルまで20日間の旅
  • AIが言語開発を30倍加速できることを証明

2. Box-Firstアーキテクチャ

  • すべての最適化がBox抽象を保持
  • プラグインもBox、JITもBoxを保持、ネイティブコードもBoxを尊重
  • すべての実行モードで前例のない一貫性

3. 観測可能な設計

  • 組み込みのデバッグとプロファイリング
  • JITコンパイルのJSONイベントストリーム
  • 最適化のDOTグラフ可視化

📚

Python統合

// NyashからPythonライブラリを使用
local py = new PyRuntimeBox()
local np = py.import("numpy")
local array = np.getattr("array").call([1, 2, 3])
print("NumPy配列: " + array.str())

Webサーバー

local server = new HttpServerBox()
server.start(8080)

loop(true) {
    local request = server.accept()
    local response = new HttpResponseBox()
    response.setStatus(200)
    response.write("Nyashからこんにちは")
    request.respond(response)
}

ゲーム開発

box GameObject {
    public { x, y, sprite }
    
    update(deltaTime) {
        // 物理シミュレーション
        me.y = me.y + gravity * deltaTime
    }
    
    render(canvas) {
        canvas.drawImage(me.sprite, me.x, me.y)
    }
}

🤝 貢献

革命に参加しよう!以下を歓迎します:

  • 🐛 バグ報告と修正
  • プラグイン経由の新しいBox型
  • 📚 ドキュメントの改善
  • 🎮 クールなサンプルプログラム

詳細は AGENTS.mdRepository Guidelinesをご参照ください。プロジェクト構成、ビルド/テスト手順、PRの要件を簡潔にまとめています。

📄 ライセンス

MIT ライセンス - プロジェクトで自由に使用してください!


👨‍💻 作者

charmpic - 趣味で言語作ってる人

  • 🐱 GitHub: @moe-charm
  • 🌟 協力: Claude、ChatGPT、Codexとのコラボレーション

🎉 歴史的タイムライン

  • 2025年8月9日: 最初のコミット - "Hello Nyash!"
  • 2025年8月13日: JIT計画開始4日目
  • 2025年8月20日: VMが13.5倍性能達成
  • 2025年8月29日: ネイティブEXEコンパイル実現

ゼロからネイティブバイナリまで20日間 - 言語開発の新記録!


🚀 Nyash - すべてがBoxであり、Boxがネイティブコードにコンパイルされる場所

❤️🤖 AIコラボレーション、そしてプログラミング言語は思考の速度で作れるという信念で構築