더 나은 [build] 액션 그래프 직렬화를 원합니다
빌드 시스템에서 중요한 역할을 하는 액션 그래프(action graph)의 직렬화 방식에 대한 한계와 개선 방향이 제시되었습니다.
기존 빌드 시스템인 Make와 Ninja는 각각 모호성, 의존성 표현 한계, 그리고 재구성 비용 문제를 안고 있습니다.
특히 Ninja는 체크섬 지원 부족, 부정적 의존성(negative dependencies) 표현 불가, 파일 이름 변경 처리의 어려움, 환경 변수 의존성 표현 한계 등이 문제점으로 지적되었습니다.
이를 해결하기 위해 저자는 새로운 직렬화 형식인 Magma를 제안했습니다.
Magma는 간결한 Clojure 하위 집합을 기반으로 하며, 파일 생성·수정·삭제에 따른 다양한 의존성(edge) 표현과 메모리 내 데이터 변환 기능을 지원합니다.
또한, Magma는 빌드 재구성 최소화와 빠른 그래프 로딩을 목표로 하며, 기존 Ninja 파일과의 기계적 변환 가능성도 염두에 두고 설계되었습니다.
향후 이 언어를 평가하고 쿼리할 수 있는 실행 도구 개발이 이어질 예정입니다.
이번 연구는 빌드 시스템의 효율성과 유연성을 동시에 높일 수 있는 새로운 방향성을 제시합니다.