Wave + Whale 통합 개발 로드맵 v2
전체 단계
pre-alpha → pre-beta → alpha → beta → rc → release
Pre-Beta 단계
목표: Wave 언어의 프론트엔드 완성 + LLVM 백엔드를 이용한 전체 기능 구현
주요 특징
-
LLVM만 사용 (Whale 없음)
-
문법 추가는 없음, 기존 사양만 구현
-
에러 메시지, 타입 검사, 변수 스코프 등 프론트 중심 구조 안정화
구현 범위
-
변수 선언, 출력, 연산
-
함수 정의 및 호출
-
if / else if / else
-
while / break / continue
-
포맷 출력, 타입 지정
-
포인터 설계 (
ptr<T>
형태) -
배열 설계 (
array<T, N>
) -
타입 검사 및 구조적 AST
사용 기술
-
Rust (Wave 컴파일러 전부)
-
LLVM (IR 생성, AOT 실행)
-
inkwell / llvm-sys
Alpha 단계
목표: Wahle 도입 시작, LLVM과 병행 사용 / Whale 기반 백엔드 시작 구현
주요 특징
-
LLVM은 디폴트 백엔드
-
Whale은 선택적 백엔드
-
Wave 코드 실행 시
--backend
옵션으로 분기 가능
wavec run main.wave --backend=whale
wavec run main.wave --backend=llvm
Whale 관련 작업
-
Whale IR 구조 설계 및 정의 (Instruction, Value, Block 등)
-
Whale용 IR Generator 구현
-
Whale 코드 생성기 (어셈블리 or 바이너리)
-
Whale로만 가능한 타입 구현 (i1024, 고급 포인터 등)
체크포인트
-
Whale로 Hello World 출력
-
Whale에서 변수 선언/할당
-
Whale IR 디버깅 도구 구현
-
Whale에서 포인터 타입 처리
-
Wave → Whale IR 변환 진행
Beta 단계
목표: Whale로 완전 전환, LLVM 제거. Whale + Wave 조합 최적화
주요 특징
-
Whale만 사용
-
LLVM 전체 제거 (디펜던시 및 모듈)
-
코드 최적화 중심
-
IR → 실행까지 빠르고 효율적으로
최적화 범위
-
Whale IR 최적화 Pass 설계
-
Whale 코드 생성 속도 개선
-
Wave의 모든 문법이 Whale에서 완벽 지원
테스트
-
단위 테스트 + 전체 테스트 스위트
-
WSON, 표준 라이브러리 호환성 테스트
-
크로스 플랫폼 Whale 빌드 확인
RC (Release Candidate) 단계
목표: Wave 부트스트랩 시작 — Rust 코드 전면 제거