|
| 1 | +--- |
| 2 | +layout: news_post |
| 3 | +title: "Ruby 4.0.0 preview2 릴리스" |
| 4 | +author: "naruse" |
| 5 | +translator: "Yonghyun Kim" |
| 6 | +date: 2025-11-17 00:00:00 +0000 |
| 7 | +lang: ko |
| 8 | +--- |
| 9 | + |
| 10 | +{% assign release = site.data.releases | where: "version", "4.0.0-preview2" | first %} |
| 11 | +Ruby {{ release.version }} 릴리스를 알리게 되어 기쁩니다. Ruby 4.0은 유니코드 버전을 17.0.0으로 업데이트했으며, 더 많은 것들이 있습니다. |
| 12 | + |
| 13 | +## 언어 변경 |
| 14 | + |
| 15 | +* `**nil`이 `nil.to_hash`를 호출하지 않는 것과 마찬가지로, `*nil`은 더 이상 `nil.to_a`를 호출하지 않습니다. |
| 16 | + [[Feature #21047]] |
| 17 | + |
| 18 | +## 코어 클래스 변경 |
| 19 | + |
| 20 | +주의: 주목할 만한 코어 클래스 변경만을 포함합니다. |
| 21 | + |
| 22 | +* Binding |
| 23 | + |
| 24 | + * `Binding#local_variables`는 더 이상 번호가 매겨진 매개변수를 포함하지 않습니다. |
| 25 | + 또한, `Binding#local_variable_get`과 `Binding#local_variable_set`은 번호가 매겨진 매개변수를 처리하지 않습니다. |
| 26 | + [[Bug #21049]] |
| 27 | + |
| 28 | +* IO |
| 29 | + |
| 30 | + * `IO.select`는 타임아웃 인자로 +Float::INFINITY+를 허용합니다. |
| 31 | + [[Feature #20610]] |
| 32 | + |
| 33 | +* String |
| 34 | + |
| 35 | + * 유니코드 17.0.0 및 이모지 버전 17.0으로 업데이트합니다. [[Feature #19908]][[Feature #20724]][[Feature #21275]] |
| 36 | + (Regexp에도 적용됩니다) |
| 37 | + |
| 38 | + |
| 39 | +## 표준 라이브러리 변경 |
| 40 | + |
| 41 | +주의: 주목할 만한 표준 라이브러리 변경만을 포함합니다. |
| 42 | + |
| 43 | +* ostruct 0.6.1 |
| 44 | +* pstore 0.2.0 |
| 45 | +* benchmark 0.4.0 |
| 46 | +* logger 1.7.0 |
| 47 | +* rdoc 6.13.1 |
| 48 | +* win32ole 1.9.2 |
| 49 | +* irb 1.15.2 |
| 50 | +* reline 0.6.1 |
| 51 | +* readline 0.0.4 |
| 52 | +* fiddle 1.1.6 |
| 53 | + |
| 54 | +## 호환성 문제 |
| 55 | + |
| 56 | +주의: 기능 버그 수정은 포함되어 있지 않습니다. |
| 57 | + |
| 58 | + |
| 59 | + |
| 60 | +## 표준 라이브러리 호환성 문제 |
| 61 | + |
| 62 | + |
| 63 | +## C API 변경 |
| 64 | + |
| 65 | + |
| 66 | +## JIT |
| 67 | + |
| 68 | +* YJIT |
| 69 | + * YJIT 통계 |
| 70 | + * `ratio_in_yjit`은 더 이상 기본 빌드에서 작동하지 않습니다. |
| 71 | + `--yjit-stats`에서 활성화하려면 `configure`에서 `--enable-yjit=stats`를 사용하세요. |
| 72 | + * 기본 통계에 `invalidate_everything`이 추가되었습니다. TracePoint에 의해 모든 코드가 무효화될 때 증가합니다. |
| 73 | + * `RubyVM::YJIT.enable`에 `mem_size:`와 `call_threshold:` 옵션을 추가합니다. |
| 74 | +* ZJIT |
| 75 | + * 실험적인 메서드 기반 JIT 컴파일러를 추가합니다. |
| 76 | + `--zjit` 지원을 활성화하려면 `configure`에서 `--enable-zjit`을 사용하세요. |
| 77 | + * Ruby 4.0.0-preview2 기준으로 ZJIT은 아직 대부분의 벤치마크에서 속도 향상을 제공할 준비가 되어 있지 않습니다. |
| 78 | + 아직 ZJIT을 평가하지 마시고, Ruby 4.0 릴리스를 기다려 주세요. |
| 79 | +* RJIT |
| 80 | + * `--rjit`이 제거되었습니다. 서드파티 JIT API 구현은 |
| 81 | + [ruby/rjit](https://github.com/ruby/rjit) 저장소로 이동할 예정입니다. |
| 82 | + |
| 83 | +## 그 이외의 변경 |
| 84 | + |
| 85 | + |
| 86 | + |
| 87 | +더 자세한 내용은 [NEWS](https://github.com/ruby/ruby/blob/{{ release.tag }}/NEWS.md)나 |
| 88 | +[커밋 로그](https://github.com/ruby/ruby/compare/v3_4_0...{{ release.tag }})를 |
| 89 | +확인해 주세요. |
| 90 | + |
| 91 | +이러한 변경사항에 따라, Ruby 3.4.0 이후로 [파일 {{ release.stats.files_changed }}개 수정, {{ release.stats.insertions }}줄 추가(+), {{ release.stats.deletions }}줄 삭제(-)](https://github.com/ruby/ruby/compare/v3_4_0...{{ release.tag }}#file_bucket)가 |
| 92 | +이루어졌습니다! |
| 93 | + |
| 94 | +## 다운로드 |
| 95 | + |
| 96 | +* <{{ release.url.gz }}> |
| 97 | + |
| 98 | + SIZE: {{ release.size.gz }} |
| 99 | + SHA1: {{ release.sha1.gz }} |
| 100 | + SHA256: {{ release.sha256.gz }} |
| 101 | + SHA512: {{ release.sha512.gz }} |
| 102 | + |
| 103 | +* <{{ release.url.xz }}> |
| 104 | + |
| 105 | + SIZE: {{ release.size.xz }} |
| 106 | + SHA1: {{ release.sha1.xz }} |
| 107 | + SHA256: {{ release.sha256.xz }} |
| 108 | + SHA512: {{ release.sha512.xz }} |
| 109 | + |
| 110 | +* <{{ release.url.zip }}> |
| 111 | + |
| 112 | + SIZE: {{ release.size.zip }} |
| 113 | + SHA1: {{ release.sha1.zip }} |
| 114 | + SHA256: {{ release.sha256.zip }} |
| 115 | + SHA512: {{ release.sha512.zip }} |
| 116 | + |
| 117 | +## Ruby란 |
| 118 | + |
| 119 | +Ruby는 1993년에 Matz(마츠모토 유키히로) 씨가 처음 개발했고, |
| 120 | +현재는 오픈 소스로서 개발되고 있습니다. 여러 플랫폼에서 동작하며, |
| 121 | +특히 웹 개발에서 전 세계적으로 이용되고 있습니다. |
| 122 | + |
| 123 | +[Feature #21047]: https://bugs.ruby-lang.org/issues/21047 |
| 124 | +[Bug #21049]: https://bugs.ruby-lang.org/issues/21049 |
| 125 | +[Feature #20610]: https://bugs.ruby-lang.org/issues/20610 |
| 126 | +[Feature #19908]: https://bugs.ruby-lang.org/issues/19908 |
| 127 | +[Feature #20724]: https://bugs.ruby-lang.org/issues/20724 |
| 128 | +[Feature #21275]: https://bugs.ruby-lang.org/issues/21275 |
0 commit comments