Wave
| Wave | |
|---|---|
| 개발자 | LunaStev |
| 최초 출시 | 2025년 1월 14일 |
| 최신 버전 | v0.1.5-pre-beta |
| 파일 확장자 | .wave |
| 라이선스 | MPL-2.0 |
| 저장소 | GitHub |
| 웹사이트 | 공식 사이트 |
Wave는 시스템 소프트웨어 엔지니어 LunaStev가 개발한 범용 프로그래밍 언어이다. Wave는 저수준 언어의 성능과 고수준 언어의 추상화를 동시에 추구하며, “Reimagining Low-Level Programming”(저수준 프로그래밍의 재정의)을 철학으로 한다. Rust와 C 계열의 언어 디자인 철학을 계승하면서도, 새로운 문법 구조와 통합 생태계를 통해 다양한 영역(시스템, 네트워크, 웹, AI 등)에서 단일 언어로 개발이 가능하도록 설계되었다.
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 | 단일 언어 통합 생태계 | 명시적 타입 제어 | 높음 |