Ruby 3.5.0-preview1의 주요 변경 사항은 다음과 같습니다.
언어 변경 사항
가장 주목할 만한 언어 변경 사항 중 하나는 nil
객체의 동작 방식 변화입니다. 기존에는 nil
이 nil.to_a
를 호출했지만, 이제는 **nil
이 nil.to_hash
를 호출하지 않는 것과 유사하게 더 이상 nil.to_a
를 호출하지 않도록 변경되었습니다. 이는 언어의 일관성을 높이고 개발자가 예상치 못한 동작을 줄이는 데 기여합니다.
핵심 클래스 업데이트
- Binding:
Binding#local_variables
는 더 이상 번호가 매겨진 매개변수(numbered parameters)를 포함하지 않으며,Binding#local_variable_get
및Binding#local_variable_set
또한 이러한 매개변수 처리를 거부하도록 수정되었습니다. 이는Binding
객체의 동작을 더욱 명확하게 합니다. - IO:
IO.select
메서드가 타임아웃 인수로Float::INFINITY
를 허용하게 되어, 무한 대기를 보다 명시적으로 표현할 수 있게 되었습니다. - String:
String
클래스와Regexp
에서는 Unicode 버전이 15.1.0으로, Emoji 버전이 15.1로 업데이트되어 최신 문자 및 이모지 표준을 지원합니다. 이는 문자열 처리 및 정규 표현식의 정확성과 범용성을 향상시킵니다.
표준 라이브러리 업데이트
ostruct
0.6.1, pstore
0.2.0, benchmark
0.4.0, logger
1.7.0, rdoc
6.13.1, win32ole
1.9.2, irb
1.15.2, reline
0.6.1, readline
0.0.4, fiddle
1.1.6 등 여러 표준 라이브러리가 최신 버전으로 업데이트되었습니다. 이러한 업데이트는 기존 라이브러리의 기능 개선 및 버그 수정을 포함합니다.
호환성 문제 및 기타 변경 사항
기능 버그 수정 외에 표준 라이브러리 호환성 문제 및 C API 업데이트가 있었으며, 더 자세한 내용은 NEWS 파일 또는 커밋 로그를 통해 확인할 수 있습니다. Ruby 3.4.0 이후 총 2065개의 파일이 변경되었고, 36581개의 삽입과 203037개의 삭제가 이루어졌습니다. 이는 상당한 규모의 코드베이스 변화를 의미합니다.