102 lines
3.2 KiB
Markdown
102 lines
3.2 KiB
Markdown
|
|
# Nyash ABI革命 - AI大会議統合まとめ (2025-09-01)
|
|||
|
|
|
|||
|
|
## 🎯 結論:「間に挟むだけ」が世界を変える
|
|||
|
|
|
|||
|
|
Gemini先生(哲学的視点)とCodex先生(実装視点)の両方が、Nyash ABIの革命的可能性を認めた。
|
|||
|
|
|
|||
|
|
## 📊 両先生の共通認識
|
|||
|
|
|
|||
|
|
### 1. 既存技術との比較
|
|||
|
|
- **COM/GObject**: 複雑すぎる先行例
|
|||
|
|
- **WASM Component Model**: 最も思想的に近い
|
|||
|
|
- **Nyash ABI**: 上記の良いとこ取り+シンプルさ
|
|||
|
|
|
|||
|
|
### 2. 3×u64の表現力は十分
|
|||
|
|
```c
|
|||
|
|
typedef struct NyashValue {
|
|||
|
|
uint64_t type_id; // 無限の型を表現可能
|
|||
|
|
uint64_t box_handle; // Arc<T>ポインタ格納に最適
|
|||
|
|
uint64_t metadata; // 64bitフラグ+インライン値
|
|||
|
|
} NyashValue;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 主要な技術的課題
|
|||
|
|
- **パフォーマンス**: 粒度による(粗い粒度なら影響小)
|
|||
|
|
- **GC連携**: 循環参照が最大の課題
|
|||
|
|
- **非同期処理**: metadataフラグで統一可能
|
|||
|
|
|
|||
|
|
## 🔧 実装戦略の統合
|
|||
|
|
|
|||
|
|
### Phase 1: 最小実装(MIR変更なし)
|
|||
|
|
```rust
|
|||
|
|
// 既存のExternCallをそのまま使用
|
|||
|
|
MirInstruction::ExternCall {
|
|||
|
|
iface_name,
|
|||
|
|
method_name,
|
|||
|
|
args,
|
|||
|
|
effects
|
|||
|
|
}
|
|||
|
|
// ランタイムでNyashFunc統一呼び出しに変換
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Phase 2: インライン最適化
|
|||
|
|
```
|
|||
|
|
metadata上位4bit = タグ
|
|||
|
|
- 0: Boxed(通常のBox)
|
|||
|
|
- 1: I63(63bit整数を直接格納)
|
|||
|
|
- 2: Bool(真偽値)
|
|||
|
|
- 3: Null
|
|||
|
|
- 4: Void
|
|||
|
|
- 5: Reserved(Future/Async)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Phase 3: 段階的移行
|
|||
|
|
```toml
|
|||
|
|
# nyash.toml
|
|||
|
|
[plugin.math]
|
|||
|
|
abi = "nyash" # 新ABI
|
|||
|
|
# abi = "c" # 旧ABI(デフォルト)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🌟 革命的インパクト
|
|||
|
|
|
|||
|
|
### Gemini先生の視点
|
|||
|
|
> 「単なる技術的挑戦ではなく、ソフトウェア開発のあり方そのものを変革する可能性を秘めた壮大なビジョン」
|
|||
|
|
|
|||
|
|
- **真のポリグロット・エコシステム**: 言語の壁が消える
|
|||
|
|
- **ソフトウェア資産の不滅化**: レガシーコードが永遠に生きる
|
|||
|
|
- **複雑性の劇的削減**: N×M → N+M のバインディング
|
|||
|
|
|
|||
|
|
### Codex先生の視点
|
|||
|
|
> 「まず壊さず、少しずつ置き換える」
|
|||
|
|
|
|||
|
|
- **即座の効果**: 整数/Bool/Null/Voidの即値化
|
|||
|
|
- **後方互換**: 既存プラグインは自動トランポリン
|
|||
|
|
- **段階的移行**: nyash.tomlで個別切り替え
|
|||
|
|
|
|||
|
|
## 🚀 実装優先順位
|
|||
|
|
|
|||
|
|
1. **nyash_abi.h/abi.rs**: 基本型定義とエンコード/デコード
|
|||
|
|
2. **トランポリン層**: 既存C ABI→Nyash ABI変換
|
|||
|
|
3. **#[nyash_abi]マクロ**: 自動バインディング生成
|
|||
|
|
4. **型レジストリ**: 64bitハッシュによる型ID管理
|
|||
|
|
5. **GC協調API**: trace/finalize/weak参照
|
|||
|
|
|
|||
|
|
## 💡 「Everything is Box」から「Everything is NyashValue」へ
|
|||
|
|
|
|||
|
|
Nyashの哲学が、言語の境界を超えて世界を統一する。
|
|||
|
|
|
|||
|
|
- **内部**: NyashValue enum(Rust表現)
|
|||
|
|
- **境界**: NyashValue struct(C ABI表現)
|
|||
|
|
- **統一**: すべての言語がNyashValueで会話
|
|||
|
|
|
|||
|
|
## 📝 次のアクション
|
|||
|
|
|
|||
|
|
1. Phase 12ドキュメントとの比較・統合
|
|||
|
|
2. nyash_abi.h の初版作成
|
|||
|
|
3. 最小トランポリン実装の検証
|
|||
|
|
4. 既存プラグイン1つでの動作確認
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
*「間に挟むだけ」が、プログラミング言語の未来を変える。*
|