TL;DR

  • 월 100달러로 에이전트 없이 LLM과 단독 구축한 Kcc는 ARM64 어셈블리로 작성된 형식적 C17 컴파일러임.
  • 컴파일러는 C 코드를 표준에 따라 검사하고 최적화하며 레지스터를 할당해 네이티브 기계어를 출력하고, 자기 자신을 바이트 단위로 동일한 바이너리로 컴파일함.
  • x86-64 Linux 및 macOS로 크로스 컴파일하며 Lua, SQLite, DOOM을 빌드·실행하고 Linux 커널을 부팅함.
  • 약 1,000쪽 분량의 책이 컴파일러 전체이며, .weft 파일이 소스 코드와 빌드 관련 파일의 유일한 원본임.
  • weft로 소스와 Makefile을 생성한 뒤 빌드하며, 검증부터 문서 조판까지 여러 make 타깃으로 수행함.

Kcc — ARM64 어셈블리로 작성된 형식적 C17 컴파일러

  • Kcc는 전부 ARM64 어셈블리로 작성된 형식적 C17 컴파일러이며, 사람과 AI 협업자 모두가 작성하고 읽을 수 있도록 만든 메탈랭귀지 weft를 사용해 하나의 리터러시 프로그램으로 구성됨.
  • 각 명령어는 코드로 작성되기 전에 산문으로 설명됨.
  • C 코드를 표준에 따라 검사하고 최적화하며 레지스터를 할당해 네이티브 기계어를 출력함. 자기 자신을 바이트 단위로 동일한 바이너리로 컴파일하며, x86-64 Linux와 macOS용 크로스 컴파일도 수행함.
  • Lua, SQLite, DOOM을 빌드하고 실행하며 Linux 커널을 부팅함.
  • 약 1,000쪽 분량의 책 전체가 컴파일러이며, 저장소의 kcc.pdf에서 읽거나 Releases에서 내려받거나 직접 빌드할 수 있음.
  • 리터러시 기반 개발(Literate Driven Development)은 https://literatedriven.com에서 확인할 수 있음.

`.weft` 파일이 유일한 원본

  • 기계가 빌드하는 모든 파일, 즉 어셈블리 모듈, 검증 스크립트, Makefile까지 리터러시 소스를 탱글링해 생성함. 생성된 파일은 직접 편집하지 않고 책을 편집함.
  • 저장소 구성은 다음과 같음.
  • kcc.weft: LaTeX 프리앰블과 @i 포함 지시문이 있는 마스터 문서
  • literate/: 산문과 코드 조각으로 구성된 각 장
  • assets/: 표지용 아트워크(SVG에서 PDF 표지 생성)
  • kcc.pdf: 조판된 책으로 저장소에 포함되며 make pdf로 재생성 가능
  • README.md: 이 파일
  • LICENSE: MIT 라이선스
  • 조판된 책 kcc.pdf가 저장소에 포함되어 있어 현재 텍스트를 읽을 수 있는 사본을 항상 함께 제공함. make pdf로 다시 빌드할 수 있음.

빌드

  • Makefile 자체가 책에서 탱글링되므로, 최초 한 번은 Makefile을 먼저 생성한 뒤 사용해야 함.
  • weft -p gen/ --mkdirs kcc.weft로 소스와 스크립트, Makefile을 gen/ 및 저장소 루트의 Makefile로 탱글링함. -p gen/은 모든 탱글 출력 경로 앞에 gen/을 붙이고 --mkdirs는 필요한 디렉터리를 생성함.
  • make로 컴파일러 gen/kcc를 빌드함.
  • ./gen/kcc gen/hello.c -o gen/hello && ./gen/hello로 프로그램을 컴파일하고 실행함.
  • 생성된 트리는 루트의 Makefile을 제외하면 모두 gen/ 아래에 위치하며, make clean으로 제거한 뒤 위 명령으로 다시 생성 가능함.

주요 타깃

  • make / make build: gen/kcc를 어셈블하고 링크함.
  • make difftest: 코드 모음을 Kcc와 Clang으로 컴파일하고 결과를 비교함.
  • make diagtest / make warntest: 잘못된 프로그램을 거부하고 -Wall 경고를 검사함.
  • make test-codegen / make e2e / make interop: 생성된 프로그램을 실행함.
  • make selfhost-*: C 모듈을 Kcc로 다시 컴파일하고 재링크한 뒤 검증함.
  • make meta-c: Linux에서 전체 셀프호스팅 고정점 검증을 수행하며 Docker와 qemu가 필요함.
  • make ci: 전체 검증 스위트를 실행함.
  • make pdf: 책을 직조하고 kcc.pdf를 조판함.
  • 검증 스크립트는 자체 기준 디렉터리를 찾아 실행하므로 -p 접두사가 달라져도 작동함.

책

  • make pdf는 .weft 소스를 직조해 kcc.tex를 생성하고 LuaLaTeX로 kcc.pdf를 조판함.
  • rsvg-convert를 사용할 수 있으면 assets/*.svg에서 표지를 다시 생성함.
  • 생성된 kcc.pdf는 소스와 함께 저장소에 커밋되어 있어 저장소에서 바로 읽을 수 있으며, 태그가 지정된 버전은 GitLab의 Release 에셋으로도 공개됨.

사전 요구 사항

  • 리터러시 도구 weft 2.0.0 이상
  • C 툴체인의 as와 ld; macOS에서는 Xcode 명령줄 도구
  • 책 빌드에는 LuaLaTeX와 latexmk가 포함된 TeX 배포판이 필요하며, 전체 TeX Live 또는 경량 배포판인 TinyTeX 사용 가능. 표지 생성에는 rsvg-convert를 선택적으로 사용할 수 있음.
  • make meta-c와 커널 부팅 재현에는 Docker와 qemu-user가 필요함.

라이선스

  • MIT 라이선스이며 자세한 내용은 LICENSE에 있음.
  • 저작권 © 2026 Cuauhtémoc Pacheco이며 AI 협업자 Claude와 공동 작성함.