docs: restore docs/private/roadmap from 7b4908f9 (Phase 20.31)
This commit is contained in:
434
docs/private/roadmap/phases/phase-20.16/PHASE_20_16_ROADMAP.md
Normal file
434
docs/private/roadmap/phases/phase-20.16/PHASE_20_16_ROADMAP.md
Normal file
@ -0,0 +1,434 @@
|
||||
# Phase 20.16 Roadmap — Update(削減メトリクス撤退、Frozen v1 へ)
|
||||
|
||||
このドキュメントは旧「削減%」ナラティブに基づく草案です。Phase 20.16 は Frozen v1(Stage 0→1→2 自己ビルド)へ方針転換しました。最新方針は `README.md` と `../FROZEN_TOOLCHAIN_STRATEGY.md` を参照してください。以下は参考情報として残します。
|
||||
|
||||
---
|
||||
|
||||
## 📅 全体スケジュール (参考)
|
||||
|
||||
### Phase 20.14 (現在) - Frontend統合完了 🎯
|
||||
- **期間**: 2025-10-27 ~ 2025-11-24 (4週間)
|
||||
- **目標**: 68%削減 (115,632 → 35,000行)
|
||||
- **主要成果**: Frontend EXE化 + Parser削減 + C‑ABI基盤
|
||||
|
||||
### Phase 20.15 - Core削減強化 🚀
|
||||
- **期間**: 2025-11-25 ~ 2026-01-12 (6週間)
|
||||
- **目標**: 75%削減 (35,000 → 28,731行)
|
||||
- **主要成果**: MIR Core最適化 + Box実装最適化
|
||||
|
||||
### **Phase 20.16 - C‑ABIカーネル化(参考案)**
|
||||
- **期間**: 2026-01-13 ~ 2026-04-27 (15週間)
|
||||
- **目標**: 大幅削減の継続(90%前後を目安。具体値は実測で都度更新)
|
||||
- **主要成果**: **hakmem完全活用** + **C‑ABI一本化**
|
||||
|
||||
---
|
||||
|
||||
## 🔥 Phase 20.16 詳細計画
|
||||
|
||||
### Week 1-3: hakmem C‑ABI化基盤 (準備フェーズ)
|
||||
|
||||
#### Week 1: hakmemコア移植
|
||||
```c
|
||||
// hakorune_memory.h - 基盤定義
|
||||
// Phase 6研究成果の完全移植開始
|
||||
|
||||
// 1. L2.5 LargePool移植 (Phase 6.13成果)
|
||||
typedef struct {
|
||||
size_t size_classes[5]; // 64KB, 128KB, 256KB, 512KB, 1MB
|
||||
void* pools[5];
|
||||
uint64_t non_empty_bitmap;
|
||||
size_t total_allocated;
|
||||
} l25_pool_manager_t;
|
||||
|
||||
// 2. Tiny Pool移植 (Phase 6.12成果)
|
||||
typedef struct {
|
||||
size_t size_classes[8]; // 8B-1KB
|
||||
struct slab_registry* registry;
|
||||
size_t slab_size; // 64KB
|
||||
} tiny_pool_manager_t;
|
||||
```
|
||||
|
||||
**重点成果**:
|
||||
- ✅ L2.5 Pool C実装 (64KB-1MBあたり52%改善がそのまま)
|
||||
- ✅ Tiny Pool C実装 (8-1KBの最適化)
|
||||
- ✅ 基本的なC‑ABI API (malloc/free/realloc/calloc)
|
||||
|
||||
#### Week 2: Performance移植
|
||||
```c
|
||||
// hakmemに含まれる最適化技術の移植
|
||||
|
||||
// 1. Whale Cache移植 (Phase 6.11成果)
|
||||
typedef struct {
|
||||
void* cache_slots[8]; // 8 slots = 16MB cache
|
||||
uint64_t access_count[8];
|
||||
uint64_t clock_hand;
|
||||
} whale_cache_t;
|
||||
|
||||
// 2. BigCache移植 (Phase 6.10.1成果)
|
||||
typedef struct {
|
||||
struct cache_entry* entries[256]; // Hash-based fast lookup
|
||||
uint8_t size_classes[8]; // 4→8 expansion
|
||||
size_t max_cached_size; // 8MB → 閾値
|
||||
} big_cache_t;
|
||||
```
|
||||
|
||||
**重点成果**:
|
||||
- ✅ Whale Cache実現 (99.9% hit rate、大規模allocationで60%改善)
|
||||
- ✅ BigCache最適化 (size classes expansion)
|
||||
- ✅ ファイルシステム連携 (mapping/unmapping)
|
||||
|
||||
#### Week 3: Telemetry移植
|
||||
```c
|
||||
// hakmem_debug.cからのインフラ移植
|
||||
|
||||
// 1. Profiling Infrastructure (Phase 6.11.3成果)
|
||||
typedef struct {
|
||||
uint64_t category_timings[26]; // 拡張26 categories
|
||||
uint64_t syscall_counts[16]; // syscall wrapper
|
||||
struct rdtsc_state timing_state;
|
||||
} hakmem_profiler_t;
|
||||
|
||||
// 2. Syscall Wrappers移植
|
||||
void* hkm_sys_mmap(void* addr, size_t length, int prot, int flags, int fd, off_t offset);
|
||||
int hkm_sys_munmap(void* addr, size_t length);
|
||||
int hkm_sys_madvise(void* addr, size_t length, int advice);
|
||||
```
|
||||
|
||||
**重点成果**:
|
||||
- ✅ Lightweight profiling (zero-overhead when disabled)
|
||||
- ✅ Syscall instrumentation
|
||||
- ✅ Performance regression detection 基盤
|
||||
|
||||
### Week 4-8: 完全C‑ABIカーネル実装 (実装フェーズ)
|
||||
|
||||
#### Week 4-5: Memory統合
|
||||
```c
|
||||
// hakorune_kernel.c - 主要実装ファイル
|
||||
|
||||
typedef struct {
|
||||
// Memory Subsystem (hakmem完全統合)
|
||||
l25_pool_manager_t* l25_manager; // Phase 6.13
|
||||
tiny_pool_manager_t* tiny_manager; // Phase 6.12
|
||||
whale_cache_t* whale_cache; // Phase 6.11
|
||||
big_cache_t* big_cache; // Phase 6.10.1
|
||||
site_registry_t* site_registry; // Phase 6.10
|
||||
elo_system_t* elo_system; // Phase 6.2-6.11
|
||||
|
||||
// FFI Subsystem
|
||||
hakorune_ffi_t* ffi_interface;
|
||||
|
||||
// Configuration
|
||||
hakorune_config_t* config;
|
||||
|
||||
// Diagnostics
|
||||
hakmem_profiler_t* profiler;
|
||||
} hakorune_kernel_t;
|
||||
|
||||
// 4つの核関数のみに集約
|
||||
void* hr_malloc(size_t size) {
|
||||
// Phase 6研究成果の完全統合: ELO + Site Rules + Pools
|
||||
return hakmem_alloc_integrated(size, HAK_CALLSITE());
|
||||
}
|
||||
```
|
||||
|
||||
**重点成果**:
|
||||
- ✅ 単一kernel構造体への統合
|
||||
- ✅ **Phase 6研究成果の100%活用**
|
||||
- ✅ 4関数APIの完成 (malloc/free/realloc/calloc)
|
||||
|
||||
#### Week 6-7: FFI Interface実装
|
||||
```c
|
||||
// hakorune_ffi.c - FFI処理の完全実装
|
||||
|
||||
typedef struct {
|
||||
// Dynamic Library Management
|
||||
struct loaded_lib* libs[32]; // 最大32 libraries
|
||||
int lib_count;
|
||||
|
||||
// Function Resolution Cache
|
||||
struct func_cache* cache[256]; // Hash cache
|
||||
|
||||
// Call Safety
|
||||
void* stack_canary; // Stack overflow detection
|
||||
uint64_t call_timeout_ms; // 5000ms default
|
||||
} hakorune_ffi_t;
|
||||
|
||||
// Zero-overhead FFI call
|
||||
void* hr_ffi_call_fast(const char* lib, const char* func, void* args[], int count) {
|
||||
// Fast-path: Hash lookup + direct call
|
||||
struct func_cache* entry = cache_lookup(lib, func);
|
||||
if (likely(entry)) {
|
||||
return entry->native_func(args, count); // Direct C call
|
||||
}
|
||||
// Slow-path: Dynamic resolution + cache
|
||||
return resolve_and_cache_call(lib, func, args, count);
|
||||
}
|
||||
```
|
||||
|
||||
**重点成果**:
|
||||
- ✅ **Zero-overhead FFI** (<10 cycles overhead)
|
||||
- ✅ **Function resolution cache** (Hash-based O(1))
|
||||
- ✅ **Stack safety** (Canary-based protection)
|
||||
|
||||
#### Week 8: System Interface抽象化
|
||||
```c
|
||||
// hakorune_system.c - OS abstraction layer
|
||||
|
||||
typedef struct {
|
||||
// Time Functions (hakmemタイミング基盤)
|
||||
uint64_t (*get_time_ns)(void);
|
||||
uint64_t (*get_cycle_count)(void); // RDTSC wrapper
|
||||
|
||||
// File Operations
|
||||
int (*file_exists)(const char* path);
|
||||
long (*file_size)(const char* path);
|
||||
void* (*file_map)(const char* path, size_t* size);
|
||||
|
||||
// Process Management
|
||||
void (*exit_process)(int code);
|
||||
int (*get_env_var)(const char* name, char* buffer, size_t size);
|
||||
} hakorune_system_t;
|
||||
|
||||
#include "platform/linux.c" // Linux実装
|
||||
#include "platform/windows.c" // Windows実装
|
||||
#include "platform/macos.c" // macOS実装
|
||||
```
|
||||
|
||||
**重点成果**:
|
||||
- ✅ **Platform abstraction** (Linux/Windows/macOS)
|
||||
- ✅ **High-precision timing** (RDTSC活用)
|
||||
- ✅ **File mapping** (Phase 6.11研究成果活用)
|
||||
|
||||
### Week 9-12: Rust層完全置換 (移行フェーズ)
|
||||
|
||||
#### Week 9: Box実装のC‑ABI化
|
||||
```c
|
||||
// hakorune_boxes.h - Core box definitions
|
||||
|
||||
// Hakorune Core Boxes (最小限)
|
||||
typedef struct {
|
||||
enum { BOX_STRING, BOX_INT, BOX_BOOL, BOX_ARRAY, BOX_MAP } type;
|
||||
size_t ref_count;
|
||||
void* data; // Box-specific data
|
||||
} hbox_base_t;
|
||||
|
||||
// StringBox (最も重要)
|
||||
typedef struct {
|
||||
hbox_base_t base;
|
||||
char* data;
|
||||
size_t length;
|
||||
size_t capacity;
|
||||
} hstring_box_t;
|
||||
|
||||
// 最小化されたBox API
|
||||
hstring_box_t* hstring_new(const char* data);
|
||||
hstring_box_t* hstring_clone(const hstring_box_t* obj);
|
||||
void hstring_release(hstring_box_t* obj);
|
||||
```
|
||||
|
||||
**重点成果**:
|
||||
- ✅ **Core Box architecture** のC移植
|
||||
- ✅ **Reference counting** のautoreleasepool最適化
|
||||
- ✅ **Memory layout optimization** ( hakmem活用)
|
||||
|
||||
#### Week 10: VM Engineブリッジ
|
||||
```c
|
||||
// hakorune_vm_bridge.c - Hakorune VMとのブリッジ
|
||||
|
||||
typedef struct {
|
||||
// VM State (最小限)
|
||||
uint8_t* bytecode; // Executable bytecode
|
||||
uint64_t bytecode_size;
|
||||
|
||||
// Execution Context
|
||||
void* registers[64]; // v%0-v%63
|
||||
uint64_t pc; // Program counter
|
||||
uint64_t call_stack[256]; // Basic stack
|
||||
int stack_depth;
|
||||
|
||||
// Performance (hakmem telemetry活用)
|
||||
struct {
|
||||
uint64_t instructions_executed;
|
||||
uint64_t allocation_count;
|
||||
uint64_t peak_memory;
|
||||
} stats;
|
||||
} hvm_context_t;
|
||||
|
||||
// Hakorune VMとのC‑ABIブリッジ
|
||||
int hvm_execute_bytecode(hvm_context_t* vm, const uint8_t* bytecode, size_t size);
|
||||
void* hvm_call_function(hvm_context_t* vm, const char* func_name, void* args[], int count);
|
||||
```
|
||||
|
||||
**重点成果**:
|
||||
- ✅ **Lightweight VM context** (hakmem telemetry統合)
|
||||
- ✅ **Fast bytecode execution** (C最適化)
|
||||
- ✅ **Hakoruneとの完全互換**
|
||||
|
||||
#### Week 11: Plugin Manager移行
|
||||
```c
|
||||
// hakorune_plugins.c - Pure C implementation
|
||||
|
||||
typedef struct {
|
||||
char name[64];
|
||||
void* handle; // dlopen handle
|
||||
hakorune_ffi_t* ffi_interface; // Plugin's FFI
|
||||
struct {
|
||||
void* (*init)(void);
|
||||
void* (*call)(const char* method, void* args[], int count);
|
||||
void (*cleanup)(void);
|
||||
} exports;
|
||||
} hplugin_entry_t;
|
||||
|
||||
hplugin_entry_t* hplugin_load(const char* path);
|
||||
void* hplugin_call(hplugin_entry_t* plugin, const char* method, void* args[], int count);
|
||||
void hplugin_unload(hplugin_entry_t* plugin);
|
||||
```
|
||||
|
||||
**重点成果**:
|
||||
- ✅ **Pure C plugin system** (Rust完全排除)
|
||||
- ✅ **Dynamic loading with safety**
|
||||
- ✅ **Fast method resolution** (Hash-based)
|
||||
|
||||
#### Week 12: Frontend完全移行
|
||||
```bash
|
||||
# Phase 20.13 Frontend EXE群のC‑ABI連携
|
||||
# runner_front.hkr → C-ABI kernel 呼出し
|
||||
|
||||
# 実行パイプライン:
|
||||
hakorune-native --runner script.hako
|
||||
└─> C-ABI kernel スタートup
|
||||
└─> hakmem memory manager 初期化
|
||||
└─> Frontend EXEを読み込み・実行
|
||||
└─> Hakorune VMでscript.hako実行
|
||||
```
|
||||
|
||||
**重点成果**:
|
||||
- ✅ **C‑ABI Frontend integration**
|
||||
- ✅ **Zero-rust dependency**
|
||||
- ✅ **Single EXE 完成北上**
|
||||
|
||||
### Week 13-15: Final Optimization & Validation (検証フェーズ)
|
||||
|
||||
#### Week 13-14: Performance Final Optimization
|
||||
```c
|
||||
// hakorune_optimize.c - 最終最適化
|
||||
|
||||
// 1. Cache-friendliness最適化
|
||||
typedef struct {
|
||||
__attribute__((aligned(64))) // Cache line boundary
|
||||
l25_pool_manager_t l25; // 64KB aligned
|
||||
tiny_pool_manager_t tiny; // 下位16KBに配置
|
||||
whale_cache_t whale; // 中間16KBに配置
|
||||
} cache_aligned_kernels_t;
|
||||
|
||||
// 2. Branch prediction最適化
|
||||
static inline void* fast_allocation_path(size_t size) {
|
||||
// Likely path optimization
|
||||
if (likely(size < 1024)) return tiny_alloc_fast(size);
|
||||
if (likely(size < 1024*1024)) return l25_alloc_fast(size);
|
||||
return big_alloc_fallback(size); // Rare path
|
||||
}
|
||||
```
|
||||
|
||||
**重点成果**:
|
||||
- ✅ **Cache-aligned data structures**
|
||||
- ✅ **Branch prediction optimization**
|
||||
- ✅ **Profile-guided optimization**
|
||||
|
||||
#### Week 15: Comprehensive Validation
|
||||
```bash
|
||||
# 最終検証テストスイート
|
||||
|
||||
# 1. Performance Validation
|
||||
./benchmark_all.sh
|
||||
# Expect:
|
||||
# - mimallocより優位性保持 (Phase 6.13成果維持)
|
||||
# - 起動時間 <50ms
|
||||
# - メモリ使用 <30MB
|
||||
|
||||
# 2. Compatibility Validation
|
||||
./compatibility_test_suite.sh
|
||||
# Expect: 99%+ 既存Hakoruneスクリプト互換
|
||||
|
||||
# 3. Stress Validation
|
||||
./stress_test_rust_vs_c.sh
|
||||
# Expect: C-ABI version = Rust version ±5%
|
||||
|
||||
# 4. Deployment Validation
|
||||
./single_exe_deploy_test.sh
|
||||
# Expect: 単一EXEで全機能動作
|
||||
```
|
||||
|
||||
**重点成果**:
|
||||
- ✅ **Performance benchmarks全面合格**
|
||||
- ✅ **99%+ 互換性維持**
|
||||
- ✅ **Single EXE deployment 完成北上**
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Phase 20.16 目標達成基準
|
||||
|
||||
### 技術的成功
|
||||
- ✅ **Rust LOC**: **8,000行** (93%削減)
|
||||
- ✅ ** Performance**: mimalloc対比優位性維持 (Phase 6.13成果)
|
||||
- ✅ **Single EXE**: <3MB、外部依存ゼロ
|
||||
- ✅ **起動時間**: <50ms cold start
|
||||
- ✅ **Memory使用**: <30MB base execution
|
||||
|
||||
### 品質的成功
|
||||
- ✅ **互換性**: 99%+ 既存スクリプト互換
|
||||
- ✅ **安定性**: Critical zero bugs, major <5
|
||||
- ✅ **Documentation**: Full API reference + migration guide
|
||||
- ✅ **Testing**: 95%+ coverage, performance regression testing included
|
||||
|
||||
### 事業的成功
|
||||
- ✅ **開発効率**: Build time 90%削減 (5分→30秒)
|
||||
- ✅ **配布簡易化**: Single EXE、installer不要
|
||||
- ✅ **学習コスト**: Rust → C、大幅簡素化
|
||||
- ✅ **ポータビリティ**: Linux/Windows/macOS完全対応
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Phase 20.16 完了後の未来
|
||||
|
||||
### 到達した状態
|
||||
```
|
||||
Hakorune Native EXE (<3MB)
|
||||
├── Pure C‑ABI Kernel (8,000行)
|
||||
│ ├── hakmem-optimized allocator
|
||||
│ ├── Zero-overhead FFI
|
||||
│ └── Platform abstraction
|
||||
├── Hakorune Frontend EXEs
|
||||
├── Hakorune VM ( bytecode実行)
|
||||
└── Pure Hakorune ecosystem
|
||||
```
|
||||
|
||||
### 次の可能性
|
||||
- 🔥 **モバイル展開**: Android/iOS (Cだから可能)
|
||||
- 🔥 **組込展開**: IoT/Edge device (リソース制約に対応)
|
||||
- 🔥 **WebAssembly化**: C → WASMコンパイルで browser対応
|
||||
- 🔥 **教育利用**: C言語習得後の次ステップ言語として
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
## 📚 関連ドキュメント
|
||||
|
||||
### Phase連携
|
||||
- [Phase 20.15](../phase-20.15/) - Core削減強化 (準備フェーズ)
|
||||
- [Phase 20.14](../phase-20.14/) - Frontend統合完了 (基盤フェーズ)
|
||||
- [Phase 20.13](../phase-20.13/) - Script-built EXE基盤
|
||||
|
||||
### 理論的基盤
|
||||
- [ULTIMATE_RUST_MINIMIZATION.md](ULTIMATE_RUST_MINIMIZATION.md) - 究極的最小化戦略
|
||||
- [MASTER_ROADMAP](../00_MASTER_ROADMAP.md) - 開発マスタープラン
|
||||
- [hakmem研究成果](../../../../apps/experiments/hakmem-poc/) - パフォーマンス最適化基盤
|
||||
|
||||
---
|
||||
|
||||
**Phase 20.16 開始**: 2026-01-13
|
||||
**Phase 20.16 完了**: 2026-04-27
|
||||
**究極的Rust依存最小化**: **93%削減 (115,632 → 8,000行)** ⭐
|
||||
|
||||
これがHakoruneのNative言語としての最終形態ですにゃ!🐱
|
||||
28
docs/private/roadmap/phases/phase-20.16/README.md
Normal file
28
docs/private/roadmap/phases/phase-20.16/README.md
Normal file
@ -0,0 +1,28 @@
|
||||
# Phase 20.16 — Frozen v1(Stage 0→1→2)
|
||||
|
||||
Purpose
|
||||
- 凍結ツールチェーンの最小一式(compiler/core, runtime/minimal‑vm, stdlib/minimal)を構築し、自己ビルドの再現性を確認する。
|
||||
|
||||
Strategy
|
||||
- Stage 0: Rust で frozen‑v1 をビルド(発射台)
|
||||
- Stage 1: frozen‑v1 で同一ソースを再ビルド(自己)
|
||||
- Stage 2: 生成物の hash/正規化 diff を比較し、再現性を確認(S3 は任意)
|
||||
|
||||
Acceptance Criteria
|
||||
- S0→S1→S2 のビルドが安定し、S1 と S2 の差分が 0(または許容差分が文書化)
|
||||
- JSON v0 / Core 意味論 / 診断タグは v1 仕様として固定(docs 参照)
|
||||
- quick/integration は既定OFF、opt‑in で selfhost canary が全緑
|
||||
|
||||
Notes
|
||||
- 「削減%」のメトリクスは廃止。代わりに契約準拠率・再現性・パリティで測る。
|
||||
- 詳細戦略: `../FROZEN_TOOLCHAIN_STRATEGY.md`
|
||||
- Stage driver: `docs/development/tools/stage-pipeline.md`(S0/S1/S2 の使い方)
|
||||
|
||||
Results (closeout)
|
||||
- S2(strict) 比較は代表サンプルで緑(nested‑if, diamond+phi)。loop サンプルは verifier 警告の観測教材として保留。
|
||||
- MIR JSON の安定化(ValueId の遭遇順リネンバリング)を導入し、2回 emit の差分を大幅に低減。
|
||||
- child_env をヘルパーに一元化(selfhost 子/nyvm(Core)/Gate‑C JSON 経路)。inline selfhost 経路もヘルパー適用。
|
||||
- HKI v1 bring-up: kni.* を第一表記にし、`HAKO_KNI_TIME` / `HAKO_KNI_FS` ゲートと Gate‑C preflight を追加。fs/time スモークを quick/core に追加。
|
||||
- HKI canary を quick allowlist へ組み込み(opt‑in)。追加: `kni.fs.read_all` 負例/正例、`kni.time.now_ms`、`kni.console.log`。
|
||||
- Gate‑C(Core) で Map 正例を追加(`canary_gate_c_core_map_(len|get)_vm.sh`)。
|
||||
- 既定トグル: `SMOKES_ENABLE_CORE_CANARY=1` を明示したときのみ HKI 正例を実行(既定ONは Gate 整備後に再検討)。
|
||||
31
docs/private/roadmap/phases/phase-20.16/TASKS.md
Normal file
31
docs/private/roadmap/phases/phase-20.16/TASKS.md
Normal file
@ -0,0 +1,31 @@
|
||||
# Tasks — Phase 20.16 (Frozen v1: Stage 0→1→2)
|
||||
|
||||
Goal
|
||||
- Stage パイプライン(S0→S1→S2)の導線を凍結契約のもとで整備し、手動/スモークで検証できる状態にする。
|
||||
|
||||
Scope (this phase)
|
||||
- スクリプト/ドキュメント/スモークを先に用意(実装は最小・安全)。
|
||||
- S1/S2 の完全自己ビルドは次の小バッチで段階的に実装(TTL/ゲート付き)。
|
||||
|
||||
Tasks
|
||||
- [x] Stage overview & acceptance in README.md(phase-20.16)
|
||||
- [x] Add stage runner script (tools/stage/pipeline.sh)
|
||||
- S0: cargo build --release 成功確認
|
||||
- S1: hakorune を用いて最小プログラムの JSON v0 実行(Gate‑C Core)を暫定の成功基準とする(TTL)
|
||||
- [x] Add quick/stage canaries (opt‑in)
|
||||
- canary_stage0_build_ok.sh — cargo build 成功を検証
|
||||
- canary_stage1_minjson_placeholder_ok.sh — Gate‑C(Core) で最小 JSON v0 実行を検証
|
||||
- [x] S2(strict) 比較: 正規化比較 + 代表サンプル(nested‑if / diamond+phi)緑
|
||||
- [x] MIR JSON 安定化: ValueId 遭遇順リネンバリングを導入(差分低減)
|
||||
- [x] child_env 一元化: selfhost 子/nyvm(Core)/Gate‑C(JSON) 経路をヘルパー化
|
||||
- [ ] S1 本線(自己ビルド): hakorune によるコンパイラ出力生成の骨子を着手(20.17)
|
||||
- [ ] S2 比較器: 生成物の hash/正規化 diff の canonical ハッシュ比較に昇格(20.17)
|
||||
|
||||
Gates (default OFF)
|
||||
- SMOKES_ENABLE_STAGE=1 — quick/stage canaries を有効化
|
||||
- HAKO_STAGE_RUN=1 — tools/stage/pipeline.sh 実行を有効化(ドキュメント参照)
|
||||
|
||||
Notes
|
||||
- S1/S2 は段階導入。今バッチは「箱・導線・スモーク」を先に固定(Freeze‑First)。
|
||||
- 失敗は短文・Fail‑Fast(準拠: docs/development/architecture/errors/fail-fast-messages.md)。
|
||||
- 代表期待値: nested‑if=3, diamond+phi=7(loop=6 は教材として保留)。
|
||||
@ -0,0 +1,229 @@
|
||||
# 究極的Rust依存最小化戦略 - C‑ABIカーネルへの集約
|
||||
|
||||
## 🎯 目標アーキテクチャ
|
||||
|
||||
### 最終目標のイメージ
|
||||
```
|
||||
Hakorune Native EXE
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Hakorune世界 │
|
||||
│ ┌───────────────────────────────────────────────┐ │
|
||||
│ │ Hakoruneランタイム層 │ │
|
||||
│ │ ┌─────────────┬─────────────┬─────────────┐ │ │
|
||||
│ │ │ Frontend │ VM Engine │ Plugin │ │ │
|
||||
│ │ │ EXEs │ (Hakorune) │ Manager │ │ │
|
||||
│ │ └─────────────┴─────────────┴─────────────┘ │ │
|
||||
│ └───────────────────────────────────────────────┘ │
|
||||
│ ┌───────────────────────────────────────────────┐ │
|
||||
│ │ C‑ABI境界線 │ │
|
||||
│ │ ┌───────────────────────────────────────┐ │ │← ここが最終境界
|
||||
│ │ │ hakmemカーネル │ │ │
|
||||
│ │ │ ┌─────────────┬─────────────────────┐ │ │ │
|
||||
│ │ │ │ Memory │ FFI & System │ │ │ │
|
||||
│ │ │ │ Manager │ Interface │ │ │ │
|
||||
│ │ │ └─────────────┴─────────────────────┘ │ │ │
|
||||
│ │ └───────────────────────────────────────┘ │ │
|
||||
│ └───────────────────────────────────────────────┘ │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
OSの提供するmalloc/free/mmapなど
|
||||
```
|
||||
|
||||
## 📊 最小化ポテンシャル再評価
|
||||
|
||||
### 現状から究極への道
|
||||
|
||||
| Phase | Rust LOC | 削減率 | 主な削減対象 | 残存理由 |
|
||||
|------|----------|-------|-------------|----------|
|
||||
| 20.13 | 115,632 | - | - | 基準点 |
|
||||
| 20.14 | 35,000 | 68% | Parser/CLI/LLVM | C‑ABIカーネル確立 |
|
||||
| 20.15 | 28,731 | 75% | MIR/Box/VM | Core機能保持 |
|
||||
| **20.16** | **8,000** | **93%** | **C‑ABIカーネル** | **hakmem研究成果の完全活用** |
|
||||
|
||||
### C‑ABIカーネルの具体的構成要素
|
||||
|
||||
#### 🧠 **Memory Manager (hakmem研究成果の統合)**
|
||||
```c
|
||||
// hakorune_memory.h - Phase 6研究成果の完全活用
|
||||
typedef struct {
|
||||
// L2.5 LargePool (Phase 6.13成果)
|
||||
struct l25_pool* l25_pools[5]; // 64KB-1MB size classes
|
||||
|
||||
// Tiny Pool (Phase 6.12成果)
|
||||
struct tiny_pool* tiny_pools[8]; // 8B-1KB size classes
|
||||
|
||||
// Whale Cache (Phase 6.11成果)
|
||||
struct whale_cache* whale; // ≥2MB caching
|
||||
|
||||
// BigCache (Phase 6.10.1成果)
|
||||
struct big_cache* bigcache; // 2MB+ allocations
|
||||
|
||||
// Site Rules (Phase 6.10成果)
|
||||
struct site_registry* sites;
|
||||
|
||||
// ELO Evolution (Phase 6.2〜6.11研究成果)
|
||||
struct elo_system* elo;
|
||||
} hakorune_memory_t;
|
||||
|
||||
// 最小化された公開API (4関数のみ)
|
||||
void* hr_malloc(size_t size);
|
||||
void* hr_calloc(size_t count, size_t size);
|
||||
void* hr_realloc(void* ptr, size_t size);
|
||||
void hr_free(void* ptr);
|
||||
```
|
||||
|
||||
**期待効果**:
|
||||
- **mimalloc vs hakmem比較**: Phase 6.13でmirシナリオ52%改善達成
|
||||
- **C‑ABI化**: 最小オーバーヘッドでHakoruneから呼び出し可能
|
||||
|
||||
#### 🔗 **FFI & System Interface**
|
||||
```c
|
||||
// hakorune_ffi.h
|
||||
typedef struct {
|
||||
// Dynamic Library Loading
|
||||
void* (*load_library)(const char* path);
|
||||
void* (*get_symbol)(void* lib, const char* symbol);
|
||||
void (*unload_library)(void* lib);
|
||||
|
||||
// OS Interface
|
||||
int (*file_exists)(const char* path);
|
||||
uint64_t (*get_time_ms)(void);
|
||||
void (*log_message)(int level, const char* msg);
|
||||
} hakorune_ffi_t;
|
||||
|
||||
// 最小化されたFFI API
|
||||
hakorune_ffi_t* hr_ffi_init(void);
|
||||
void* hr_ffi_call(const char* lib_name, const char* func_name, void* args[], int arg_count);
|
||||
```
|
||||
|
||||
#### 💾 **Runtime Configuration**
|
||||
```c
|
||||
// hakorune_config.h
|
||||
typedef struct {
|
||||
// Memory Configuration (hakmem成果の反映)
|
||||
size_t l25_threshold; // 64KB
|
||||
size_t tiny_threshold; // 1KB
|
||||
size_t whale_threshold; // 2MB
|
||||
|
||||
// FFI Configuration
|
||||
int max_loaded_libs; // 32
|
||||
int ffi_call_timeout; // 5000ms
|
||||
|
||||
// Debug/Diagnostics
|
||||
int enable_profiling; // Phase 6.11.3成果活用
|
||||
int enable_tracing; // VMトレース連携
|
||||
} hakorune_config_t;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 最終実装計画
|
||||
|
||||
### Phase 20.16: C‑ABIカーネル化 (究極の最小化)
|
||||
|
||||
#### Week 1: hakmem研究成果のC‑ABI化
|
||||
- **hakmem最適化成果** (Phase 6系) の完全移植
|
||||
- **4つの核関数** (`hr_malloc/free/realloc/calloc`) の実装
|
||||
- **Performance Validation**: mimalloc対比テストの確立
|
||||
|
||||
#### Week 2: FFI Interface最小化
|
||||
- **動的ライブラリ読み込み** の実装
|
||||
- **System Call Wrapper** の最小化
|
||||
- **Zero-overhead Binding** の確立
|
||||
|
||||
#### Week 3: Rust層の完全置換
|
||||
- **残存Rustコード** (28,731行) のC‑ABI移行
|
||||
- **Hakorune Runtime** との完全疎結合化
|
||||
- **Single EXE** の完成
|
||||
|
||||
#### Week 4: Final Validation
|
||||
- **Performance Benchmarks** の実施
|
||||
- **互換性テスト** の実行
|
||||
- **Deployment Pipeline** の確立
|
||||
|
||||
---
|
||||
|
||||
## 📊 究極的效果予測
|
||||
|
||||
### 最終結果
|
||||
|
||||
| 項目 | 現状 | Phase 20.16 | 改善率 |
|
||||
|------|------|------------|---------|
|
||||
| **Rust LOC** | 115,632 | **8,000** | **93%削減** |
|
||||
| **ビルド時間** | ~5分 | **~30秒** | **90%削減** |
|
||||
| **EXEサイズ** | ~15MB | **~3MB** | **80%削減** |
|
||||
| **起動時間** | ~500ms | **<50ms** | **90%削減** |
|
||||
| **メモリ使用** | ~80MB | **<30MB** | **63%削減** |
|
||||
|
||||
### 技術的優位性
|
||||
- **✅ hakmem研究成果の活用**: mimalloc対比52%改善がそのままC‑ABIで動作
|
||||
- **✅ Zero-overhead C呼び出し**: FFIオーバーヘッド < 10 cycles
|
||||
- **✅ 完全ネイティブ実行**: Rust依存ゼロ、C++レベルの性能
|
||||
- **✅ Single EXE配布**: 外部依存ゼロ、ポータビリティ最大化
|
||||
|
||||
---
|
||||
|
||||
## 🚀 事業的インパクト
|
||||
|
||||
### 开发面の革新
|
||||
- **学習コスト**: Rust → C言語への大幅簡素化
|
||||
- **ビルド複雑度**: Cargo依存の完全排除
|
||||
- **デバッグ容易性**: 単一バイナリ、GDB完全サポート
|
||||
|
||||
### 配布面の革新
|
||||
- **ポータビリティ**: Windows/Linux/macOS同時対応
|
||||
- **モバイル対応**: Android/iOS (C-ABIだから可能)
|
||||
- **組込対応**: リソース制約環境への展開
|
||||
|
||||
---
|
||||
|
||||
## 🎯 結論
|
||||
|
||||
### 究極的なRust依存最小化の答え
|
||||
**はい、C‑ABIのメモリー管理にまで集約可能ですにゃ!**
|
||||
|
||||
### 最終到達点
|
||||
```
|
||||
Hakorune Native EXE
|
||||
↓ C‑ABI境界線 (唯一の境界)
|
||||
hakmemベースのCカーネル (8,000行最終)
|
||||
↓ OS境界線
|
||||
malloc/free/mmapなど
|
||||
```
|
||||
|
||||
### Phase 20.16での達成目標
|
||||
- **Rust依存**: 93%削減 (115,632 → 8,000行)
|
||||
- **性能**: hakmem研究成果そのままのmimalloc対比優位性維持
|
||||
- **配布**: Single EXE <3MB、外部依赖ゼロ
|
||||
- **起動**: <50ms cold start
|
||||
|
||||
---
|
||||
|
||||
## 📚 関連ドキュメント
|
||||
|
||||
### 前Phaseからの移行
|
||||
- [Phase 20.15](../phase-20.15/) - Core削減強化 (75%削減達成)
|
||||
- [Phase 20.14](../phase-20.14/) - Frontend統合完了 (68%削減達成)
|
||||
- [Phase 20.13](../phase-20.13/) - Script-built EXE基盤
|
||||
|
||||
### 詳細実行計画
|
||||
- [PHASE_20_16_ROADMAP.md](PHASE_20_16_ROADMAP.md) - 15週間詳細実行計画
|
||||
|
||||
### 参考資料
|
||||
- [MASTER_ROADMAP](../00_MASTER_ROADMAP.md) - 開発マスタープラン
|
||||
- [hakmem研究成果](../../../../apps/experiments/hakmem-poc/) - Phase 6系最適化成果
|
||||
|
||||
---
|
||||
|
||||
### Phase 20.16での達成目標
|
||||
- **Rust依存**: 93%削減 (115,632 → 8,000行)
|
||||
- **性能**: hakmem研究成果そのままのmimalloc対比優位性維持
|
||||
- **配布**: Single EXE <3MB、外部依赖ゼロ
|
||||
- **起動**: <50ms cold start
|
||||
|
||||
これはHakoruneが真の「Native言語」となるための究極の姿ですにゃ!🐱
|
||||
|
||||
---
|
||||
|
||||
**究極的最小化ターゲット**: Phase 20.16
|
||||
**実現期間**: Phase 20.14から追加6ヶ月
|
||||
**達成効果**: 93% Rust依存削減 + hakmem完全活用
|
||||
Reference in New Issue
Block a user