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 에셋으로도 공개됨.
사전 요구 사항
- 리터러시 도구
weft2.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와 공동 작성함.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요