루비 1.9.3 p0 릴리스

루비 1.9버전의 최신판인 1.9.3 p0이 릴리스되었습니다.

내려받기

1.9.2와의 차이점

라이센스

라이센스가 아래와 같이 변경되었습니다.

  • 지금까지 루비는 "GPLv2"과 "루비" 라이센스 하에 배포되었습니다. 하지만 루비 1.9.3부터는 2-clause BSDL루비 라이센스로 변경됩니다.

인코딩

  • 루비 1.9.[0-2]에서 SJIS는 Shift_JIS의 alias였지만, 1.9.3부터는 Windows-31J의 alias로 변경되었습니다.
  • 새로운 인코딩인 UTF-16, UTF-32, CP950, CP951이 추가되었습니다.
  • Regexps는 Unicode 6.0의 새로운 문자와 스크립트를 지원합니다.

Core클래스

  • ARGF: ARGF.print와 ARGF.read_nonblock 등 새로운 메서드가 추가되었습니다.
  • Array#pack, String#unpack: 엔디안을 명시적으로 지정할 수 있게 되었습니다.
  • Bignum: 내부표현으로 자릿수가 150 이상인 정수의 곱셈을 Toom-3 알고리즘으로 처리하도록 변경되었습니다. 이에 따라 성능 향상이 이루어졌습니다.
  • 정수 File::NULL과 File::DIRECT가 추가되었습니다.
  • IO#putc: 멀티바이트 문자를 지원합니다.
  • IO: IO#advise, IO.write, IO.binwrite가 추가되었습니다.
  • #__id__가 BasicObject의 메서드로 변경되었습니다.
  • Kernel#rand의 인수로 Range 객체를 지정할 수 있습니다.
  • Module#private_constant, Module#public_constant 메서드가 추가되었습니다.
  • String#prepend, String#byteslice가 추가되었습니다.
  • Time#strftime: %:z와 %::z.를 지원합니다.
  • Process#maxgroups와 Process#maxgroups: 보조 그룹을 지원하지 않는 환경에서 NotImplementedError를 던지도록 변경되었습니다.

Standard 라이브러리

  • io/console: 새롭게 추가되었습니다.
  • openssl: 새로운 메인테이너의 활약으로 많은 부분이 개선되었습니다.
  • test/unit: 병렬실행이 가능하게 되었습니다.

기타

  • pathname 및 date가 C로 다시 쓰여졌으며, 이에 따라 성능 향상이 이루어지게 되었습니다.
  • VM Lock의 전략이 변경되었습니다.

버그 및 호환성

  • 변경된 Rational#to_d는 정수 0 또는 음수를 에러로 처리합니다.

자세한 사항은 뉴스변경로그를 참고하시기 바랍니다.