|
| 1 | +--- |
| 2 | +layout: news_post |
| 3 | +title: "Ruby 4.0.0 preview2 已发布" |
| 4 | +author: "naruse" |
| 5 | +translator: "GAO Jun" |
| 6 | +date: 2025-11-17 00:00:00 +0000 |
| 7 | +lang: zh_cn |
| 8 | +--- |
| 9 | + |
| 10 | +{% assign release = site.data.releases | where: "version", "4.0.0-preview2" | first %} |
| 11 | +我们很高兴地宣布 Ruby {{ release.version }} 已发布。Ruby 4.0 更新 Unicode 版本至 17.0.0,还有一些其他变更。 |
| 12 | + |
| 13 | +## 语言变化 |
| 14 | + |
| 15 | +* `*nil` 不再调用 `nil.to_a`,就像 `**nil` 不再调用 `nil.to_hash`。 [[Feature #21047]] |
| 16 | + |
| 17 | +## 核心类更新 |
| 18 | + |
| 19 | +注意:我们只列出了重要的核心类更新。 |
| 20 | + |
| 21 | +* Binding |
| 22 | + |
| 23 | + * `Binding#local_variables` 不再包含数字引用参数(如 `_1`, `_2`)。 |
| 24 | + 同样, `Binding#local_variable_get` 和 `Binding#local_variable_set` 也会拒绝处理数字引用参数。 |
| 25 | + [[Bug #21049]] |
| 26 | + |
| 27 | +* IO |
| 28 | + |
| 29 | + * `IO.select` 允许使用 `Float::INFINITY` 作为超时参数。 |
| 30 | + [[Feature #20610]] |
| 31 | + |
| 32 | +* String |
| 33 | + |
| 34 | + * 更新 Unicode 版本至 17.0.0,更新 Emoji 版本至 17.0.0。 [[Feature #19908]][[Feature #20724]][[Feature #21275]] |
| 35 | + (同样适用于 Regexp) |
| 36 | + |
| 37 | + |
| 38 | +## 标准库更新 |
| 39 | + |
| 40 | +注意:我们只列出了重要的标准库更新。 |
| 41 | + |
| 42 | +* ostruct 0.6.1 |
| 43 | +* pstore 0.2.0 |
| 44 | +* benchmark 0.4.0 |
| 45 | +* logger 1.7.0 |
| 46 | +* rdoc 6.13.1 |
| 47 | +* win32ole 1.9.2 |
| 48 | +* irb 1.15.2 |
| 49 | +* reline 0.6.1 |
| 50 | +* readline 0.0.4 |
| 51 | +* fiddle 1.1.6 |
| 52 | + |
| 53 | +## 兼容性问题 |
| 54 | + |
| 55 | +注意:不包括错误问题修正。 |
| 56 | + |
| 57 | + |
| 58 | + |
| 59 | +## 标准库兼容性问题 |
| 60 | + |
| 61 | + |
| 62 | +## C API 更新 |
| 63 | + |
| 64 | + |
| 65 | +## JIT |
| 66 | + |
| 67 | +* YJIT |
| 68 | + * YJIT 统计 |
| 69 | + * `ratio_in_yjit` 在标准构建中不可用。 |
| 70 | + 可以在 `configure` 中设置 `--enable-yjit=stats` 并在调用时通过 `--yjit-stats` 来启用。 |
| 71 | + * 在默认统计中新增 `invalidate_everything`,当 TracePoint 失效代码时,此统计信息会递增。 |
| 72 | + * `RubyVM::YJIT.enable` 新增选项 `mem_size:` 和 `call_threshold:`。 |
| 73 | +* ZJIT |
| 74 | + * 新增基于方法的实验性 JIT 编译器。 |
| 75 | + 可以在 `configure` 中设置 `--enable-zjit`,并通过 `--zjit` 来启用。 |
| 76 | + * 截至 Ruby 4.0.0-preview2,ZJIT 还不能提升大多数基准测试的速度。 |
| 77 | + 请暂时不要对 ZJIT 进行评估,敬请期待 Ruby 4.0 的发布。 |
| 78 | +* RJIT |
| 79 | + * 移除 `--rjit`。我们将把第三方 JIT API 实现迁移到 [ruby/rjit](https://github.com/ruby/rjit) 代码库。 |
| 80 | + |
| 81 | +## 其他变化 |
| 82 | + |
| 83 | + |
| 84 | + |
| 85 | +更多详情,可参见 [NEWS](https://github.com/ruby/ruby/blob/{{ release.tag }}/NEWS.md) |
| 86 | +或 [提交日志](https://github.com/ruby/ruby/compare/v3_4_0...{{ release.tag }})。 |
| 87 | + |
| 88 | +自 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)! |
| 89 | + |
| 90 | +## 下载 |
| 91 | + |
| 92 | +* <{{ release.url.gz }}> |
| 93 | + |
| 94 | + 文件大小: {{ release.size.gz }} |
| 95 | + SHA1: {{ release.sha1.gz }} |
| 96 | + SHA256: {{ release.sha256.gz }} |
| 97 | + SHA512: {{ release.sha512.gz }} |
| 98 | + |
| 99 | +* <{{ release.url.xz }}> |
| 100 | + |
| 101 | + 文件大小: {{ release.size.xz }} |
| 102 | + SHA1: {{ release.sha1.xz }} |
| 103 | + SHA256: {{ release.sha256.xz }} |
| 104 | + SHA512: {{ release.sha512.xz }} |
| 105 | + |
| 106 | +* <{{ release.url.zip }}> |
| 107 | + |
| 108 | + 文件大小: {{ release.size.zip }} |
| 109 | + SHA1: {{ release.sha1.zip }} |
| 110 | + SHA256: {{ release.sha256.zip }} |
| 111 | + SHA512: {{ release.sha512.zip }} |
| 112 | + |
| 113 | +## Ruby 是什么 |
| 114 | + |
| 115 | +Ruby 最初由 Matz (松本行弘,Yukihiro Matsumoto) 于 1993 年开发, |
| 116 | +现在以开源软件的形式开发。它可以在多个平台上运行,并在全球得到广泛使用,尤其是 Web 开发领域。 |
| 117 | + |
| 118 | +[Feature #21047]: https://bugs.ruby-lang.org/issues/21047 |
| 119 | +[Bug #21049]: https://bugs.ruby-lang.org/issues/21049 |
| 120 | +[Feature #20610]: https://bugs.ruby-lang.org/issues/20610 |
| 121 | +[Feature #19908]: https://bugs.ruby-lang.org/issues/19908 |
| 122 | +[Feature #20724]: https://bugs.ruby-lang.org/issues/20724 |
| 123 | +[Feature #21275]: https://bugs.ruby-lang.org/issues/21275 |
0 commit comments