주요 변경 사항 및 개선점
- 새로운 버전 관리 체계:
- TruffleRuby의 주 버전이 이제 호환되는
RUBY_VERSION의 첫 두 구성 요소를 따릅니다. - 예: TruffleRuby 33은 Ruby 3.3과 호환됩니다.
- 이를 통해 CRuby와 무관하게 TruffleRuby는 시맨틱 버전을 따르며, 호환성을 쉽게 파악할 수 있습니다.
- TruffleRuby의 주 버전이 이제 호환되는
- 스레드 안전한 Hash 구현:
- TruffleRuby에서
Hash가 스레드 안전하게 구현되어, 여러 스레드에서 동기화 없이Hash에 접근할 때 발생하는 동시성 버그를 해결합니다. - GVL이 없는 TruffleRuby의 병렬 스레드 실행 환경에서 중요한 개선점입니다.
- 단일 스레드 접근 시 오버헤드가 없으며, 병렬 읽기/쓰기를 지원합니다.
- CRuby의
Hash보다 안정적이며, 반복 중에도 변경을 허용합니다. - 최적의 쓰기 병렬성을 위해서는
Concurrent::Map사용이 여전히 권장됩니다.
- TruffleRuby에서
- 가장 빠르고 쉬운 설치:
- 시스템
libssl및libyaml의존성이 제거되어 컴파일이 필요 없어졌습니다. ruby-build기준, 설치 시간이 5초로 대폭 단축되어 JRuby(10초), CRuby(117초)보다 빠릅니다.curl과tar를 이용한 간단한 다운로드 및 압축 해제로 즉시 실행 가능합니다.
- 시스템
- Java 임베딩 간소화:
- GraalVM Polyglot API를 사용하여 Java 프로그램에 TruffleRuby를 임베딩하는 과정이 간소화되었습니다.
- 시스템 의존성 제거로 인해 더 이상 컴파일 없이 Maven Central의 JAR 파일을 사용할 수 있습니다.
- 오픈 소스 개발 전환:
- Oracle의 후원이 종료되고,
oracle/truffleruby에서truffleruby/truffleruby로 GitHub 저장소가 이전되었습니다. - 개발이 완전히 공개적으로 진행되며, CI 시간 단축, CLA 불필요, 잦은 릴리스 등 커뮤니티 참여가 활성화됩니다.
- 코어 라이브러리 메서드의 73%가 Ruby로 구현되어 기여가 용이합니다.
- Oracle의 후원이 종료되고,