2025-08-09 15:14:44 +09:00
# 🐱 Nyash Programming Language
2025-08-29 13:46:18 +09:00
**A Seriously-Crafted Hobby Language**
2025-08-29 11:49:01 +09:00
**From Zero to Native Binary in 20 Days - The AI-Powered Language Revolution**
2025-08-09 15:14:44 +09:00
2025-08-09 15:37:24 +09:00
*[🇯🇵 日本語版はこちら / Japanese Version ](README.ja.md )*
2025-08-09 15:14:44 +09:00
2025-09-07 07:36:15 +09:00
[](https://github.com/moe-charm/nyash/actions/workflows/selfhost-minimal.yml)
[](https://github.com/moe-charm/nyash/actions/workflows/smoke.yml)
2025-08-09 15:14:44 +09:00
[](#philosophy )
2025-08-29 11:49:01 +09:00
[](#performance )
2025-09-06 16:18:46 +09:00
[-orange.svg)](#execution -modes)
2025-08-29 13:46:18 +09:00
[](projects/nyash-wasm/nyash_playground.html)
2025-08-09 15:14:44 +09:00
[](#license )
---
2025-09-22 07:54:25 +09:00
Execution Status (Feature Additions Pause)
2025-09-20 09:11:52 +09:00
- Active
- `--backend llvm` (Python/llvmlite harness; AOT object emit)
- `--backend vm` (PyVM harness)
- Inactive/Sealed
- `--backend cranelift` , `--jit-direct` (sealed; use LLVM harness)
- Rust VM (legacy opt‑ in via features)
Quick pointers
- Emit object with harness: set `NYASH_LLVM_USE_HARNESS=1` and `NYASH_LLVM_OBJ_OUT=<path>` (defaults in tools use `tmp/` ).
- Run PyVM: `NYASH_VM_USE_PY=1 ./target/release/nyash --backend vm apps/APP/main.nyash` .
2025-09-05 05:16:21 +09:00
Developer quickstart: see `docs/DEV_QUICKSTART.md` . Changelog highlights: `CHANGELOG.md` .
2025-09-19 22:27:59 +09:00
User Macros (Phase 2): `docs/guides/user-macros.md`
2025-09-21 08:53:00 +09:00
Exceptions (postfix catch/cleanup): `docs/guides/exception-handling.md`
ScopeBox & MIR hints: `docs/guides/scopebox.md`
2025-09-19 22:27:59 +09:00
AST JSON v0 (macro/bridge): `docs/reference/ir/ast-json-v0.md`
2025-09-22 21:52:39 +09:00
MIR mode note: Default PHI behavior
2025-09-24 14:13:15 +09:00
- Phase‑ 15 ships PHI‑ ON by default. Builders emit SSA `Phi` nodes at merges for loops, break/continue, and structured control flow.
- Legacy PHI‑ off fallback: set `NYASH_MIR_NO_PHI=1` (pair with `NYASH_VERIFY_ALLOW_NO_PHI=1` if you need relaxed verification).
- See `docs/reference/mir/phi_policy.md` for rationale and troubleshooting.
2025-09-17 10:58:12 +09:00
Self‑ hosting one‑ pager: `docs/how-to/self-hosting.md` .
2025-09-18 06:35:49 +09:00
ExternCall (env.*) and println normalization: `docs/reference/runtime/externcall.md` .
2025-09-07 07:36:15 +09:00
2025-09-21 08:53:00 +09:00
Profiles (quick)
- `--profile dev` → Macros ON (strict), PyVM dev向け設定を適用( 必要に応じて環境で上書き可)
- `--profile lite` → Macros OFF の軽量実行
- 例: `./target/release/nyash --profile dev --backend vm apps/tests/ternary_basic.nyash`
Specs & Constraints
- Invariants (must-hold): `docs/reference/invariants.md`
- Constraints (known/temporary/resolved): `docs/reference/constraints.md`
- PHI & SSA design: `docs/architecture/phi-and-ssa.md`
- Testing matrix (spec → tests): `docs/guides/testing-matrix.md`
- Comparison with other languages: `docs/comparison/nyash-vs-others.md`
2025-09-07 07:36:15 +09:00
## Table of Contents
- [Self‑ Hosting (Dev Focus) ](#self-hosting )
- [Try in Browser ](#-try-nyash-in-your-browser-right-now )
2025-09-19 08:34:29 +09:00
- [🌟 Property System Revolution ](#-property-system-revolution-september-18-2025 )
- [Language Features ](#-language-features )
- [Plugin System ](#-revolutionary-plugin-system-typebox-architecture )
2025-09-07 07:36:15 +09:00
< a id = "self-hosting" > < / a >
## 🧪 Self‑ Hosting (Dev Focus)
2025-09-17 10:58:12 +09:00
- Guide: `docs/how-to/self-hosting.md`
2025-09-07 07:36:15 +09:00
- Minimal E2E: `NYASH_DISABLE_PLUGINS=1 ./target/release/nyash --backend vm apps/selfhost-minimal/main.nyash`
- Smokes: `bash tools/jit_smoke.sh` / `bash tools/selfhost_vm_smoke.sh`
- Makefile: `make run-minimal` , `make smoke-selfhost`
2025-09-05 05:16:21 +09:00
2025-09-07 07:28:53 +09:00
MIR note: Core‑ 13 minimal kernel is enforced by default (NYASH_MIR_CORE13=1). Legacy ops are normalized (Array/Ref→BoxCall; TypeCheck/Cast/Barrier/WeakRef unified).
Pure mode: set `NYASH_MIR_CORE13_PURE=1` to enable strict Core‑ 13. The optimizer rewrites a few ops (Load/Store/NewBox/Unary) to Core‑ 13 forms, and the compiler rejects any remaining non‑ Core‑ 13 ops. This may break execution temporarily by design to surface MIR violations early.
2025-09-06 16:18:46 +09:00
Note: JIT runtime execution is currently disabled to reduce debugging overhead. Use Interpreter/VM for running and AOT (Cranelift/LLVM) for distribution.
2025-09-05 15:18:13 +09:00
2025-08-29 13:46:18 +09:00
## 🎮 **Try Nyash in Your Browser Right Now!**
👉 ** [Launch Browser Playground ](projects/nyash-wasm/nyash_playground.html )** 👈
No installation needed - experience Nyash instantly in your web browser!
---
2025-09-02 11:18:19 +09:00
## 🚀 **Breaking News: Self-Hosting Revolution!**
2025-08-09 15:14:44 +09:00
2025-09-02 11:18:19 +09:00
**September 2, 2025** - 🔥 **ABI as a Box!** Nyash ABI itself implemented as TypeBox (C language) - path to self-hosting clear!
2025-09-02 09:26:09 +09:00
**September 1, 2025** - Revolutionary TypeBox ABI unification achieved! C ABI + Nyash ABI seamlessly integrated.
2025-08-29 11:49:01 +09:00
**August 29, 2025** - Just 20 days after inception, Nyash can now compile to native executables!
2025-08-09 15:14:44 +09:00
2025-08-29 11:49:01 +09:00
```bash
2025-08-29 23:11:21 +09:00
# From Nyash source to native binary (Cranelift required)
cargo build --release --features cranelift-jit
2025-08-29 11:49:01 +09:00
./tools/build_aot.sh program.nyash -o app # Native EXE
2025-08-29 23:11:21 +09:00
./app # Standalone execution!
2025-08-29 11:49:01 +09:00
```
2025-08-09 15:14:44 +09:00
2025-09-02 11:18:19 +09:00
**What we achieved in 24 days:**
2025-08-29 11:49:01 +09:00
- ✅ Full programming language with interpreter
- ✅ VM with 13.5x performance boost
- ✅ JIT compiler (Cranelift integration)
- ✅ WebAssembly support
2025-09-02 09:26:09 +09:00
- ✅ Plugin system (C ABI + Nyash ABI unified)
2025-08-29 11:49:01 +09:00
- ✅ Native binary generation
- ✅ Python integration via plugins
2025-09-02 09:26:09 +09:00
- ✅ TypeBox ABI bridge (revolutionary plugin unification)
2025-09-02 11:18:19 +09:00
- ✅ **Self-hosting path clear** (Nyash ABI in C, no Rust dependency!)
2025-08-09 15:14:44 +09:00
---
2025-08-29 11:49:01 +09:00
## ✨ **Why Nyash?**
2025-08-09 15:14:44 +09:00
2025-08-29 11:49:01 +09:00
### 🎯 **Everything is Box Philosophy**
2025-08-09 15:14:44 +09:00
```nyash
2025-08-29 11:49:01 +09:00
// Traditional languages have complex type systems
// Nyash: One concept rules them all - Box
2025-08-09 15:14:44 +09:00
static box Main {
main() {
2025-08-29 11:49:01 +09:00
// Every value is a Box - unified, safe, simple
local name = new StringBox("Nyash")
local count = new IntegerBox(42)
local data = new MapBox()
2025-08-09 15:14:44 +09:00
2025-08-29 11:49:01 +09:00
// Even Python objects are Boxes!
local py = new PyRuntimeBox()
local math = py.import("math")
print("sqrt(9) = " + math.getattr("sqrt").call(9).str())
return 0
2025-08-09 15:14:44 +09:00
}
}
```
2025-08-29 11:49:01 +09:00
### ⚡ **Unprecedented Development Speed**
- **Day 1**: Basic interpreter working
- **Day 4**: Already planning JIT
- **Day 13**: VM achieving 13.5x speedup
- **Day 20**: Native executable generation!
2025-08-09 15:14:44 +09:00
2025-08-29 11:49:01 +09:00
### 🔌 **Plugin-First Architecture**
2025-08-09 15:14:44 +09:00
```nyash
2025-08-29 11:49:01 +09:00
// Any functionality can be a plugin Box
local file = new FileBox() // File I/O plugin
local http = new HttpClientBox() // Network plugin
local py = new PyRuntimeBox() // Python plugin
2025-08-09 15:14:44 +09:00
2025-08-29 11:49:01 +09:00
// Plugins compile to native code too!
2025-08-09 15:14:44 +09:00
```
---
2025-08-29 11:49:01 +09:00
## 🏗️ **Multiple Execution Modes**
2025-08-09 15:14:44 +09:00
2025-09-17 16:11:01 +09:00
Important: JIT runtime execution is sealed for now. Use PyVM/VM for running, and Cranelift AOT/LLVM AOT for native executables.
Phase‑ 15 (Self‑ Hosting): Legacy VM/Interpreter are feature‑ gated
- Default build runs PyVM for `--backend vm` (python3 + `tools/pyvm_runner.py` required)
- To enable legacy Rust VM/Interpreter, build with:
```bash
cargo build --release --features vm-legacy,interpreter-legacy
```
Then `--backend vm` /`--backend interpreter` use the legacy paths.
2025-09-19 02:07:38 +09:00
- Note: `--benchmark` requires the legacy VM. Build with `--features vm-legacy` before running benchmarks.
2025-09-06 16:18:46 +09:00
2025-08-29 11:49:01 +09:00
### 1. **Interpreter Mode** (Development)
```bash
./target/release/nyash program.nyash
```
- Instant execution
- Full debug information
- Perfect for development
2025-08-09 15:14:44 +09:00
2025-09-17 16:11:01 +09:00
### 2. **VM Mode (PyVM default / Legacy optional)**
2025-08-29 11:49:01 +09:00
```bash
2025-09-17 16:11:01 +09:00
# Default: PyVM harness (requires python3)
./target/release/nyash --backend vm program.nyash
# Enable legacy Rust VM if needed
cargo build --release --features vm-legacy
2025-08-29 11:49:01 +09:00
./target/release/nyash --backend vm program.nyash
2025-08-09 15:14:44 +09:00
```
2025-09-17 16:11:01 +09:00
- Default (vm-legacy OFF): PyVM executes MIR(JSON) via `tools/pyvm_runner.py`
- Legacy VM: 13.5x over interpreter (historical); kept for comparison and plugin tests
2025-08-09 15:14:44 +09:00
2025-09-06 16:18:46 +09:00
### 3. **Native Binary (Cranelift AOT)** (Distribution)
2025-08-29 11:49:01 +09:00
```bash
2025-08-29 23:11:21 +09:00
# Build once (Cranelift)
cargo build --release --features cranelift-jit
2025-08-29 11:49:01 +09:00
./tools/build_aot.sh program.nyash -o myapp
./myapp # Standalone executable!
```
- Zero dependencies
- Maximum performance
- Easy distribution
2025-08-09 15:14:44 +09:00
2025-09-06 16:18:46 +09:00
### 4. **Native Binary (LLVM AOT)**
```bash
LLVM_SYS_180_PREFIX=$(llvm-config-18 --prefix) \
cargo build --release --features llvm
NYASH_LLVM_OBJ_OUT=$PWD/nyash_llvm_temp.o \
./target/release/nyash --backend llvm program.nyash
# Link and run
cc nyash_llvm_temp.o -L crates/nyrt/target/release -Wl,--whole-archive -lnyrt -Wl,--no-whole-archive -lpthread -ldl -lm -o myapp
./myapp
```
2025-08-29 23:11:21 +09:00
Quick smoke test (VM vs EXE):
```bash
tools/smoke_aot_vs_vm.sh examples/aot_min_string_len.nyash
```
2025-09-01 23:44:34 +09:00
### LLVM Backend Notes
- `NYASH_LLVM_OBJ_OUT` : Path to emit `.o` when running `--backend llvm` .
- Example: `NYASH_LLVM_OBJ_OUT=$PWD/nyash_llvm_temp.o ./target/release/nyash --backend llvm apps/ny-llvm-smoke/main.nyash`
2025-09-10 23:24:02 +09:00
- Previously available `NYASH_LLVM_ALLOW_BY_NAME=1` : Removed - all plugin calls now use method_id by default.
- The LLVM backend only supports method_id-based plugin calls for better performance and type safety.
2025-09-01 23:44:34 +09:00
2025-08-29 11:49:01 +09:00
### 5. **WebAssembly** (Browser)
```bash
2025-08-29 23:11:21 +09:00
cargo build --release --features wasm-backend
2025-08-29 11:49:01 +09:00
./target/release/nyash --compile-wasm program.nyash
2025-08-09 15:14:44 +09:00
```
2025-08-29 11:49:01 +09:00
- Run in browsers
- Cross-platform by default
- Web-first development
2025-08-09 15:14:44 +09:00
---
2025-09-06 16:53:12 +09:00
## 🧰 One‑ Command Build (MVP): `nyash --build`
Reads `nyash.toml` , builds plugins → core → emits AOT object → links an executable in one shot.
Basic (Cranelift AOT)
```bash
./target/release/nyash --build nyash.toml \
--app apps/egui-hello-plugin/main.nyash \
--out app_egui
```
Key options (minimal)
- `--build <path>` : path to nyash.toml
- `--app <file>` : entry `.nyash`
- `--out <name>` : output executable (default: `app` /`app.exe` )
- `--build-aot cranelift|llvm` (default: cranelift)
- `--profile release|debug` (default: release)
- `--target <triple>` (only when needed)
Notes
- LLVM AOT requires LLVM 18 (`LLVM_SYS_180_PREFIX` ).
- Apps that open a GUI may show a window during AOT emission; close it to continue.
- On WSL if the window doesn’ t show, see `docs/guides/cranelift_aot_egui_hello.md` (Wayland→X11).
2025-08-29 11:49:01 +09:00
## 📊 **Performance Benchmarks**
2025-08-09 15:14:44 +09:00
2025-08-29 11:49:01 +09:00
Real-world benchmark results (ny_bench.nyash):
```
Mode | Time | Relative Speed
---------------|-----------|---------------
Interpreter | 110.10ms | 1.0x (baseline)
VM | 8.14ms | 13.5x faster
2025-09-06 16:18:46 +09:00
Cranelift AOT | ~4– 6ms | ~20– 27x faster
Native (LLVM) | ~4ms | ~27x faster
2025-08-29 11:49:01 +09:00
```
2025-08-09 15:14:44 +09:00
---
2025-08-29 11:49:01 +09:00
## 🎮 **Language Features**
2025-08-09 15:14:44 +09:00
2025-08-29 11:49:01 +09:00
### Clean Syntax
2025-08-09 15:14:44 +09:00
```nyash
2025-08-29 11:49:01 +09:00
box GameCharacter {
2025-08-29 13:46:18 +09:00
private { name, health, skills }
2025-08-09 15:14:44 +09:00
2025-08-29 11:49:01 +09:00
// Birth constructor - giving life to Boxes!
birth(characterName) {
me.name = characterName
2025-08-09 15:14:44 +09:00
me.health = 100
2025-08-29 11:49:01 +09:00
me.skills = new ArrayBox()
print("🌟 " + characterName + " has been born!")
2025-08-09 15:14:44 +09:00
}
2025-08-29 11:49:01 +09:00
learnSkill(skill) {
me.skills.push(skill)
return me // Method chaining
2025-08-09 15:14:44 +09:00
}
}
2025-08-29 11:49:01 +09:00
// Usage
local hero = new GameCharacter("Neko")
hero.learnSkill("Fire Magic").learnSkill("Healing")
2025-08-09 15:14:44 +09:00
```
2025-08-29 11:49:01 +09:00
### Modern Async/Await
2025-08-09 15:14:44 +09:00
```nyash
2025-08-29 11:49:01 +09:00
// Concurrent operations made simple
nowait task1 = fetchDataFromAPI()
nowait task2 = processLocalFiles()
// Do other work while waiting
updateUI()
// Collect results
local apiData = await task1
local files = await task2
2025-08-09 15:14:44 +09:00
```
2025-08-29 11:49:01 +09:00
### Delegation Pattern
2025-08-09 15:14:44 +09:00
```nyash
2025-08-29 11:49:01 +09:00
// Composition over inheritance
box EnhancedArray from ArrayBox {
2025-08-29 13:46:18 +09:00
private { logger }
2025-08-09 15:14:44 +09:00
2025-08-29 11:49:01 +09:00
override push(item) {
me.logger.log("Adding: " + item)
from ArrayBox.push(item) // Delegate to parent
}
2025-08-09 15:14:44 +09:00
}
```
---
2025-09-19 08:34:29 +09:00
## 🌟 **Property System Revolution (September 18, 2025)**
### The 4-Category Property Breakthrough
**Just completed: Revolutionary unification of all property types into one elegant syntax!**
```nyash
box RevolutionaryBox {
// 🔵 stored: Traditional field storage
name: StringBox
// 🟢 computed: Calculated every access
size: IntegerBox { me.items.count() }
// 🟡 once: Lazy evaluation with caching
once cache: CacheBox { buildExpensiveCache() }
// 🔴 birth_once: Eager evaluation at object creation
birth_once config: ConfigBox { loadConfiguration() }
birth() {
me.name = "Example"
// birth_once properties already initialized!
}
}
```
### Python Integration Breakthrough
**The Property System enables revolutionary Python → Nyash transpilation:**
```python
# Python side
class DataProcessor:
@property
def computed_result(self):
return self.value * 2
@functools .cached_property
def expensive_data(self):
return heavy_computation()
```
```nyash
// Auto-generated Nyash (1:1 mapping!)
box DataProcessor {
computed_result: IntegerBox { me.value * 2 } // computed
once expensive_data: ResultBox { heavy_computation() } // once
}
```
**Result**: Python code runs 10-50x faster as native Nyash binaries!
### Documentation
- **[Property System Specification ](docs/proposals/unified-members.md )** - Complete syntax reference
- **[Python Integration Guide ](docs/development/roadmap/phases/phase-10.7/ )** - Python → Nyash transpilation
- **[Implementation Strategy ](docs/private/papers/paper-m-method-postfix-catch/implementation-strategy.md )** - Technical details
---
2025-09-02 11:18:19 +09:00
## 🔌 **Revolutionary Plugin System (TypeBox Architecture)**
2025-08-09 15:14:44 +09:00
2025-09-02 11:18:19 +09:00
### TypeBox: The Universal Plugin Bridge (September 2025)
**"Everything is Box" Philosophy - Even ABI is a Box!**
2025-08-09 15:14:44 +09:00
2025-09-02 09:26:09 +09:00
```c
2025-09-02 11:18:19 +09:00
// TypeBox - Type information as a Box (enables cross-plugin creation)
2025-09-02 09:26:09 +09:00
typedef struct {
uint32_t abi_tag; // 'TYBX'
const char* name; // "ArrayBox"
void* (*create)(void); // Box creation function
} NyrtTypeBox;
2025-09-02 11:18:19 +09:00
// NEW: Nyash ABI itself as a TypeBox! (C implementation, no Rust)
typedef struct {
uint32_t abi_tag; // 'NABI'
const char* name; // "NyashABIProvider"
void* (*create)(void); // ABI provider creation
// ... Nyash operations (call, retain, release)
} NyashABITypeBox;
2025-09-02 09:26:09 +09:00
```
2025-08-09 15:14:44 +09:00
2025-09-02 11:18:19 +09:00
**Revolutionary Achievement**: ABI implementation in pure C enables self-hosting!
2025-09-02 09:26:09 +09:00
### Plugin Configuration
```toml
# nyash.toml v3.0 - Unified plugin support
[plugins.map]
path = "plugins/map.so"
abi = "c" # Traditional C ABI
[plugins.advanced_map]
path = "plugins/adv_map.so"
abi = "nyash" # Type-safe Nyash ABI
[plugins.hybrid]
path = "plugins/hybrid.so"
abi = "unified" # Both ABIs supported!
2025-08-09 15:14:44 +09:00
```
2025-09-02 09:26:09 +09:00
**Key Innovation**: TypeBox enables cross-plugin Box creation without circular dependencies. MapBox can now return ArrayBox seamlessly!
📚 ** [Full TypeBox Documentation ](docs/development/roadmap/phases/phase-12/ )**
2025-08-09 16:19:22 +09:00
2025-08-29 11:49:01 +09:00
---
2025-08-09 15:14:44 +09:00
2025-08-29 11:49:01 +09:00
## 🛠️ **Getting Started**
2025-08-09 15:14:44 +09:00
2025-08-29 11:49:01 +09:00
### Quick Install (Linux/Mac/WSL)
```bash
# Clone and build
git clone https://github.com/moe-charm/nyash.git
cd nyash
cargo build --release --features cranelift-jit
# Run your first program
echo 'print("Hello Nyash!")' > hello.nyash
./target/release/nyash hello.nyash
2025-08-09 15:14:44 +09:00
```
2025-08-29 11:49:01 +09:00
### Windows
2025-08-09 16:19:22 +09:00
```bash
2025-08-29 11:49:01 +09:00
# Cross-compile for Windows
2025-08-09 16:19:22 +09:00
cargo install cargo-xwin
cargo xwin build --target x86_64-pc-windows-msvc --release
2025-08-29 11:49:01 +09:00
# Use target/x86_64-pc-windows-msvc/release/nyash.exe
2025-08-29 23:11:21 +09:00
# Native EXE (AOT) on Windows (requires Cranelift and MSYS2/WSL toolchain for linking)
cargo build --release --features cranelift-jit
powershell -ExecutionPolicy Bypass -File tools\build_aot.ps1 -Input examples\aot_min_string_len.nyash -Out app.exe
./app.exe
2025-08-09 16:19:22 +09:00
```
2025-08-09 15:14:44 +09:00
---
2025-08-29 11:49:01 +09:00
## 🌟 **Unique Innovations**
2025-08-09 15:14:44 +09:00
2025-08-29 11:49:01 +09:00
### 1. **AI-Driven Development**
- Developed with Claude, ChatGPT, and Codex collaboration
- 20-day journey from concept to native compilation
- Proves AI can accelerate language development by 30x
2025-08-09 15:14:44 +09:00
2025-08-29 11:49:01 +09:00
### 2. **Box-First Architecture**
- Every optimization preserves the Box abstraction
- Plugins are Boxes, JIT preserves Boxes, even native code respects Boxes
2025-09-02 09:26:09 +09:00
- TypeBox: Even type information is a Box!
2025-08-29 11:49:01 +09:00
- Unprecedented consistency across all execution modes
2025-08-09 15:14:44 +09:00
2025-08-29 11:49:01 +09:00
### 3. **Observable by Design**
- Built-in debugging and profiling
- JSON event streams for JIT compilation
- DOT graph visualization of optimizations
2025-08-09 15:14:44 +09:00
---
2025-08-29 11:49:01 +09:00
## 📚 **Examples**
2025-08-09 15:14:44 +09:00
2025-08-29 11:49:01 +09:00
### Python Integration
```nyash
// Use Python libraries from Nyash!
local py = new PyRuntimeBox()
local np = py.import("numpy")
local array = np.getattr("array").call([1, 2, 3])
print("NumPy array: " + array.str())
```
2025-08-09 15:14:44 +09:00
2025-08-29 11:49:01 +09:00
### Web Server
```nyash
local server = new HttpServerBox()
server.start(8080)
loop(true) {
local request = server.accept()
local response = new HttpResponseBox()
response.setStatus(200)
response.write("Hello from Nyash!")
request.respond(response)
}
```
### Game Development
```nyash
box GameObject {
2025-08-29 13:46:18 +09:00
public { x, y, sprite }
2025-08-29 11:49:01 +09:00
update(deltaTime) {
// Physics simulation
me.y = me.y + gravity * deltaTime
}
render(canvas) {
canvas.drawImage(me.sprite, me.x, me.y)
}
}
```
---
## 🤝 **Contributing**
Join the revolution! We welcome:
- 🐛 Bug reports and fixes
- ✨ New Box types via plugins
- 📚 Documentation improvements
- 🎮 Cool example programs
2025-08-09 15:14:44 +09:00
2025-09-01 23:44:34 +09:00
See also: Contributor guide in `AGENTS.md` (Repository Guidelines) for project layout, build/test commands, and PR expectations.
2025-08-29 11:49:01 +09:00
## 📄 **License**
2025-08-09 15:14:44 +09:00
2025-08-29 11:49:01 +09:00
MIT License - Use freely in your projects!
2025-08-09 15:14:44 +09:00
---
2025-08-29 11:49:01 +09:00
## 👨💻 **Creator**
2025-08-09 15:14:44 +09:00
2025-08-29 13:46:18 +09:00
**charmpic** - Hobby Language Developer
2025-08-29 11:49:01 +09:00
- 🐱 GitHub: [@moe-charm ](https://github.com/moe-charm )
- 🌟 Created with: Claude, ChatGPT, Codex collaboration
2025-08-09 15:14:44 +09:00
2025-08-29 11:49:01 +09:00
---
2025-08-09 15:14:44 +09:00
2025-08-29 11:49:01 +09:00
## 🎉 **Historical Timeline**
2025-08-09 15:14:44 +09:00
2025-08-29 11:49:01 +09:00
- **August 9, 2025**: First commit - "Hello Nyash!"
- **August 13**: JIT planning begins (day 4!)
- **August 20**: VM achieves 13.5x performance
2025-09-02 09:26:09 +09:00
- **August 29**: Native EXE compilation achieved!
2025-09-02 11:18:19 +09:00
- **September 1**: TypeBox ABI unification - C ABI + Nyash ABI seamless integration
- **September 2**: 🔥 Self-hosting path clear - Nyash ABI in C (no Rust dependency!)
2025-09-06 06:24:08 +09:00
- **September 4**: 🪟 Windows GUI displayed via JIT/native EXE (OS-native window)
2025-08-09 15:14:44 +09:00
2025-09-02 11:18:19 +09:00
*24 days from zero to self-hosting capability - a new record in language development!*
2025-08-09 15:14:44 +09:00
---
2025-08-29 11:49:01 +09:00
**🚀 Nyash - Where Everything is a Box, and Boxes Compile to Native Code!**
2025-08-09 15:14:44 +09:00
2025-08-29 23:11:21 +09:00
*Built with ❤️, 🤖 AI collaboration, and the belief that programming languages can be created at the speed of thought*