Show GN: Lamina - 의존성 없이 자체구현한 컴파일러 백엔드
(github.com/SkuldNorniern)Lamina는 Intermediate Representation code (IR code)를 입력으로 받아 머신 코드/바이너리를 생성하는 컴파일러 백엔드 프로젝트입니다.
제 지난 4~5년간의 언어/컴파일러 공부와 프로젝트들을 바탕으로 시작했으며, 컴파일러에 관심 있는 분들께 직관적으로 이해 가능한 간단한 레퍼런스가 되길 바랍니다.
현재 지원 플렛폼
- macOS (aarch64)
- Linux (x86_64)
- WebAssembly (wasm32/64)
지원 예정 플렛폼
- Windows (x86_64)
- macOS (Intel)
- Linux (aarch64)
- Risc-V
Windows aarch64의 경우 필자에게 장비가 없어 우선순위 낮아 생략
현재 상태
현재 컴파일러 최적화 패스가 없어, 속도는 C#보다 소폭 느린 수준입니다.
다음 업데이트 중 Machine IR 레이어가 구현될 예정이며, 그와 함께 최적화 패스의 도입이 예정되어 있습니다.
또한 0.1 릴리즈 전까지 Testcode 와 codegen 부분에서 AI를 이용해 생성된 내용 대부분 삭제 후 재작성 예정
컴파일러 프론트엔드 예시
Brainfuck-Lamina Repo - 간단한 Brainfuck 컴파일러
이후 개발 예정 기능
- GPU 코드 생성 지원 (이후 자체구현 ML 라이브러리의 백엔드로 활용)
- JIT 컴파일 지원
- 디버거 등 툴셋 제공
- 자체구현 어셈블러, 링커 제공 (기존 유틸 지원은 유지)