Metadata-Version: 2.4
Name: danha-lang
Version: 0.26.0
Summary: 단아(Danha) — 게임 개발 특화 프로그래밍 언어. Easy to Start, Hard to Master.
License: MIT
Project-URL: Homepage, https://github.com/danha-lang/danha
Project-URL: Issues, https://github.com/danha-lang/danha/issues
Keywords: programming-language,game-development,ecs,compiler,llvm
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Compilers
Classifier: Topic :: Software Development :: Interpreters
Classifier: Topic :: Games/Entertainment
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: compile
Requires-Dist: llvmlite>=0.43; extra == "compile"
Dynamic: license-file

# 단아 (Danha)

**게임 개발 특화 프로그래밍 언어 — Easy to Start, Hard to Master**

단아는 C++/C# 대안을 목표로 하는 네이티브 컴파일 언어입니다.
Jai, Odin, Zig처럼 데이터 지향적이면서 C#처럼 친숙한 문법을 가졌습니다.

## 특징

- **ECS 내장** — `component`, `system`, `for each` 문법으로 게임 로직 작성
- **네이티브 컴파일** — LLVM 백엔드, 인터프리터 대비 ~120배 빠름
- **벡터/행렬 일급 시민** — `vec2`, `vec3`, `vec4`, `mat4` 내장
- **parallel 키워드** — 한 줄로 멀티스레드 병렬 처리
- **아레나 메모리** — 기본은 자동, 고급 사용자는 수동 제어
- **안전한 설계** — `unsafe` 블록, `Result` + `?` 연산자, 소유권 분석

## 빠른 시작

```bash
pip install danha-lang
```

`hello.dh` 파일을 만들고:

```
name = "세계"
print("안녕 {name}!")
```

실행:

```bash
danha run hello.dh
```

## 명령어

```bash
danha run <파일.dh>        # 인터프리터로 실행
danha compile <파일.dh>    # 네이티브 컴파일 (LLVM)
danha repl                 # 대화형 모드
danha check <파일.dh>      # 구문 검사
danha version              # 버전 정보
```

네이티브 컴파일을 사용하려면:

```bash
pip install danha-lang[compile]
```

## 코드 예시

### 기본 문법

```
fn fibonacci(n: i32) -> i32 {
    if n <= 1 { return n }
    return fibonacci(n - 1) + fibonacci(n - 2)
}

for i in 0..10 {
    print("fib({i}) = {fibonacci(i)}")
}
```

### ECS 게임 로직

```
component Position { x: f64, y: f64 }
component Velocity { dx: f64, dy: f64 }

system move_entities(dt: f64) {
    for each (p: Position, v: Velocity) {
        p.x += v.dx * dt
        p.y += v.dy * dt
    }
}

parallel system update_physics(dt: f64) {
    for each (p: Position, v: Velocity) {
        p.x += v.dx * dt
        p.y += v.dy * dt
    }
}
```

### 에러 처리

```
enum Result {
    Ok(i32)
    Err(str)
}

fn safe_divide(a: i32, b: i32) -> Result {
    if b == 0 { return Result.Err("0으로 나눌 수 없어") }
    return Result.Ok(a / b)
}

fn compute() -> Result {
    val = safe_divide(100, 5)?
    return Result.Ok(val * 2)
}
```

## 현재 상태

알파 단계입니다. 26단계까지 구현 완료. 테스트 679개(인터프리터) + 409개(컴파일러) 통과.

## 라이센스

MIT
