Skip to main content

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 코드 전면 제거

주요 특징

  • Wave로 Wave 컴파일러를 재작성 시작

  • Whale 기반으로 Wave 코드 자체 실행

  • Whale은 self-hosting 단계 진입

작업 범위

  • Whale 기반으로 Wave IR 생성기 재작성

  • Rust 제거 + Wave 코드로 대체

  • std 및 core 라이브러리 Wave로 작성

  • 부트스트랩 성공 시 첫 Wave-native 컴파일러 탄생


Release 단계 (v0.0.1)

목표: 공식 출시 / 완전한 Whale 기반 독립 언어 생태계 제공

구성 요소

  • Wave (언어 및 표준 라이브러리)

  • Whale (컴파일러 툴체인)

  • Vex (패키지 매니저)

  • WSON (데이터 포맷)

특징

  • 완전한 Wave-only 컴파일러 (부트스트랩 성공)

  • Whale 최적화 완료

  • Vex 빌드 및 배포 시스템 정착

  • WSON 파서 + 직렬화 포함

  • 크로스 OS 빌드 가능 (vex build --windows 등)


개발 메타 전략

전략설명
열차+레일 전략Whale을 개발하면서 동시에 Wave 백엔드를 구성해 나가는 병행 진행
백엔드 분기 전략--backend 옵션으로 LLVM/Whale 선택, alpha에서 중요한 구조
구조 역전 계획rc 이후부터 Wave 코드가 Whale을 통해 Wave 자신을 컴파일