언어 변경사항
-
논리 연산자 줄바꿈 허용:
&&,||,and,or연산자가 주석이 있어도 다음 줄로 이어질 수 있게 되어 코드 가독성 및 버전 관리 용이성이 개선되었습니다. (Feature #20925) -
*nil이 더 이상nil.to_a를 호출하지 않음: 인수가 없는 경우 중간 배열 생성 없이 최적화 처리되어 성능이 향상되었습니다. (Feature #21047)
핵심 클래스 및 모듈
-
Ruby최상위 모듈 도입:Ruby::Box클래스와 현재 Ruby 버전을 설명하는 상수를 포함하는 코어 모듈이 되었습니다. (Feature #20884) -
`Object
inspect 커스터마이징: instance_variables_to_inspect 재정의를 통해 inspect` 출력에 포함될 인스턴스 변수를 제어할 수 있게 되었습니다. (Feature #21219)
-
String스트리핑 메서드 개선:strip,lstrip,rstrip메서드가 제거할 문자를 인수로 받을 수 있게 되어 유연성이 증가했습니다. (Feature #21552) -
Math.log1p및Math.expm1추가: 부동 소수점 정밀도 손실을 방지하는 원자적 로그 및 지수 함수가 도입되었습니다. (Feature #21527) Range개선:#to_set이 무한 범위에 대해 오류를 발생시켜 무한 루프를 방지합니다. (Bug #21654)#overlap?이 무한 범위에 대해 올바르게 동작하도록 수정되었습니다. (Bug #21185)#max가 시작 없는 정수 범위에서 여러 값을 올바르게 반환합니다. (Bug #21174, #21175)
- `Array
rfind 추가: 배열의 역방향 검색을 위한 rfind` 메서드가 도입되었습니다. (Feature #21678)
Set클래스 C로 재구현: 내부적으로Hash를 사용하던 기존 구현이 C로 재구현되어 효율성이 크게 향상되었으며,Set::SubclassCompatible모듈로 하위 호환성을 제공합니다. (Feature #21216)- `Set
inspect 출력 형식 변경: Set[요소]` 형태로 변경되어 생성 구문에 가까워졌습니다. (Feature #21389)
- `Proc
parameters 출력 조정: 암시적 it 매개변수가 [:opt, nil] 대신 [:opt]`로 보고되어 일관성이 개선되었습니다. (Bug #20974)
-
Enumerator.produce에size:인자 추가: 반복 횟수를 미리 지정할 수 있게 되었습니다. (Feature #21701) -
Pathname코어 클래스화:require "pathname"없이 사용할 수 있게 되어 파일 시스템 객체 처리가 편리해졌습니다. (Feature #17473) -
Ruby::Box도입: 격리된 코드 로딩을 위한 실험적인 개념으로, 라이브러리 간의 의존성 충돌 해결 가능성을 제시합니다. (Feature #21311) -
Binding변경: 로컬 변수와 암시적 매개변수(_1,it)를 분리하여 `Binding
implicit_parameters` 등의 새 메서드가 도입되었습니다. (Bug #21049)
예외 처리 개선
-
<internal:>프레임 백트레이스에서 제거: Ruby로 구현된 코어 메서드의 내부 호출 스택이 백트레이스에서 제외되어 오류 메시지가 간결해졌습니다. (Bug #20968) -
ArgumentError출력에 호출자 및 피호출자 코드 포함: ErrorHighlight 라이브러리를 통해 상세한 오류 위치를 제공합니다. (Feature #21543)
Ractor 개선
-
Ractor::Port도입: 랙터 간 양방향 데이터 교환을 위한 직관적인 메커니즘을 제공하여 클라이언트-서버 모델 구현을 용이하게 합니다. (Feature #21262) -
Ractor.select의미 변경: 랙터 또는 포트 목록을 받아 메시지가 있는 포트 또는 종료된 랙터를 선택합니다. -
랙터 대기 메서드 변경: `Ractor
take 대신 Ractor
join (종료까지 대기) 및 Ractor
value (종료 및 반환 값 제공)가 도입되었습니다. 또한 Ractor
monitor, Ractor
unmonitor`와 같은 저수준 메서드가 추가되었습니다.
Ractor.shareable_proc및Ractor.shareable_lambda도입: 외부 스코프의 공유 불가능한 값을 참조하지 않는Proc/Lambda를 생성하여 랙터 간 안전하게 전달할 수 있게 합니다. (Feature #21550, #21557)
표준 라이브러리 변경
-
cgi라이브러리 제거:cgi/escape라이브러리로 웹 관련 이스케이프 메서드만 남기고 제거되었습니다. (Feature #21258) -
sorted_set제거:rbtree의존성과Set의 오래된 구현 세부사항으로 인해 표준 라이브러리에서 제외되었습니다.