Files
hakorune/docs/説明書/reference/box-design/README.md
Moe Charm e0f0a658e6 docs: Phase 9.75 Box設計根本革命 - SocketBox Arc<Mutex>責務一元化
 Phase 9.75実装計画追加:
- copilot_issues.txtにPhase 9.75追加(Phase 9.7と9.8の間)
- Arc<Mutex>二重化問題の根本解決計画
- 段階的実装戦略(Phase A-D)定義

📚 Box設計ドキュメント完全体系化:
- docs/説明書/reference/box-design/ 新設
- everything-is-box.md: 核心哲学の完全解説
- memory-management.md: Arc<Mutex>設計・fini/weak参照
- delegation-system.md: 完全明示デリゲーション仕様
- box-types-catalog.md: 全Box型の完全カタログ
- ffi-abi-specification.md: FFI/ABI仕様(移動済み)

🔧 実装ノート完備:
- current-issues.md: 現在進行中の設計課題
- socket-box-problem.md: Arc<Mutex>二重化問題詳細分析
- phase-9-75-redesign.md: 実装計画詳細

👥 Copilot実装ガイド作成:
- phase9_75_socketbox_arc_mutex_redesign.md
- SocketBox優先対応の具体的実装手順
- 完全テストスイート設計
- 段階的実装戦略(Step 1-5)

📋 CURRENT_TASK.md更新:
- Box設計ドキュメント完成記録
- Phase 9.75準備完了状況

🎯 効果:
- Everything is Box哲学の体系的文書化
- SocketBox問題解決の明確な道筋
- Copilot協調実装の準備完了
- 新規開発者オンボーディング改善

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-15 07:47:09 +09:00

3.4 KiB
Raw Blame History

📦 Nyash Box設計ドキュメント

🎯 概要

Nyashの核心哲学「Everything is Box」に関する完全な設計ドキュメント集。 言語設計の根幹から実装詳細まで、Box設計のすべてを網羅しています。

📚 ドキュメント構成

🌟 設計思想

everything-is-box.md

Nyashの核心哲学「Everything is Box」の完全解説。なぜすべてをBoxにするのか、その設計思想と利点を説明。

box-types-catalog.md

Nyashで利用可能な全Box型のカタログ。基本型StringBox, IntegerBoxから高度な型P2PBox, EguiBoxまで。

🔄 システム設計

delegation-system.md

完全明示デリゲーションシステムの設計。from構文、override必須、pack構文の詳細仕様。

memory-management.md

Arc一元管理、fini()システム、weak参照による循環参照回避の設計原則。

🌐 外部連携

ffi-abi-specification.md

Box FFI/ABI完全仕様。外部ライブラリを「箱に詰める」ための統一インターフェース。

🔧 実装ノート

implementation-notes/

開発者向けの実装詳細、既知の問題、進行中の設計変更などの技術情報。

🎨 設計原則

1. Everything is Box

すべての値がBoxオブジェクト。プリミティブ型は存在しない。

2. 明示性重視

暗黙的な動作を避け、すべてを明示的に記述。

3. Arc一元管理

Box内部でのロックを避け、インタープリターが一元管理。

4. メモリ安全性

fini()システムとweak参照による確実なメモリ管理。

🚀 クイックリファレンス

Box作成

// 基本型
local str = new StringBox("Hello")
local num = new IntegerBox(42)

// ユーザー定義Box
box User {
    init { name, email }
    
    pack(userName, userEmail) {
        me.name = userName
        me.email = userEmail
    }
}

デリゲーション

box AdminUser from User {
    init { permissions }
    
    pack(adminName, adminEmail, perms) {
        from User.pack(adminName, adminEmail)
        me.permissions = perms
    }
    
    override toString() {
        return "Admin: " + from User.toString()
    }
}

外部ライブラリ統合FFI/ABI

// ExternBoxで外部APIを統一的に利用
local console = new ExternBox("console")
console.call("log", "Hello from Nyash!")

local canvas = new ExternBox("canvas")
canvas.call("fillRect", 10, 10, 100, 50)

📖 関連ドキュメント

🔄 更新履歴

  • 2025-08-14: Box設計ドキュメント初版作成
  • 2025-08-14: Phase 9.75Arc責務一元化対応開始

最終更新: 2025-08-14