작성자: naruse (2016-11-09)
번역자: shia
루비 2.4.0-preview3의 릴리스를 알리게 되어 기쁘게 생각합니다.
루비 2.4.0-preview3은 루비 2.4.0의 세 번째 프리뷰입니다. 이 프리뷰는 커뮤니티의 반응을 살펴보기 위해 릴리스되었습니다. 기능에서 혼란을 느낀다면 부담없이 피드백을 보내주세요.
Vladimir Makarov의 해시 테이블 개선을 도입
해시 테이블(st_table)의 내부 구조를 삽입순 배열에 개방 주소법을 도입하는 개선이 이루어졌습니다. 이 개선에 대해서는 많은 사람들의 토론이 있었으며, 특히 Yura Sokolov의 공헌이 컸습니다.
Binding#irb: binding.pry
처럼 REPL 세션 시작하기
디버깅 중에 p
를 사용하여 변수의 값을 확인하는 경우가 잦습니다.
pry를 사용하면 애플리케이션에 binding.pry
를 추가하면 해당 위치에서 REPL을 실행해 줍니다.
r56624는 irb에서도 binding.irb
를 통해 같은 동작을 하는 기능을 추가합니다.
Fixnum과 Bignum을 Integer로 통합
ISO/IEC 30170:2012에서는 Integer 클래스의 세부에 관해서 기술하고 있지 않아, 루비에서는 2개의 정수 클래스(Fixnum과 Bignum)를 가지고 있습니다. 루비 2.4에서는 이들이 Integer로 통합됩니다. Fixnum이나 Bignum에 영향을 주는 모든 C 확장이 변경되어야 합니다.
String에서 유니코드 대/소문자 대응 지원
String/Symbol#upcase/downcase/swapcase/capitalize(!)
는 이제
ASCII 대/소문자 대응 대신에 유니코드 대/소문자 대응을 지원합니다.
성능 개선
루비 2.4는 다음의 언어 변경을 포함한 성능 개선이 있습니다.
Array#max, Array#min
[x, y].max
와 [x, y].min
은 특정 조건에서 임시 배열을 생성하지 않도록
최적화되었습니다.
Regexp#match?
Regexp#match?
가 추가되었으며, 이는 후방 참조 객체를 생성하거나
$~
을 변경하지 않음으로써 객체 할당을 줄이며 정규 표현식을 매칭합니다.
그 외의 성능 향상
디버깅
Thread#report_on_exception과 Thread.report_on_exception
루비는 다른 스레드에서 명시적으로 접근하지 않는 이상 스레드에서의 예외를 무시합니다.
report_on_exception = true
를 사용하면,
처리되지 않은 예외 때문에 스레드가 사망하는 경우, 알림을 받을 수 있게 됩니다.
report_on_exception
의 기본값으로 무엇을 사용하면 좋을지,
그리고 스레드가 조인되지 않은 채 GC 되었을 때 알려주는 report-on-GC에 대한 피드백을 보내주세요.
스레드 교착상태 탐지가 이제 백트레이스와 의존성 정보를 함께 보여주게 됩니다
루비는 대기 중인 스레드의 교착상태를 탐지할 수 있었지만, 디버깅을 위한 충분한 정보가 리포트에 포함되지 않았습니다. 루비 2.4의 교착상태 탐지는 스레드의 백트레이스와 의존하고 있는 스레드에 대한 정보를 보여주게 됩니다.
루비 2.4.0-preview3으로 즐겁게 프로그램을 작성해보세요. 그리고 여러분이 느낀 점을 알려주세요!
2.3 이후의 주목할 만한 변경
- OpenSSL 1.1.0을 지원합니다.
- stdlib에서 ext/tk가 제거됩니다. Feature #8539
- stdlib에서 XMLRPC가 제거됩니다. Feature #12160
이러한 변경사항에 따라, 루비 2.3.0 이후로 파일 2470개 수정, 283051줄 추가(+), 64902줄 삭제(-)가 이루어졌습니다.
다운로드
-
https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview3.tar.bz2
SIZE: 12615328 bytes SHA1: fefe49f6a7d5b642936c324f3b05aaac827355db SHA256: 305a2b2c627990e54965393f6eb1c442eeddfa149128ccdd9f4334e2e00a2a52 SHA512: 6602c65a7b1e3bc680acc48217108f4335e84fdd74a9cf06f2e2f9ad00a2fccacf9fa035a912bc9d5cc3f0c7a5e21475971dfac37b0364311ef3645f25c7ddf9
-
https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview3.tar.gz
SIZE: 15758023 bytes SHA1: f6a6ec9f7fedad0bf4efee2e42801cc963f60dca SHA256: c35fe752ccfabf69bf48e6aab5111c25a05938b428936f780638e2111934c9dd SHA512: 68556d5252b6813b4c8eeba32733e940207f80694b5c5d20e69bf01eb52929ed2466496b05a895a5ad4831d430695e17624eb35b728b2d4d7cf02df756ac48b4
-
https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview3.tar.xz
SIZE: 9957596 bytes SHA1: 66592b1a52f985638d639e7c3dd6bdda4e0569d0 SHA256: b14be2b5c80bff0d6894ae2b37afdb17a968413e70236ec860f3e2d670b4c317 SHA512: 5be20f0b2609745790c2b22f2228e69a840f63c34a117a1f95fd5436af211f0a6db2758d513d3e095a2d97c53c80793579cb2a1e00e70cf72c487a88c4a40d33
-
https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview3.zip
SIZE: 17579012 bytes SHA1: 15d08cff952da3844ae54887b7f74b12d47c9ee2 SHA256: b95a8f67fb7d6e852db77c5660c8878c14d68eb72c5501dac164a7e640ecb06e SHA512: fa15e1b7ab0cab56c9a580e1b1e2fee250ee0b9c59546079675a1931a36e37131bd37d64033c75e05d8e9d9fcc33ce7850254d3acaca2136cf3bd08b070244f0
릴리스 코멘트
릴리스 일정과 다른 정보는 밑의 링크를 참조하세요.