피드로 돌아가기
Dev.toFrontend
원문 읽기
Cx 프로젝트가 Backend trait를 AST에서 IR로 전환하고 순환 참조 감지 기능이 포함된 301줄 모듈 resolver를 도입했다
Cx Dev Log — 2026-03-25
AI 요약
Context
기존 Backend trait는 AST 기반 Program 타입을 입력으로 사용했다. 이 구조는 IR 파이프라인 디버깅 도구 부재와 다중 파일 프로그램의 의존성 처리 한계를 가졌다.
Technical Solution
- Backend trait → &Program(AST)에서 &IrModule(IR)으로 입력 타입 변경
- Cranelift backend와 LLVM backend를 IR 기반 인터페이스로 업데이트
- IR 파이프라인에 자동 IR module dump와 --backend=validate 모드 추가
- --debug-trace 플래그로 각 IR instruction emission 추적 기능 제공
- resolver.rs(301줄)에서 ModuleId, ImportEdge, ResolvedFile, ResolvedProgram 기반 의존성 그래프 구축
- 순환 참조 감지와 경로 기반 토폴로지 정렬 구현
- ExportTable struct(함수/구조체/상수/열거형 맵 포함)를 semantic_types.rs에 추가
Impact
전체 72개 테스트(t65, t66 포함)가 green 상태 유지, regression 없음
Key Takeaway
단순 파일 적재보다 의존성 그래프 구축이 추가 비용이 발생하지만, 모듈 ID와 import edge 확보를 통해 dead symbol elimination과 순환 참조 감지가 가능해진다.
실천 포인트
복합 시스템에서 모듈 간 의존성 처리를 구현할 때 의존성 그래프를 구축하면 dead code elimination과 순환 참조 감지를 나중에 추가할 수 있다