로드맵

Vais (Vibe AI Language for Systems) - AI-Optimized Programming Language

프로젝트 로드맵

현재 버전: 0.1.0 (Phase 139 완료, 코드베이스 감사 기반 개선) 목표: AI 코드 생성에 최적화된 토큰 효율적 시스템 프로그래밍 언어 최종 업데이트: 2026-03-10 (Phase 139 완료)


📋 프로젝트 개요

핵심 특징

  • 단일 문자 키워드: F (function), S (struct), E (enum), I (if), L (loop), M (match)
  • 자재귀 연산자 @: 현재 함수 재귀 호출
  • 표현식 지향: 모든 것이 표현식
  • LLVM 백엔드: 네이티브 성능
  • 타입 추론: 최소한의 타입 어노테이션

기술 스택

  • 언어: Rust
  • 파서: Recursive Descent (logos 기반 Lexer)
  • 백엔드: LLVM IR (clang 컴파일)
  • 테스트: cargo test

📦 프로젝트 구조

crates/
├── vais-ast/          # 추상 구문 트리 ✅
├── vais-lexer/        # 토크나이저 (logos) ✅
├── vais-parser/       # Recursive descent 파서 ✅
├── vais-types/        # 타입 체커 ✅
├── vais-codegen/      # LLVM IR 생성기 ✅
├── vais-codegen-js/   # JavaScript (ESM) 코드 생성기 ✅
├── vais-mir/          # Middle IR ✅
├── vais-lsp/          # Language Server ✅
├── vais-dap/          # Debug Adapter Protocol ✅
├── vais-i18n/         # 다국어 에러 메시지 ✅
├── vais-plugin/       # 플러그인 시스템 ✅
├── vais-macro/        # 선언적 매크로 시스템 ✅
├── vais-jit/          # Cranelift JIT 컴파일러 ✅
├── vais-gc/           # 세대별 가비지 컬렉터 ✅
├── vais-gpu/          # GPU 코드젠 (CUDA/Metal/OpenCL/WebGPU) ✅
├── vais-hotreload/    # 핫 리로딩 ✅
├── vais-dynload/      # 동적 모듈 로딩 & WASM 샌드박스 ✅
├── vais-bindgen/      # FFI 바인딩 생성기 ✅
├── vais-query/        # Salsa-style 쿼리 데이터베이스 ✅
├── vais-profiler/     # 컴파일러 프로파일러 ✅
├── vais-security/     # 보안 분석 & 감사 ✅
├── vais-supply-chain/ # SBOM & 의존성 감사 ✅
├── vais-testgen/      # 속성 기반 테스트 생성 ✅
├── vais-tutorial/     # 인터랙티브 튜토리얼 ✅
├── vais-registry-server/    # 패키지 레지스트리 (Axum/SQLite) ✅
├── vais-playground-server/  # 웹 플레이그라운드 백엔드 ✅
├── vais-python/       # Python 바인딩 (PyO3) ✅
├── vais-node/         # Node.js 바인딩 (NAPI) ✅
└── vaisc/             # CLI 컴파일러 & REPL ✅

std/               # 표준 라이브러리 (.vais + C 런타임) ✅
examples/          # 예제 코드 (208 파일) ✅
selfhost/          # Self-hosting 컴파일러 ✅
benches/           # 벤치마크 스위트 (criterion) ✅
playground/        # 웹 플레이그라운드 프론트엔드 ✅
docs-site/         # mdBook 문서 사이트 ✅
vscode-vais/       # VSCode Extension ✅
intellij-vais/     # IntelliJ Plugin ✅
community/         # 브랜드/홍보/커뮤니티 자료 ✅

📊 프로젝트 현황

핵심 수치

지표
전체 테스트10,400+ (E2E 2,345+, 단위 8,400+)
표준 라이브러리74개 .vais + 19개 C 런타임
셀프호스트 코드50,000+ LOC (컴파일러 + MIR + LSP + Formatter + Doc + Stdlib)
컴파일 성능50K lines → 58.8ms (850K lines/s)
토큰 절감시스템 코드에서 Rust 대비 57%, C 대비 60% 절감
컴파일 속도 비교C 대비 8.5x, Go 대비 8x, Rust 대비 19x faster (단일 파일 IR 생성)
실전 프로젝트3개 (CLI, HTTP API, 데이터 파이프라인)

코드 건강도 (2026-03-10 감사)

지표상태
TODO/FIXME0개
Clippy 경고0건
프로덕션 panic/expect0개
에러 처리Result 패턴 일관, bare unwrap 없음
대형 파일 (>1000줄)13개 (R14에서 comptime/concurrent 분할)
unsafe SAFETY 주석44/44 문서화 (100%)
의존성 버전전부 최신 안정 버전
보안 (입력 검증/인젝션/시크릿)이슈 없음
pre-existing 테스트 실패0건 (Phase 139에서 해결)

릴리즈 상태: v0.1.0 (프리릴리스)

버전 정책: 현재는 0.x.x 프리릴리스 단계입니다. 언어 문법이 완전히 확정되어 더 이상 수정이 필요 없을 때 v1.0.0 정식 릴리스를 배포합니다.

항목상태
빌드 안정성 / Clippy 0건
테스트 전체 통과 (9,500+)
E2E 2,036개 통과 (0 fail, 0 ignored)
보안 감사 (cargo audit 통과)
배포 (Homebrew, cargo install, Docker, GitHub Releases)
문서 (mdBook, API 문서 65개 모듈)
CI/CD (3-OS 매트릭스, 코드 커버리지)
패키지 레지스트리 (10개 패키지)
셀프호스팅 (부트스트랩 + MIR + LSP + Formatter)

🔒 언어 문법 스펙 기준선 (Phase 39 기준 — 동결)

원칙: 아래 문법이 현재 구현된 Vais 언어의 전체 범위입니다. 이후 Phase에서는 기존 문법의 완성도를 높이는 것에 집중하며, 새로운 키워드/문법을 추가하지 않습니다. 문법 변경이 필요한 경우 별도 RFC로 진행합니다.

키워드 (확정)

분류키워드
단일 문자F(함수) S(구조체) E(열거형/else) I(if) L(루프) M(매치) R(리턴) B(break) C(continue/const) T(타입별칭) U(import) P(pub) W(trait) X(impl) D(defer) O(union) N(extern) G(global) A(async) Y(await)
다중 문자mut self Self true false spawn await yield where dyn macro as const comptime lazy force linear affine move consume pure effect io unsafe weak clone

연산자 (확정)

분류연산자
산술+ - * / %
비교< <= > >= == !=
비트& | ^ ~ << >>
논리&& || !
대입= := += -= *= /=
특수|> (파이프) ? (삼항/try) ! (unwrap) @ (자재귀) $ (매크로) .. ..= ... (범위/가변인자) -> => (화살표)

선언 (확정)

구문상태비고
F name(params) -> T { body }✅ 완전제네릭, where, async, default param
S Name { fields }✅ 완전제네릭, 메서드, where
E Name { Variants }✅ 완전유닛/튜플/구조체 variant
W Name { methods }✅ 완전super traits, GAT, where
X Type: Trait { }✅ 완전associated types
T Name = Type✅ 완전타입 별칭 + trait 별칭
O Name { fields }✅ 완전C-style 비태그 union
N "C" { F ... }✅ 완전extern, WASM import
C NAME: T = expr✅ 완전상수
G name := expr✅ 완전전역 변수
macro name! { }✅ 완전선언적 매크로

타입 시스템 (확정)

타입상태
i8~i128, u8~u128, f32, f64, bool, str✅ 완전
Vec<T>, HashMap<K,V>, Option<T>, Result<T,E>✅ 완전
[T], [T; N], &[T], &mut [T]✅ 완전
(T1, T2), fn(A)->B, *T, &T, &mut T✅ 완전
'a, &'a T (라이프타임)✅ 완전
dyn Trait, X Trait (impl Trait)✅ 완전
linear T, affine T✅ 완전
Dependent types {x: T | pred}✅ 완전 (컴파일타임+런타임 검증)
SIMD Vec4f32✅ 완전

패턴 매칭 (확정)

_, 리터럴, 변수, 튜플, 구조체, enum variant, 범위, or(\|), guard(I cond), alias(x @ pat)

어트리뷰트 (확정)

#[cfg(...)], #[wasm_import(...)], #[wasm_export(...)], #[requires(...)], #[ensures(...)], #[invariant(...)]


📜 Phase 히스토리

상세 체크리스트는 git log를 참조하세요. Phase 번호는 누적 연번입니다.

Phase 1~7: 기반 구축 (E2E — → 392)

핵심 컴파일러 파이프라인 (Lexer/Parser/TC/Codegen), Generics, Traits, Closures, Async/Await, Stdlib, LSP/REPL/Debugger 구현. inkwell/JIT/WASM/Python/Node 백엔드 확장. Effect/Dependent/Linear Types, MIR, Query-based 아키텍처. 부트스트랩 달성 (SHA256 일치). CI/CD, i18n, Homebrew/Docker 배포.

Phase 8~21: 확장 · 안정화 (E2E 392 → 637)

#이름주요 성과E2E
8언어 진화 · Stdlib에러복구, Incremental TC, cfg 조건부 컴파일, 패키지매니저392
9~10WASM · JS Codegen · 타입 추론wasm32 codegen, WASI, codegen-js (ESM), InferFailed E032467
11~12CI · Lifetime · 성능Windows CI, CFG/NLL, 병렬 TC/CG (4.14x), Slice fat pointer498
13~14에코시스템 · 토큰 최적화9개 패키지, AES-256, JIT Result, 토큰 -31%, auto-return520
15~16언어 확장 · 타입 건전성where/pattern alias/trait alias/impl Trait/HKT/GAT, Incremental, Tarjan SCC589
17~19Codegen · Selfhost · 보안Range struct, i64 fallback 제거, lazy/spawn, 보안 20건 수정, Docs 다국어655
20~21정리 · 복구Codegen 버그 수정 +44 E2E, ROADMAP 통합, 중복 제거637

Phase 22~52: Codegen 완성 · 품질 강화 (E2E 637 → 900)

#이름주요 성과E2E
22~24모듈 분할 R6 · 성능formatter/expr/function_gen 분할, Vec::with_capacity, codegen -8.3%647
25~27Codegen · 타입 건전성indirect call, i64 fallback→InternalError, TC pre-codegen 검증713
28~31코드 정리 · Selfhost · 모듈 분할 R7dead_code 정리, monomorphization 3-pass, tiered/item/doc_gen 분할723
32~36E2E 확장 · assert_compiles 전환136개 assert_compiles→assert_exit_code, type alias 버그 수정, 모듈 분할 R8755
37~40E2E 800+ · Codegen 강화Spawn/Lazy 수정, Generic/Slice/Bool/Where, AST 15서브모듈, 모듈 분할 R9811
41~44건전성 · Pre-existing 전수 수정135건 이슈 수정, pre-existing 14→0, var_resolved_types 도입862
45~47테스트 정리 · 900 달성40개 중복 제거, 모듈 분할 R10, +78 E2E900
48~51Codegen 완성Spawn/Async 상태 머신, assert_compiles 7→4, E2E 900 전체 통과(0 fail)900
52ROADMAP 정리완료 체크리스트 삭제, 638→~240줄 (-62%)900

Phase 53~76: 성숙 · 릴리스 (E2E 900 → 967)

#이름주요 성과E2E
53~54외부 정합성 · CIVSCode/IntelliJ 문법, Docs 4개 신규, codecov 60%900
55~62코드 커버리지+2,948 단위 테스트, llvm-cov 전환, 68.7% 달성900
63~64버전 리셋 · EBNF 스펙0.0.5 프리릴리스, vais.ebnf 154 rules, grammar_coverage 275개900
65~66Pre-existing 검증 · Unify 완성전수 수정 확인, unify 6 variant + apply_substitutions 13 compound900
67~70Codegen 확장 · 안전성Monomorphization 전이, Map literal, compound assign, panic 0개919
71~73Object Safety · ABI · 릴리스v0.0.5, E034 중복함수 검출, assert_compiles 0개931
74~76Stdlib · 온보딩 · 파일럿TOML/YAML 파서, 학습 경로 3단계, 실전 프로젝트 2개, v0.1.0 릴리스967

Phase 77~98: 프로덕션 품질 (E2E 967 → 1,620)

#이름주요 성과E2E
77~78Codecov · str fat pointer+515 tests, str {i8*,i64} 전환, C ABI 자동 변환1,040
79~81에러 위치 · 직렬화 · E2E 확장SpannedCodegenError, MessagePack/Protobuf, E2E 1,1501,150
82~83성능 · Stdlib50K 61.6ms (-4.6%), regex/http_client/sqlite 확충1,185
R1릴리즈 복구publish.yml 수정, 56→90/1001,185
84~86Selfhost · WASM · IDEMIR Lowering, WASI P2/Component Model, LSP/DAP/IntelliJ +590 tests1,250
87~89문서 · 위생 · 기술부채API Ref +16모듈, gitignore, Dependent Types 검증, Unicode, Codecov +2031,291
90~91최적화 · E2E 1,500GVN-CSE/DCE/Loop Unswitch, +218 E2E, MIR 4패스, Method mono, Lifetime 실장1,540
92~94안정성 · 성능 · 생태계Panic-free 180+ expect→Result, proptest, 2-level 캐시, Ed25519, vaisc fix, lint 7종1,540
95~96검증 · 기술부채IR 검증 게이트 7경로, +80 E2E, toml 1.0/Cranelift 0.129, LSP 모듈화1,620
97~98CI 복구cargo fmt 65파일, MIR +58/JS +39 tests, Security Audit SHA, clang-17 명시1,620
99~103안정성 · 정리expect→Result 61개, 모듈 분할 R11, 테스트 커버리지, Inkwell ABI 수정1,620
104~108감사 · 분할 R12 · 0 ignoredexpect/panic 전수 감사(프로덕션 0건), 9파일 모듈 분할, E2E 0 ignored1,620
109~113v1.0 블로커 해결Slice bounds check, scope-based auto free, 에러 테스트 +31, ownership 강화 44 tests1,667
114~117완성도 · 검증Monomorphization 경고, WASM E2E 44개, 벤치마크 갱신 61.0ms, Codecov 80%+1,723
118~122성능 · 타입 · 에코 · 문서 · 커버리지clone 축소, Text IR 일관성, ConstGeneric mono, tutorial 24 lessons, examples 188, Codecov 85%1,745
99~125안정성 · 완성도 · 타입 정확성expect/panic 0건, 모듈 분할 R11-R12, bounds check, auto free, Codecov 85%, strict_type_mode, unit_value() 중앙화1,789
126~128커버리지 · 타입 강화 · E2E 2K+309 단위 테스트, strict_type_mode 기본화, +235 E2E2,036
129~130성능 최적화 · 모듈 분할 R13Lexer -29.8%, write_ir! 619건, Parser -9.9%, 대형 파일 3개 분할2,036
131~133커버리지 · ICE 정리 · unsafe 감사+150 단위 테스트, eprintln→Error 8건, SAFETY 주석 29건2,052
134~136E2E 2,345 · 성능 R2 · Stdlib 강화+262 E2E, Result 표준화, Vec/String/HashMap 메서드 확충2,345
137~139감사 기반 개선SAFETY 주석 44건, 모듈 분할 R14 (comptime/concurrent), async recursive ICE 수정2,345
140코드 커버리지 강화6개 crate 단위/통합 테스트 추가, 전체 11,357 tests, 0 fail2,345

📋 예정 작업

모드: 자동진행

Phase 137: unsafe SAFETY 주석 완전 문서화 — 44건 미문서화 블록 해소

목표: 44개 unsafe 블록에 SAFETY 주석 추가 (codegen GEP 28건, FFI 10건, GC 4건, JIT 1건, 기타 1건) 기대 효과: 감사 추적성 100%, 코드 리뷰 품질 향상

    1. unsafe SAFETY 주석 — codegen GEP 28건 문서화 (Sonnet) ✅ 2026-03-10 변경: simd.rs(21), gen_aggregate.rs(7), gen_advanced.rs(1), binary.rs(1) — 전수 SAFETY 문서화
    1. unsafe SAFETY 주석 — FFI/GC/JIT 16건 문서화 (Sonnet) ✅ 2026-03-10 변경: loader.rs(6), module_loader.rs(2), gc.rs(2), concurrent.rs(1), generational.rs(1), compiler.rs(1), dylib_loader.rs(1) 진행률: 2/2 (100%)

Phase 138: 대형 파일 분할 R14 — comptime.rs & concurrent.rs 모듈화

목표: 1,100줄+ 대형 파일 2개를 서브모듈로 분할 (15→13개) 기대 효과: 모듈 응집력 향상, 테스트 격리 용이

    1. comptime.rs 모듈 분할 (1,142줄 → mod/evaluator/operators/builtins/tests) (Sonnet) ✅ 2026-03-10
    1. concurrent.rs 모듈 분할 (1,136줄 → mod/mark/sweep/barrier/worker/tests) (Sonnet) ✅ 2026-03-10 진행률: 2/2 (100%)

Phase 139: Pre-existing 테스트 실패 해결 — async recursive ICE 수정

목표: async recursive await on non-Future ICE (phase32_async::e2e_phase32_async_recursive) 근본 수정 기대 효과: E2E 0 fail 달성, async codegen 완성도 향상

    1. async recursive ICE 수정 — __poll 접미사 제거로 @ 자재귀 해결 (Opus) ✅ 2026-03-10 변경: type_inference.rs, expr_visitor.rs — __poll suffix stripping으로 async 내 @ 호출 정상 해결
    1. 검증: E2E 2,345 pass / 0 fail / 0 regression, Clippy 0건 (Opus) ✅ 2026-03-10 진행률: 2/2 (100%)

Phase 140: 코드 커버리지 강화 — 68% → 80%+ 목표

목표: 커버리지 낮은 6개 crate에 단위/통합 테스트 추가, 전체 커버리지 80%+ 달성 기대 효과: Codecov 12%+ 상승, 프로덕션 품질 기준 충족

모드: 자동진행

    1. vais-codegen advanced_opt/ 단위 테스트 추가 (Opus 직접) ✅ 2026-03-11 변경: crates/vais-codegen/tests/advanced_opt_tests.rs (dead_code/inline/const_fold/loop_unroll 등 27 테스트)
    1. vais-lsp 핸들러 단위 테스트 추가 (Opus 직접) ✅ 2026-03-11 변경: crates/vais-lsp/tests/handler_tests.rs (completion/symbols/goto_def/references/formatting 등 27 테스트)
    1. vais-registry-server API 테스트 추가 (Opus 직접) ✅ 2026-03-11 변경: crates/vais-registry-server/tests/api_coverage_tests.rs (unyank/categories/owners/web/auth 등 27 테스트)
    1. vais-dynload WASM 샌드박스 테스트 추가 (Opus 직접) ✅ 2026-03-11 변경: crates/vais-dynload/src/wasm_sandbox.rs (sandbox config/capabilities/wasm instance 등 테스트 추가)
    1. vais-macro 단위 테스트 추가 (Opus 직접) ✅ 2026-03-11 변경: crates/vais-macro/tests/coverage_tests.rs (macro expander/hygiene/declarative macro 테스트 추가)
    1. vais-gpu 백엔드별 테스트 추가 (Opus 직접) ✅ 2026-03-11 변경: crates/vais-gpu/tests/gpu_tests.rs (CUDA/Metal/OpenCL/WebGPU/SIMD 백엔드별 29 테스트)
    1. 검증: cargo test 전체 통과 + 커버리지 측정 (Opus 직접) ✅ 2026-03-11 변경: 전체 11,357 passed / 0 failed / 131 ignored, Clippy 0건 진행률: 7/7 (100%)

⏳ 장기 관찰 항목

항목출처상태비고
대형 프로젝트 6개월 모니터링Phase 22프로토타입 검증 완료, 장기 안정성 관찰 중
Instagram 프로필 완성Phase 26a수작업 필요 (계정/템플릿 준비 완료)

메인테이너: Steve