Files
hakorune/projects/nyash-wasm
Moe Charm 22212aa314 refactor: Major interpreter modularization and P2PBox enhancements
Major Interpreter Refactoring:
- Split core.rs (373 lines removed) into focused modules
- Split expressions/calls.rs (460 lines removed) into cleaner structure
- Added new modules: calls.rs, errors.rs, eval.rs, methods_dispatch.rs, state.rs
- Improved separation of concerns across interpreter components

P2PBox Enhancements:
- Added on_once() for one-time event handlers
- Added off() for handler deregistration
- Implemented handler flags with AtomicBool for thread-safe management
- Added loopback testing cache (last_from, last_intent_name)
- Improved Arc-based state sharing for transport and handlers

Plugin Loader Unification (In Progress):
- Created plugin_loader_unified.rs skeleton
- Created plugin_ffi_common.rs for shared FFI utilities
- Migration plan documented (2400 lines → 1100 lines target)

MIR & VM Improvements:
- Enhanced modularized MIR builder structure
- Added BoxCall dispatch improvements
- Better separation in builder modules

Documentation Updates:
- Added Phase 9.79a unified box dispatch plan
- Created plugin loader migration plan
- Updated CURRENT_TASK.md with latest progress

All tests passing (180 tests) - ready for next phase of refactoring

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-26 19:13:57 +09:00
..

🌐 Nyash WebAssembly Project

Nyash programming language running in the browser via WebAssembly!

🚀 Quick Start

# Install wasm-pack (if not already installed)
cargo install wasm-pack

# Build WASM module
cd /mnt/c/git/nyash
wasm-pack build --target web --out-dir projects/nyash-wasm/pkg

# Start local server  
cd projects/nyash-wasm
python3 -m http.server 8000

# Open browser
# Navigate to: http://localhost:8000/nyash_playground.html

🎯 Features

  • 🐱 Full Nyash Language - Complete interpreter running in browser
  • 📦 ConsoleBox - Browser console integration
  • 🔍 DebugBox - Real-time debugging in browser
  • All Operators - NOT/AND/OR/Division fully supported
  • 🎮 Interactive Playground - Code editor with examples

📁 File Structure

projects/nyash-wasm/
├── README.md                 # This file
├── nyash_playground.html     # Interactive playground
├── build.sh                  # Build script
└── pkg/                      # Generated WASM files (after build)
    ├── nyash_rust.js
    ├── nyash_rust_bg.wasm
    └── ...

🎨 Example Code

// Browser console output
console = new ConsoleBox()
console.log("Hello from Nyash in Browser!")

// Math with new operators
x = 10
y = 3
console.log("Division: " + (x / y))          // 3.333...
console.log("Logic: " + (x > 5 and y < 5))  // true

// Debugging
debug = new DebugBox()
debug.startTracking()
debug.trackBox(x, "my_number")
console.log(debug.memoryReport())

🔧 Development

Build Process

  1. Rust code compiled to WebAssembly using wasm-bindgen
  2. NyashWasm struct exported with eval() method
  3. ConsoleBox uses web-sys for browser console access
  4. HTML playground provides interactive interface

Architecture

Browser JavaScript
    ↓
NyashWasm.eval(code)
    ↓ 
NyashInterpreter (Rust)
    ↓
ConsoleBox → web_sys::console

🎉 Coming Soon

  • DOMBox - DOM manipulation from Nyash
  • CanvasBox - Graphics and games
  • EventBox - Mouse/keyboard event handling
  • HTTPBox - Network requests
  • Sample Apps - Snake game, Calculator, etc.

Everything is Box, even in the browser! 🐱