Ruby 3.5의 주요 변경 사항은 다음과 같습니다:
-
Set 클래스 코어 승격:
Set이 C로 구현된 코어 클래스로 승격되어 성능과 메모리 효율성(약 33% 감소)이 크게 향상되었습니다. 이는 내부적으로Hash대신Set연산에 최적화된 커스텀 해시 테이블을 사용하기 때문입니다. -
Ractor 업데이트 및
Ractor::Port도입:Ractor간 통신을 위한Ractor::Port가 도입되었으며, 기존Ractor.yield,Ractor#take,Ractor.select등 여러 메서드가 제거되었습니다. 개발자는port.send및port.recv를 사용하여 코드를 업데이트해야 합니다. -
nil스플랫 동작 단순화: 스플랫 연산자(*)가nil과 함께 사용될 때[]를 반환하도록 일관성이 강화되었습니다. 이는 더블 스플랫(**)의 기존 동작과도 일치합니다. -
IO.selectFloat::INFINITY지원:IO.select가 무기한 대기를 위해Float::INFINITY를 타임아아웃 인수로 허용합니다. -
넘버링 파라미터 바인딩 변경:
_1,_2등 넘버링 파라미터가binding인트로스펙션에서 제외되어 진정한 익명성을 확보했으며, Ruby 3.4에 도입된it파라미터 사용이 권장됩니다. -
instance_variables_to_inspect를 통한inspect사용자 정의:Kernel#inspect가instance_variables_to_inspect메서드를 통해 출력할 인스턴스 변수를 사용자 정의할 수 있게 되어 민감한 정보 노출을 제어할 수 있습니다. -
Socket연결 타임아웃:Socket.tcp에open_timeout인수가 추가되어 연결 시도에 대한 타임아웃 설정이 가능해졌습니다. -
기본 Gem 업데이트 및 제거:
ostruct,pstore,benchmark,logger등 일부 기본 Gem이 최신 버전으로 업데이트되었습니다. 반면,CGI라이브러리의 대부분과SortedSet의require 'set'시 자동 로딩 기능이 제거되어 필요한 경우 해당 Gem을 명시적으로 추가해야 합니다.