콘텐츠로 이동

Cale

C ABI와 함께 움직이는 시스템 언어/컴파일러입니다. C source를 받아들이는 lane에서 시작해, 의미를 보존하는 IR과 Lacail debugger로 낮은 수준의 코드를 더 잘 설명하는 쪽으로 자라고 있습니다.

프로젝트 상태

지금의 Cale

Cale은 C를 버리는 프로젝트가 아닙니다. C ABI, 낮은 런타임 의존성, OS와 커널 친화성을 유지하면서 위험한 기본값을 컴파일러가 이해할 수 있는 의미론으로 끌어올리는 시스템 언어와 컴파일러 프로젝트입니다.

현재 C source를 SIR, FIR, BCIR, Sol 경로로 낮추는 실제 컴파일러 파이프라인이 있고, Lacail은 그 산출물을 읽는 독립 디버거로 분리되고 있습니다.

C ABI 공존

기존 C 생태계와 OS 경계를 전제로 설계합니다.

Compiler 동작 중

SIR/FIR/BCIR/Sol을 거치는 낮은 수준의 파이프라인을 키우고 있습니다.

Lacail 독립화

Cale 내부 모듈이 아니라 artifact consumer 디버거로 발전합니다.

컴파일러 파이프라인

source 의미를 잃지 않고 낮은 단계로 내려갑니다

R3의 홈 구조는 Cale을 단순한 문서 목록이 아니라 실제 컴파일러 프로젝트로 읽히게 만드는 데 초점을 둡니다. 각 IR은 낮은 수준으로 내려가되, 나중에 디버거와 의미론 분석기가 다시 설명할 수 있는 흔적을 남기는 방향으로 정리합니다.

01 C source 입력

기존 C lane과 ABI를 받아들이는 출발점

02 SIR source IR

source 구조를 보존하며 다음 단계로 전달

03 FIR flow IR

제어 흐름과 값 흐름을 더 명시적으로 정리

04 BCIR backend IR

backend와 codegen에 가까운 중간 표현

05 Sol lowered IR

낮은 수준의 실행 의미와 연결되는 단계

Lacail 의미론 디버거

LLDB처럼 멈추고, Cale artifact가 있으면 더 깊게 설명합니다

Lacail은 Cale 내부 디버그 모듈이 아니라 독립 top-level 프로젝트입니다. 일반 executable, object file, DWARF, source map을 읽고, Cale bundle이 있으면 semantic trace와 UB fact를 source-level stop report에 연결하는 방향으로 성장합니다.

Lacail 문서 보기
lacail explain-pc semantic trace
stop
break main -> pc 0x100003f80
source
main.c:42:17 value = lhs + rhs
symbol
main + 0x34
ub fact
signed overflow candidate
trace
FIR %sum -> BCIR v17 -> Sol r0

Releases

바이너리 배포는 GitHub Releases 기반으로 준비합니다

지금 사이트는 Cale의 구조와 현재 상태를 정리하는 장소입니다. 실제 배포가 준비되면 macOS 우선으로 시작하고, Linux와 Windows는 compile 가능한 경계부터 넓혀갑니다.

릴리즈 계획 보기

Blog

Latest posts

View all