スキル一覧に戻る

PicoRuby Development Constraints

bash0C7 / picotorokko

1🍴 0📅 2025年12月30日

Documents memory limits and stdlib constraints for PicoRuby on ESP32. Use this when writing code that will run on ESP32 hardware or designing features for PicoRuby applications.

SKILL.md

---
name: PicoRuby Development Constraints
description: Documents memory limits and stdlib constraints for PicoRuby on ESP32. Use this when writing code that will run on ESP32 hardware or designing features for PicoRuby applications.
---

# PicoRuby Development Constraints

Memory constraints and stdlib limitations for ESP32 PicoRuby development.

## Memory & Runtime Limits

- **Total heap**: 520KB (strict limit)
- **Nesting depth**: Avoid deep recursion; prefer iterative solutions
- **String handling**: Pre-allocate when possible; avoid repeated concatenation
- **Arrays**: Use fixed-size when known; minimize dynamic growth during tight loops

## PicoRuby vs CRuby

| Feature | PicoRuby | CRuby |
|---------|----------|-------|
| Gems | ❌ No bundler/gems | ✅ Full ecosystem |
| stdlib | Minimal (R2P2-ESP32 only) | Complete stdlib |
| Memory | ~520KB heap | GB+ available |
| GC | Simple mark-sweep | Complex generational |
| Float math | ⚠️ Limited precision | Full IEEE 754 |

## PicoRuby-safe stdlib

**Available**:
- `Array#each`, `#map`, `#select` (avoid `#each_with_index` in tight loops)
- `Hash` (simple key-value)
- `String` (basic methods, avoid regex for embedded)
- `Time` (limited; ESP32 time depends on system clock)
- `File` (via R2P2-ESP32 abstraction)

**Unavailable**:
- Regex (use string matching instead)
- Threads (single-threaded runtime)
- Fiber/Enumerator (complex control flow not needed)