피드로 돌아가기
Fitz CLI builder: como typer, pero en el lenguaje
Dev.toDev.to
DevOps

컴파일러 레벨 CLI 통합으로 5MB Native Binary 구현

Fitz CLI builder: como typer, pero en el lenguaje

Martin Palopoli2026년 6월 13일10intermediate

Context

기존 CLI 개발은 Typer, Clap 등 외부 라이브러리에 의존하여 언어와 도구 간의 컨벤션 파편화 발생. 라이브러리 종속성으로 인해 배포 시 별도 Packager가 필요하며 Runtime 오버헤드와 타입 안전성 결여 문제가 상존함.

Technical Solution

  • 컴파일러 내장 CLI Builder 설계를 통한 외부 라이브러리 의존성 완전 제거
  • 함수 Signature 기반의 자동 Command 매핑 구조를 채택하여 별도 데코레이터 없는 인터페이스 정의
  • Default Value 존재 여부에 따른 Positional Argument와 Flag의 자동 구분 로직 구현
  • Build-time Dispatch 생성을 통한 Runtime Lookup 테이블 제거 및 실행 성능 최적화
  • Async 함수 감지를 통한 #[tokio::main] 자동 래핑으로 비동기 CLI 명령 처리 지원
  • Short Flag 충돌 여부를 컴파일 단계에서 검증하는 정적 분석 체계 도입

Impact

  • 별도 패키저 없는 5.2MB 규모의 정적 링크 Native Binary 생성

Key Takeaway

프레임워크 수준의 추상화보다 언어/컴파일러 수준의 통합이 개발자 경험(DX)과 배포 효율성을 극대화함.


1. CLI 도구 설계 시 라이브러리 컨벤션이 비즈니스 로직의 시그니처를 오염시키지 않는지 검토

2. Runtime 에러를 방지하기 위해 Flag 충돌 등의 설정을 Build-time에 검증하는 구조 고려

3. 배포 아티팩트 최소화를 위해 Static Linking 기반의 Native Binary 전략 검토

원문 읽기