Wave
Wave는 시스템 소프트웨어 엔지니어 LunaStev가 개발한 범용 프로그래밍 언어이다. Wave는 저수준 언어의 성능과 고수준 언어의 추상화를 동시에 추구하며, “Reimagining Low-Level Programming”(저수준 프로그래밍의 재정의)을 철학으로 한다. Rust와 C 계열의 언어 디자인 철학을 계승하면서도, 새로운 문법 구조와 통합 생태계를 통해 다양한 영역(시스템, 네트워크, 웹, AI 등)에서 단일 언어로 개발이 가능하도록 설계되었다.
| Wave | |
|---|---|
| 개발자 | LunaStev |
| 최초 출시 | 2025년 1월 14일 |
| 최신 버전 | v0.1.5-pre-beta |
| 파일 확장자 | .wave |
| 라이선스 | MPL-2.0 |
| 저장소 | GitHub |
| 웹사이트 | 공식 사이트 |
Wave는 컴파일 언어이며, 기본적으로 LLVM 백엔드를 기반으로 하지만, 장기적으로는 독자적인 툴체인인 Whale을 중심으로 완전한 독립 생태계를 구축할 계획이다. [1] 또한 패키지 매니저 Vex, 직렬화 포맷 WSON, 표준 라이브러리 집합 등 언어 자체의 통합 환경을 제공한다.
역사
- 2024년 5월: Wave 개발 착수
- 2024년 12월: LLVM 기반 초기 컴파일러 프로토타입 완성
- 2025년 1월 14일: Wave 공식 릴리스(버전 0.0.1-pre-alpha)
- 2025년 8월 1일: v0.1.4-pre-beta 출시
설계 철학
Wave의 핵심 철학은 “명시적, 예측 가능, 통합적”이다. 이는 단순히 문법적 간결함이 아닌, 시스템 수준까지 일관된 동작을 추구하는 디자인으로 이어진다.
- 명시적 타입 지정 — 모든 변수는 타입을 반드시 선언해야 하며, 타입 추론은 지원하지 않는다.
- FFI 최소화 — Wave는 외부 언어에 의존하지 않고, 공식적으로 자체 표준 라이브러리로 완결된 생태계를 구축한다.
- 낮은 복잡도 — Rust와 유사한 안전성을 유지하면서, 불필요한 추상화나 복잡한 매크로 시스템을 제거한다.
- C 스타일 문법 — C 언어의 친숙한 구조를 유지하되, 현대적 오류 처리와 체인 API를 제공한다.
- 성능 중심 — 가비지 컬렉션을 도입하지 않으며, 필요 시 직접 메모리 제어 가능.
언어 구조
기본 문법
Wave의 기본 문법은 C/Rust 계열 구조를 기반으로 하며, 함수 중심의 실행 구조를 가진다.
모든 프로그램은 반드시 main() 함수를 포함해야 하며, Wave는 해당 함수를 자동으로 탐색하여 실행한다.
fun main() {
var name: str = "Wave";
let version: f32 = 0.1;
println("Language: {}, Version: {}", name, version);
}
변수 선언
var: 가변 변수 선언let: 불변 변수 선언- 타입은 반드시 명시해야 하며, 다음과 같은 예를 가질 수 있다.
var count: i32 = 10;
let message: str = "Hello Wave";
제어문
Wave는 if, else if, else, while, break, continue, return 등의 제어문을 지원한다.
fun main() {
var i: i32 = 0;
while (i < 5) {
if (i == 3) {
println("Reached 3, breaking.");
break;
}
println("i = {}", i);
i = i + 1;
}
}
함수
Wave는 강타입 기반의 함수 선언을 지원하며, 반환 타입은 반드시 명시해야 한다.
fun add(a: i32, b: i32) -> i32 {
return a + b;
}
fun main() {
let result: i32 = add(5, 3);
println("Result: {}", result);
}
표준 라이브러리
Wave는 표준 라이브러리와 핵심 모듈을 내장하고 있으며, 각 모듈은 특정 영역을 담당한다.
| 라이브러리 | 설명 |
|---|---|
| sys | 시스템 호출, 프로세스, 메모리 관리 |
| file | 파일 입출력, 경로, 권한 처리 |
| network | TCP, UDP, HTTP 통신 |
| http | HTTP 요청/응답, 인증, 쿠키 관리 |
| hardware | 하드웨어 제어, 장치 인터페이스 |
| iosys | 콘솔 입출력, 터미널 관리 |
| wson | Wave의 직렬화 포맷 (WSON) 처리 |
| quantum | 양자 연산 및 시뮬레이션용 인터페이스 |
Whale 툴체인
Whale은 Wave의 공식 컴파일러 툴체인으로, LLVM을 완전히 대체하기 위해 설계되었다. 모듈형 구조를 기반으로 하며, 아키텍처별 백엔드를 독립적으로 관리할 수 있다.
- 모듈형 설계 — 아키텍처(x86, ARM 등)별 모듈을 폴더 단위로 분리
- WSON 기반 구성 파일 — 모든 설정은
.ws형식으로 관리 - WAIL (WAIL Assembly Integration Layer) — Whale 전용 IR (Intermediate Representation) 포맷
Vex 패키지 매니저
Vex는 Wave 전용 패키지 매니저로, 빌드 및 배포 시스템을 통합한다. 명령어 구조는 단순하며, OS별 빌드를 지원한다.
vex build --linux
vex build --windows
vex build --macos
WSON
WSON(Wave Serialized Object Notation)은 Wave의 공식 데이터 직렬화 포맷이다. JSON, YAML, TOML보다 빠르고 간결한 문법을 지향하며 `.ws` 확장자를 사용한다.
{
name = "Wave",
version = 0.1.4,
author = "LunaStev"
}
활용
Wave는 범용 언어로서 다양한 분야에 적용될 수 있다:
- 시스템 프로그래밍 (운영체제, 드라이버, 커널)
- 웹 백엔드 서버 및 API
- AI 및 데이터 분석 프레임워크
- 블록체인 노드 및 스마트 컨트랙트
- 게임 엔진 및 그래픽 모듈
- 양자 컴퓨팅 및 과학 시뮬레이션
영향과 비교
Wave는 C (프로그래밍 언어), Rust, Python, Go의 영향을 받았으며, 다음과 같은 철학적 비교가 가능하다.
| 언어 | 철학적 방향 | 메모리 모델 | 안전성 |
|---|---|---|---|
| C | 저수준, 수동 제어 | 포인터 기반 | 낮음 |
| Rust | 안전한 시스템 프로그래밍 | 소유권 모델 | 매우 높음 |
| Wave | 단일 언어 통합 생태계 | 명시적 타입 제어 | 높음 |