TruffleRuby 33, 스레드 안전 해시와 오픈소스 전환으로 Ruby 생태계에 새 바람을!

by DD
4개월 전
조회수 16

TruffleRuby 33.0.0 릴리스, Ruby 3.3 호환성 제공 및 새로운 버전 관리 체계 도입

스레드 안전 해시(Thread-Safe Hash) 구현으로 동시성 버그(Concurrency Bugs) 해결, 안정성 향상

시스템 의존성 제거를 통해 설치 속도 및 편의성 대폭 개선, Java 임베딩 간소화

오라클(Oracle) 후원 종료 후 오픈소스 프로젝트(Open Source Project)로 전환, 커뮤니티 기여 활성화

스레드 안전 해시(Thread-Safe Hash) 구현

TruffleRuby 33에서 가장 주목할 만한 점은 스레드 안전 해시(Thread-Safe Hash) 구현이다. 기존 CRuby의 GVL(Global VM Lock) 부재로 인해 발생하던 동시성 문제를 해결하기 위해, 병렬 읽기 및 쓰기를 지원하는 정교한 해시 구현을 도입했다. 특히, 단일 스레드에서 접근 가능한 해시 인스턴스에 대한 오버헤드를 최소화하여 성능 저하를 방지했다. Benoit의 연구를 기반으로 한 이 구현은 Lightweight Layout Lock과 비차단 동기화 기술을 활용하여, 기존 CRuby보다 더 안정적인 해시 연산을 제공한다.

설치 및 임베딩 간소화

TruffleRuby 33은 시스템 의존성을 제거하여 설치 과정을 대폭 간소화했다. libssl 및 libyaml에 대한 의존성 제거로 인해, 컴파일 과정 없이 curl과 tar를 사용하여 빠르게 설치할 수 있게 되었다. 설치 시간은 5초로 단축되었으며, 이는 CRuby의 117초, JRuby의 10초와 비교해 압도적인 속도이다. 또한, Java 프로그램에 TruffleRuby를 임베딩하는 과정도 간소화되어, Maven Central에서 JAR 파일을 다운로드하여 바로 사용할 수 있게 되었다. 이는 개발자들이 별도의 컴파일 과정 없이(No Compilation) TruffleRuby를 활용할 수 있도록 지원한다.

오픈소스 전환 및 커뮤니티 기여 활성화

TruffleRuby는 오라클의 후원을 종료하고, 오픈소스 프로젝트로 전환되었다. 이로 인해 개발 과정이 GitHub에서 공개적으로 진행되며, 누구나 개발에 참여하고 논의에 참여할 수 있게 되었다. PR(Pull Request) 병합 속도 향상과 더불어, 기여에 대한 제약이 사라져 커뮤니티의 적극적인 참여를 유도한다. TruffleRuby는 73%의 핵심 라이브러리 메서드를 Ruby로 구현하여, 기여 진입 장벽을 낮추고, 지속적인 릴리스(Frequent Releases)를 통해 Ruby 생태계에 기여할 예정이다.

새로운 버전 관리 체계

TruffleRuby 33부터는 새로운 버전 관리 체계를 도입하여, Ruby 버전과의 호환성을 명확하게 나타낸다. TruffleRuby의 메이저 버전은 호환되는 Ruby 버전의 첫 두 구성 요소를 나타내며, TruffleRuby 33은 Ruby 3.3과 호환된다. 이로써 TruffleRuby는 CRuby와 달리 시맨틱 버전 관리(Semantic Versioning)를 따를 수 있게 되었으며, 개발자들은 TruffleRuby와 Ruby 버전 간의 호환성을 쉽게 파악할 수 있다. 이는 TruffleRuby의 지속적인 발전(Continuous Improvement)을 위한 중요한 발걸음이다.

TruffleRuby 33 is Released