작성자: naruse (2014-12-25)
번역자: marocchino
루비 2.2.0이 릴리스 되었습니다.
루비 2.2에는 점점 더 커지는 다양한 요구들 충족하기 위한 많은 새로운 기능과 개선들이 포함됩니다.
예를 들어, 심볼 GC는 심볼을 가비지 컬렉션할 수 있게 합니다. 루비 2.2 이전에는 GC가 심볼을 수집하지 않았기에 이 변경은 심볼의 메모리 사용량을 줄이게 됩니다. 레일즈 5.0부터는 심볼 GC가 필요하게 되고, 이는 오직 루비 2.2 이후에서만 지원하게 됩니다. (자세한 내용은 레일즈 4.2 릴리스 포스트에서 확인하세요.)
또한, 새로운 증가형(Incremental) GC는 가비지 컬렉션의 중지 시간을 줄여줍니다. 이 또한 레일즈 앱의 운용에 도움이 됩니다. 레일즈 블로그에 언급된 최신 개발방법은 레일즈 5.0에서 증가형 GC뿐만 아니라 심볼 GC의 이점을 살리자고 제안하고 있습니다.
메모리 관리에 관련된 또다른 기능으로 jemalloc을 사용할 수 있는 configure.in 옵션의 추가입니다. 기능 #9113 이는 실험적인 기능이며, 기본값으로 비활성화됩니다. 좀 더 많은 사용 사례와 성능 데이터가 필요합니다만. 이점이 명확해지면, 이 기능은 기본값으로 활성화 될 것입니다.
system()과 spawn()에서 vfork(2)의 사용도 실험적 지원도 추가됩니다. 자세한 내용은 타나카씨의 블로그(일본어)에서 확인하세요. 이는 큰 프로세스가 여러 번 외부 명령을 실행 할 때 잠재적으로 엄청난 속도 향상을 가져올 수 있습니다. 하지만 vfork(2)는 아직 잘 알려지지 않은 위험할 수도 있는 시스템 콜입니다. 사용사례와 성능 데이터의 수집으로 이 변경이 가져올 이점이 어느 정도인지 알고 싶습니다.
루비 2.2.0을 시험해보고 즐겨주세요. 그리고 당신의 경험을 알려주세요!
2.1 이후의 주목할 만한 변경점
- 증가형 GC (YARV Maniacs No.12)
- 심볼 GC (RubyKaigi 2014의 프레젠테이션)
- configure –with-jemalloc 기능 #9113
- 코어 라이브러리:
- 포함된 라이브러리:
- 업데이트 Psych 2.0.8
- 업데이트 Rake 10.4.2
- 업데이트 RDoc 4.2.0
- 업데이트 RubyGems 2.4.5
- 업데이트 test-unit 3.0.8 (저장소에서는 제거했지만 tarball에는 포함)
- Update minitest 5.4.3 (저장소에서는 제거했지만 tarball에는 포함)
- mathn을 비추천(Deprecate)으로 변경
- C API
- 비추천 상태의 API들을 제거
자세한 내용은 루비 저장소의 NEWS를 보세요.
이러한 변경으로 2.1.0과 비교하여 1557 파일이 변경되고 125039 줄이 증가(+), 74376 줄이 감소(-)하였습니다.
다운로드
- https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0.tar.bz2
- SIZE: 13304042 bytes
- MD5: d03cd4690fec1fff81d096d1c1255fde
- SHA256: 1c031137999f832f86be366a71155113675b72420830ce432b777a0ff4942955
- SHA512: 04edc53e8cd1732c3ca61ebeb1d6133614beb10f77f9abb80d8d36352fe8aa205112068e460bf600b2c7e81e0ddcc3b311e7e027c320366f1bd992b3e378a6ad
- https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0.tar.gz
- SIZE: 16494584 bytes
- MD5: cd03b28fd0b555970f5c4fd481700852
- SHA256: 7671e394abfb5d262fbcd3b27a71bf78737c7e9347fa21c39e58b0bb9c4840fc
- SHA512: 1ba0c68e1c8d2b60bbd1e218cf36463edbe34cf9418d7593702b631e68d02297465f752e71395f6cfa4104f4cd70a1eb44381ffb74bc7801758b830931fdcfc6
- https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0.tar.xz
- SIZE: 10304244 bytes
- MD5: 54b43c6c6c9dd4c4b08ceb03ad0ded7a
- SHA256: 848714e280fc5fb44dbac3b060b206e56c1947006324ee68a174d68b483ef8ca
- SHA512: cd7e52faa464df8aca7ccfa23a5f06248e1ad82bc8c9f1829aa1b51ff37b15973b8caaa68e914d837325b8d59427fda4f3cad82c50925e1c84e688324a2a155d
- https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0.zip
- SIZE: 18441027 bytes
- MD5: f8e1d0cee4f2d9535a9529ed23ae3700
- SHA256: e06c1e2b1248cf881749833084b2bec93f7612676009190ff9bc89b8fd07c29f
- SHA512: 364dd927b496520d95a1b06c68e1a265015f4cab08bdf3efaa323d385e7bf075eae47f2e1db78a629db0f3c0c1ed24e086603ba21e2da02ac06dd3c8b716766e