1. Ruby Box 및 ZJIT 도입
-
Ruby Box: 몽키 패치나 전역 변수 변경 등을 특정 범위 내에 격리하는 실험적 기능입니다.
Ruby::Box를 통해 테스트 케이스 보호나 블루-그린 배포 구현 시 안전한 실행 환경을 제공합니다. -
ZJIT: 차세대 JIT 컴파일러로, SSA IR 기반의 전통적인 메서드 컴파일러 방식을 채택하여 성능 한계를 극복하고자 합니다. 현재는 인터프리터보다 빠르지만 YJIT보다는 느린 단계로, 4.1 버전에서의 정식 최적화를 목표로 합니다.
2. Ractor 및 병렬 처리 개선
-
Ractor::Port: 메시지 송수신 문제를 해결하기 위한 새로운 동기화 메커니즘이 도입되었으며, 기존의
Ractor.yield와take는 제거되었습니다. -
성능 최적화: 글로벌 락 경합을 줄이고 CPU 캐시 경합을 최소화하도록 내부 데이터 구조를 개선하여 병렬 실행 효율을 높였습니다.
3. 언어 사양 및 표준 라이브러리 변화
-
문법 개선: 줄 시작 부분에
||,&&등의 논리 연산자를 배치하여 이전 줄과 연결할 수 있게 되었으며,*nil이nil.to_a를 호출하지 않도록 변경되었습니다. -
코어 승격:
Set과Pathname이 기본 보석(gem)에서 코어 클래스로 승격되어 별도의 require 없이 사용 가능하며 성능이 향상되었습니다.