Wave

TechPedia

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 단일 언어 통합 생태계 명시적 타입 제어 높음

같이 보기

참고 문헌

각주