기존 C 생태계와 OS 경계를 전제로 설계합니다.
프로젝트 상태
지금의 Cale
Cale은 C를 버리는 프로젝트가 아닙니다. C ABI, 낮은 런타임 의존성, OS와 커널 친화성을 유지하면서 위험한 기본값을 컴파일러가 이해할 수 있는 의미론으로 끌어올리는 시스템 언어와 컴파일러 프로젝트입니다.
현재 C source를 SIR, FIR, BCIR, Sol 경로로 낮추는 실제 컴파일러 파이프라인이 있고, Lacail은 그 산출물을 읽는 독립 디버거로 분리되고 있습니다.
SIR/FIR/BCIR/Sol을 거치는 낮은 수준의 파이프라인을 키우고 있습니다.
Cale 내부 모듈이 아니라 artifact consumer 디버거로 발전합니다.
컴파일러 파이프라인
source 의미를 잃지 않고 낮은 단계로 내려갑니다
R3의 홈 구조는 Cale을 단순한 문서 목록이 아니라 실제 컴파일러 프로젝트로 읽히게 만드는 데 초점을 둡니다. 각 IR은 낮은 수준으로 내려가되, 나중에 디버거와 의미론 분석기가 다시 설명할 수 있는 흔적을 남기는 방향으로 정리합니다.
기존 C lane과 ABI를 받아들이는 출발점
source 구조를 보존하며 다음 단계로 전달
제어 흐름과 값 흐름을 더 명시적으로 정리
backend와 codegen에 가까운 중간 표현
낮은 수준의 실행 의미와 연결되는 단계
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 문서 보기- 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
Cale의 첫 설계 축은 C를 버리는 것이 아니라 기존 ABI와 OS 경계를 유지한 채 위험한 의미를 더 잘 설명하는 것입니다.
compiler SIR/FIR/BCIR/Sol 파이프라인 개요Cale compiler는 source 의미를 잃지 않으면서 낮은 실행 단계로 내려가기 위해 여러 IR 계층을 둡니다.
release GitHub Releases 기반 배포 계획Cale의 첫 배포 흐름은 source build를 유지하면서 macOS 우선 binary artifact를 GitHub Releases에 붙이는 방향입니다.