Skip to content

Commit 28f4f59

Browse files
authored
Ruby 3.3.0-preview1 Released (#3058)
1 parent 34d4d12 commit 28f4f59

File tree

5 files changed

+363
-0
lines changed

5 files changed

+363
-0
lines changed

_data/branches.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@
88
# date: date of first stable release (YYYY-MM-DD)
99
# eol_date: date of EOL (YYYY-MM-DD)
1010

11+
- name: 3.3
12+
status: preview
13+
date:
14+
eol_date:
15+
1116
- name: 3.2
1217
status: normal maintenance
1318
date: 2022-12-25

_data/downloads.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
# optional
55
preview:
66

7+
- 3.3.0-preview1
78

89
stable:
910

_data/releases.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,37 @@
1919
# In order to get the release listed on the downloads page,
2020
# you also need to add an entry to `_data/downloads.yml'.
2121

22+
# 3.3 series
23+
24+
- version: 3.3.0-preview1
25+
date: 2023-05-12
26+
post: /en/news/2023/05/12/ruby-3-3-0-preview1-released/
27+
tag: v3_3_0_preview1
28+
stats:
29+
files_changed: 1922
30+
insertions: 75283
31+
deletions: 44896
32+
url:
33+
gz: https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview1.tar.gz
34+
zip: https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview1.zip
35+
xz: https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview1.tar.xz
36+
size:
37+
gz: 20428213
38+
zip: 24846962
39+
xz: 15074600
40+
sha1:
41+
gz: 5445eec1cd9ddb44e03e74568cac94209c91b42d
42+
zip: 31774fa653c54107b6afc30adda3a0350d8f41d2
43+
xz: 4c22ebca287c87811e1050bf4d59b7d32255b212
44+
sha256:
45+
gz: c3454a911779b8d747ab0ea87041030d002d533edacb2485fe558b7084da25ed
46+
zip: 6ecafecf83f2cacf446b2326012f2b6ee1a0614d8dd29bb1fb3f105c27e2c553
47+
xz: ae300b49e06c13087dd163b97eddd38db895dc8e0c9904284119795d75303fbb
48+
sha512:
49+
gz: 0f891f140ddc6372aa7c4459f8784126e0c341db7b80e72c51e441c5153c43c2d7b965f7807c076862ac84b9b8b0c6a66bbf66fc341746016151397bb21c782a
50+
zip: 794bef847fefbbdbbdced85975a00c9289ef6464810408af3f0f2055052d6b5ef5576dbd41e0d87bb73f1ad276d8e27c36018610f8e2b9936828c0e692f611f0
51+
xz: 46c1134dba5810847f7f6b4298900a91f5225679d7873548b271f4ef2ad1dc168722562a2e468a2ccf136314176ee613d8c7792fd4411a3f7a44c80b93b417ee
52+
2253
# 3.2 series
2354

2455
- version: 3.2.2
Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
---
2+
layout: news_post
3+
title: "Ruby 3.3.0-preview1 Released"
4+
author: "naruse"
5+
translator:
6+
date: 2023-05-12 00:00:00 +0000
7+
lang: en
8+
---
9+
10+
{% assign release = site.data.releases | where: "version", "3.3.0-preview1" | first %}
11+
12+
We are pleased to announce the release of Ruby {{ release.version }}. Ruby 3.3 adds a new pure-Ruby JIT compiler named RJIT, uses lrama as a parser generator, and many performance improvements especially YJIT.
13+
14+
## RJIT
15+
16+
* Introduced a pure-Ruby JIT compiler RJIT and replaced MJIT.
17+
* RJIT supports only x86\_64 architecture on Unix platforms.
18+
* Unlike MJIT, it doesn't require a C compiler at runtime.
19+
* RJIT exists only for experimental purposes.
20+
* You should keep using YJIT in production.
21+
* If you are interested in developing JIT for Ruby, please check out [k0kubun's presentation on Day 3 of RubyKaigi](https://rubykaigi.org/2023/presentations/k0kubun.html#day3).
22+
23+
## Use Lrama instead of Bison
24+
25+
* Replace Bison with [Lrama LALR parser generator](https://github.com/yui-knk/lrama) [Feature #19637]
26+
* If you have interest, please see [The future vision of Ruby Parser](https://rubykaigi.org/2023/presentations/spikeolaf.html)
27+
28+
## YJIT
29+
30+
* Significant performance improvements over 3.2
31+
* Splat and rest arguments support has been improved.
32+
* Registers are allocated for stack operations of the virtual machine.
33+
* More calls with optional arguments are compiled.
34+
* `Integer#!=`, `String#!=`, `Kernel#block_given?`, `Kernel#is_a?`,
35+
`Kernel#instance_of?`, `Module#===` are specially optimized.
36+
* Instance variables no longer exit to the interpreter
37+
with megamorphic Object Shapes.
38+
* Metadata for compiled code uses a lot less memory.
39+
* Improved code generation on ARM64
40+
* Option to start YJIT in paused mode and then later enable it manually
41+
* `--yjit-pause` and `RubyVM::YJIT.resume`
42+
* This can be used to enable YJIT only once your application is done booting
43+
* Exit tracing option now supports sampling
44+
* `--trace-exits-sample-rate=N`
45+
* Multiple bug fixes
46+
47+
48+
49+
## Other Notable New Features
50+
51+
### Language
52+
53+
54+
55+
## Performance improvements
56+
57+
* `defined?(@ivar)` is optimized with Object Shapes.
58+
59+
## Other notable changes since 3.2
60+
61+
62+
63+
## Compatibility issues
64+
65+
Note: Excluding feature bug fixes.
66+
67+
### Removed constants
68+
69+
The following deprecated constants are removed.
70+
71+
72+
73+
### Removed methods
74+
75+
The following deprecated methods are removed.
76+
77+
78+
79+
## Stdlib compatibility issues
80+
81+
### `ext/readline` is retired
82+
83+
* We have `reline` that is pure Ruby implementation compatible with `ext/readline` API. We rely on `reline` in the future. If you need to use `ext/readline`, you can install `ext/readline` via rubygems.org with `gem install readline-ext`.
84+
* We no longer need to install libraries like `libreadline` or `libedit`.
85+
86+
## C API updates
87+
88+
### Updated C APIs
89+
90+
The following APIs are updated.
91+
92+
93+
94+
### Removed C APIs
95+
96+
The following deprecated APIs are removed.
97+
98+
99+
100+
## Standard library updates
101+
102+
103+
104+
The following default gems are updated.
105+
106+
* RubyGems 3.5.0.dev
107+
* bigdecimal 3.1.4
108+
* bundler 2.5.0.dev
109+
* csv 3.2.7
110+
* fiddle 1.1.2
111+
* fileutils 1.7.1
112+
* irb 1.6.4
113+
* optparse 0.4.0.pre.1
114+
* psych 5.1.0
115+
* reline 0.3.3
116+
* stringio 3.0.7
117+
* strscan 3.0.7
118+
* syntax_suggest 1.0.4
119+
* time 0.2.2
120+
* timeout 0.3.2
121+
* uri 0.12.1
122+
123+
The following bundled gems are updated.
124+
125+
* minitest 5.18.0
126+
* rbs 3.1.0
127+
* typeprof 0.21.7
128+
* debug 1.8.0
129+
130+
See GitHub releases like [Logger](https://github.com/ruby/logger/releases) or
131+
changelog for details of the default gems or bundled gems.
132+
133+
See [NEWS](https://github.com/ruby/ruby/blob/{{ release.tag }}/NEWS.md)
134+
or [commit logs](https://github.com/ruby/ruby/compare/v3_2_0...{{ release.tag }})
135+
for more details.
136+
137+
With those changes, [{{ release.stats.files_changed }} files changed, {{ release.stats.insertions }} insertions(+), {{ release.stats.deletions }} deletions(-)](https://github.com/ruby/ruby/compare/v3_2_0...{{ release.tag }}#file_bucket)
138+
since Ruby 3.2.0!
139+
140+
Merry Christmas, Happy Holidays, and enjoy programming with Ruby 3.3!
141+
142+
## Download
143+
144+
* <{{ release.url.gz }}>
145+
146+
SIZE: {{ release.size.gz }}
147+
SHA1: {{ release.sha1.gz }}
148+
SHA256: {{ release.sha256.gz }}
149+
SHA512: {{ release.sha512.gz }}
150+
151+
* <{{ release.url.xz }}>
152+
153+
SIZE: {{ release.size.xz }}
154+
SHA1: {{ release.sha1.xz }}
155+
SHA256: {{ release.sha256.xz }}
156+
SHA512: {{ release.sha512.xz }}
157+
158+
* <{{ release.url.zip }}>
159+
160+
SIZE: {{ release.size.zip }}
161+
SHA1: {{ release.sha1.zip }}
162+
SHA256: {{ release.sha256.zip }}
163+
SHA512: {{ release.sha512.zip }}
164+
165+
## What is Ruby
166+
167+
Ruby was first developed by Matz (Yukihiro Matsumoto) in 1993,
168+
and is now developed as Open Source. It runs on multiple platforms
169+
and is used all over the world especially for web development.
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
---
2+
layout: news_post
3+
title: "Ruby 3.3.0-preview1 リリース"
4+
author: "naruse"
5+
translator:
6+
date: 2023-05-12 00:00:00 +0000
7+
lang: ja
8+
---
9+
10+
Ruby 3.3.0-preview1 が公開されました。Ruby 3.3ではRJITという新たなJITの仕組みを追加するとともに、YJITの高速化など様々な改善が行われています。
11+
12+
{% assign release = site.data.releases | where: "version", "3.3.0-preview1" | first %}
13+
14+
## RJIT
15+
16+
* Introduced a pure-Ruby JIT compiler RJIT and replaced MJIT.
17+
* RJIT supports only x86\_64 architecture on Unix platforms.
18+
* Unlike MJIT, it doesn't require a C compiler at runtime.
19+
* RJIT exists only for experimental purposes.
20+
* You should keep using YJIT in production.
21+
* If you are interested in developing JIT for Ruby, please check out [k0kubun's presentation on Day 3 of RubyKaigi](https://rubykaigi.org/2023/presentations/k0kubun.html#day3).
22+
23+
## Use Lrama instead of Bison
24+
25+
* Replace Bison with [Lrama LALR parser generator](https://github.com/yui-knk/lrama) [Feature #19637]
26+
* If you have interest, please see [The future vision of Ruby Parser](https://rubykaigi.org/2023/presentations/spikeolaf.html)
27+
* See also: [Ruby Parser開発日誌 (5) - Lrama LALR (1) parser generatorを実装した](https://yui-knk.hatenablog.com/entry/2023/03/13/101951)
28+
29+
30+
## YJIT
31+
32+
* Significant performance improvements over 3.2
33+
* Splat and rest arguments support has been improved.
34+
* Registers are allocated for stack operations of the virtual machine.
35+
* More calls with optional arguments are compiled.
36+
* `Integer#!=`, `String#!=`, `Kernel#block_given?`, `Kernel#is_a?`,
37+
`Kernel#instance_of?`, `Module#===` are specially optimized.
38+
* Instance variables no longer exit to the interpreter
39+
with megamorphic Object Shapes.
40+
* Metadata for compiled code uses a lot less memory.
41+
* Improved code generation on ARM64
42+
* Option to start YJIT in paused mode and then later enable it manually
43+
* `--yjit-pause` and `RubyVM::YJIT.resume`
44+
* This can be used to enable YJIT only once your application is done booting
45+
* Exit tracing option now supports sampling
46+
* `--trace-exits-sample-rate=N`
47+
* Multiple bug fixes
48+
49+
*
50+
51+
## その他の主要な新機能
52+
53+
### 言語機能
54+
55+
56+
## パフォーマンスの改善
57+
58+
## その他の注目すべき 3.2 からの変更点
59+
60+
## 互換性に関する変更
61+
62+
### 定数の削除
63+
64+
以下の非推奨定数は削除されました
65+
66+
67+
68+
### メソッドの削除
69+
70+
以下の非推奨のメソッドは削除されました
71+
72+
73+
## 標準添付ライブラリの互換性に関する変更
74+
75+
### `ext/readline` の削除
76+
77+
* 今後は Ruby で書かれた GNU Readline の互換ライブラリである `reline` をすべての環境で標準で利用し、`ext/readline` は削除されました。以前の `ext/readline` が必要なユーザーは `gem install readline-ext` でインストールすることができます。
78+
* この変更により、Ruby のインストール時に `libreadline``libedit` などのライブラリのインストールは不要となります。
79+
80+
## C API の変更
81+
82+
### C API の更新
83+
84+
以下の API が更新されました
85+
86+
### C API の削除
87+
88+
以下の非推奨の API は削除されました
89+
90+
91+
## 標準添付ライブラリのアップデート
92+
93+
94+
95+
* 以下の default gems のバージョンがアップデートされました。
96+
97+
* RubyGems 3.5.0.dev
98+
* bigdecimal 3.1.4
99+
* bundler 2.5.0.dev
100+
* csv 3.2.7
101+
* fiddle 1.1.2
102+
* fileutils 1.7.1
103+
* irb 1.6.4
104+
* optparse 0.4.0.pre.1
105+
* psych 5.1.0
106+
* reline 0.3.3
107+
* stringio 3.0.7
108+
* strscan 3.0.7
109+
* syntax_suggest 1.0.4
110+
* time 0.2.2
111+
* timeout 0.3.2
112+
* uri 0.12.1
113+
114+
* 以下の bundled gems のバージョンがアップデートされました。
115+
116+
* minitest 5.18.0
117+
* rbs 3.1.0
118+
* typeprof 0.21.7
119+
* debug 1.8.0
120+
121+
122+
123+
default gems と bundled gems の詳細については [Logger の GitHub Releases](https://github.com/ruby/logger/releases) のような GitHub releases または changelog ファイルを参照してください。
124+
125+
126+
その他詳細については、[NEWS](https://github.com/ruby/ruby/blob/{{ release.tag }}/NEWS.md) ファイルまたは[コミットログ](https://github.com/ruby/ruby/compare/v3_2_0...{{ release.tag }})を参照してください。
127+
128+
なお、こうした変更により、Ruby 3.2.0 以降では [{{ release.stats.files_changed }} 個のファイルに変更が加えられ、{{ release.stats.insertions }} 行の追加と {{ release.stats.deletions }} 行の削除が行われました](https://github.com/ruby/ruby/compare/v3_2_0...{{ release.tag }}#file_bucket) !
129+
130+
メリークリスマス、Ruby 3.3 とともによいお年をお迎えください!
131+
132+
## ダウンロード
133+
134+
* <{{ release.url.gz }}>
135+
136+
SIZE: {{ release.size.gz }}
137+
SHA1: {{ release.sha1.gz }}
138+
SHA256: {{ release.sha256.gz }}
139+
SHA512: {{ release.sha512.gz }}
140+
141+
* <{{ release.url.xz }}>
142+
143+
SIZE: {{ release.size.xz }}
144+
SHA1: {{ release.sha1.xz }}
145+
SHA256: {{ release.sha256.xz }}
146+
SHA512: {{ release.sha512.xz }}
147+
148+
* <{{ release.url.zip }}>
149+
150+
SIZE: {{ release.size.zip }}
151+
SHA1: {{ release.sha1.zip }}
152+
SHA256: {{ release.sha256.zip }}
153+
SHA512: {{ release.sha512.zip }}
154+
155+
## Ruby とは
156+
157+
Rubyはまつもとゆきひろ (Matz) によって1993年に開発が始められ、今もオープンソースソフトウェアとして開発が続けられています。Rubyは様々なプラットフォームで動き、世界中で、特にWebアプリケーション開発のために使われています。

0 commit comments

Comments
 (0)