현재 C Ruby 빌드 시스템은 여러 문제에 직면해 있습니다. configure
단계는 configure.ac
파일의 비대화(약 6,000 라인)와 기능 추가로 인해 처리 시간이 선형적으로 증가하며, make
단계의 빌드 시간 또한 5분 이상으로 늘었습니다. 주요 과제로는 다양한 make
구현 및 빌드 변형 지원으로 인한 복잡성, make
단계의 동적 로직으로 인한 디버깅 어려움, configure.ac
의 표현력 한계로 인한 빌드 로직 분산, 타르볼 빌드의 의도치 않은 base_ruby
의존성, 그리고 순차적 실행과 단계별 의존성으로 인한 빌드 시간 증가 및 CPU 유휴 시간 발생이 있습니다.
C Ruby 빌드 시스템의 현재 상태와 미래 방향
[EN] The Evolution of the CRuby Build System / Yuta Saito @kateinoigakukun
작성자
RubyKaigi
발행일
2025년 05월 27일
핵심 요약
- 1 C Ruby 빌드 시스템은 오랜 역사와 함께 복잡하게 진화하여 현재 다양한 빌드 환경과 동적인 Make 기능으로 인해 이해 및 디버깅의 어려움, 빌드 시간 증가 등의 문제에 직면해 있습니다.
- 2 `configure.ac`의 표현력 한계와 의도치 않은 Base Ruby 의존성은 빌드 과정의 복잡성을 가중시키는 주요 원인입니다.
- 3 향후 Ruby 기반의 새로운 빌드 시스템을 통해 빌드 로직을 명확히 하고, 빌드 계획을 검증하며, 병렬 처리 및 단일 빌드 그래프를 도입하여 성능을 개선할 계획입니다.
도입
C Ruby 빌드 시스템은 오랜 역사 속에서 복잡하게 진화해왔습니다. 본 발표는 Ruby를 WebAssembly로 포팅하며 겪은 어려움을 바탕으로, 현재 시스템의 현황, 당면 과제, 그리고 미래 방향을 제시합니다. 일반적인 Ruby 설치는 `configure` 및 `make` 과정을 포함하며, 타르볼 빌드는 '부트스트랩 문제' 해결을 위해 Ruby 설치 없이 빌드 가능하도록 사전 생성된 파일들을 포함한다는 점에서 소스 빌드와 차이가 있습니다.
결론
이러한 문제들을 해결하기 위해 발표자는 Ruby 기반의 새로운 빌드 시스템 비전을 제시합니다. 이 시스템은 빌드 로직을 Ruby로 옮겨 표현력을 높이고, 빌드 계획을 사전에 검증하며, `configure` 및 `make` 단계의 병렬 처리를 통해 빌드 성능을 향상시키는 것을 목표로 합니다. 새로운 빌드 시스템은 Ruby로 전체 빌드 그래프를 구성하고 라이브러리 형태로 제공될 것입니다. 최종 사용자는 Ruby 설치 없이 Ruby를 빌드할 수 있도록 기존 `configure` 스크립트와 유사한 인터페이스를 제공하면서도, 빌드 그래프를 분석하여 의존성 문제를 방지하고 다른 프로젝트에 Ruby 빌드를 쉽게 통합할 수 있도록 설계될 예정입니다. 아직 개발 초기 단계지만, 이 접근 방식이 C Ruby 빌드 시스템의 근본적인 문제들을 해결할 수 있을 것이라고 강조하며 발표를 마칩니다.