Skip to content

Commit d9cbca2

Browse files
authored
๐Ÿ”€ Translate "Ruby 3.1.0 Preview 1 Released" (ko) (#2889)
* Import original article * Translate "Ruby 3.1.0 Preview 1 Released" (ko) * Fix translation of "Ruby 3.1.0 Released" (ko)
1 parent dc42b73 commit d9cbca2

File tree

2 files changed

+220
-3
lines changed

2 files changed

+220
-3
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,217 @@
1+
---
2+
layout: news_post
3+
title: "Ruby 3.1.0 Preview 1 ๋ฆด๋ฆฌ์Šค"
4+
author: "naruse"
5+
translator: "yous"
6+
date: 2021-11-09 00:00:00 +0000
7+
lang: ko
8+
---
9+
10+
{% assign release = site.data.releases | where: "version", "3.1.0-preview1" | first %}
11+
12+
Ruby {{ release.version }} ๋ฆด๋ฆฌ์Šค๋ฅผ ์•Œ๋ฆฌ๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.
13+
14+
## YJIT: ์ƒˆ๋กœ์šด ์‹คํ—˜ ์ธํ”„๋กœ์„ธ์Šค JIT ์ปดํŒŒ์ผ๋Ÿฌ
15+
16+
17+
Ruby 3.1์€ Shopify์—์„œ ๊ฐœ๋ฐœํ•œ ์ƒˆ๋กœ์šด ์ธํ”„๋กœ์„ธ์Šค JIT ์ปดํŒŒ์ผ๋Ÿฌ์ธ YJIT๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
18+
19+
[Ruby 2.6์ด 2018๋…„๋„์— MJIT๋ฅผ ๋ฐœํ‘œ](https://www.ruby-lang.org/en/news/2018/12/25/ruby-2-6-0-released/)ํ•œ ๋’ค, ์„ฑ๋Šฅ์€ ๊ต‰์žฅํžˆ ํ–ฅ์ƒ๋˜์—ˆ์œผ๋ฉฐ [์ž‘๋…„์— ๋“œ๋””์–ด Ruby3x3](https://www.ruby-lang.org/ko/news/2020/12/25/ruby-3-0-0-released/)์„ ๋‹ฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Optcarrot์ด ์ธ์ƒ์ ์ธ ์†๋„ ํ–ฅ์ƒ์„ ๋ณด์—ฌ์คฌ์Œ์—๋„ JIT๋Š” ์‹ค์ œ ์„ธ๊ณ„์˜ ๋น„์ฆˆ๋‹ˆ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์— ๋„์›€์„ ์ฃผ์ง€๋Š” ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
20+
21+
์ตœ๊ทผ์— Shopify๋Š” ์ž์‚ฌ Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด Ruby์— ๋งŽ์€ ๊ธฐ์—ฌ๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค. YJIT๋Š” ์ค‘์š”ํ•œ ๊ธฐ์—ฌ๋กœ, Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
22+
23+
MJIT๊ฐ€ ๋ฉ”์„œ๋“œ ๊ธฐ๋ฐ˜์˜ JIT ์ปดํŒŒ์ผ๋Ÿฌ๊ณ  ์™ธ๋ถ€ C ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐ˜๋ฉด, YJIT๋Š” ๊ธฐ๋ณธ ๋ธ”๋ก ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์ด์šฉํ•˜๋ฉฐ JIT ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์œผ๋ฅธ ๊ธฐ๋ณธ ๋ธ”๋ก ๋ฒ„์ „ ๊ด€๋ฆฌ(Lazy Basic Block Versioning, LBBV)๋ฅผ ํ†ตํ•ด ์šฐ์„  ๋ฉ”์„œ๋“œ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์„ ์ปดํŒŒ์ผํ•˜๊ณ  ์ธ์ž์™€ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์ด ๋™์ ์œผ๋กœ ๊ฒฐ์ •๋˜๋ฉด ์ ์ง„์ ์œผ๋กœ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์„ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์„ค๋ช…์€ [YJIT: CRuby๋ฅผ ์œ„ํ•œ ๊ธฐ๋ณธ ๋ธ”๋ก ๋ฒ„์ „ ๊ด€๋ฆฌ JIT ์ปดํŒŒ์ผ๋Ÿฌ](https://dl.acm.org/doi/10.1145/3486606.3486781)๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
24+
25+
์ด ๊ธฐ์ˆ ์„ ์ด์šฉํ•˜์—ฌ, YJIT๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํ˜„์‹ค ์„ธ๊ณ„ ์†Œํ”„ํŠธ์›จ์–ด์— ๋น ๋ฅธ ์ค€๋น„ ์‹œ๊ฐ„๊ณผ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๊ฐ€์ ธ๋‹ค์ฃผ์–ด railsbench์—์„œ๋Š” ์ตœ๋Œ€ 22%, liquid-render์—์„œ๋Š” ์ตœ๋Œ€ 39%์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์ด ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค.
26+
27+
<!-- ่ฉฆใ™ไบบๅ‘ใ‘ใฎใŠ็Ÿฅใ‚‰ใ› -->
28+
29+
YJIT๋Š” ์•„์ง ์‹คํ—˜์ ์ธ ๊ธฐ๋Šฅ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด `--yjit` ๋ช…๋ น์–ด ์˜ต์…˜์„ ํ†ตํ•ด ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•„์ง์€ x86-64 ํ”Œ๋žซํผ์˜ macOS ๋ฐ Linux๋กœ๋งŒ ํ•œ์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
30+
31+
* <https://bugs.ruby-lang.org/issues/18229>
32+
* <https://shopify.engineering/yjit-just-in-time-compiler-cruby>
33+
* <https://www.youtube.com/watch?v=PBVLf3yfMs8>
34+
35+
## debug gem: ์ƒˆ๋กœ์šด ๋””๋ฒ„๊ฑฐ
36+
37+
์ƒˆ๋กœ์šด ๋””๋ฒ„๊ฑฐ์ธ [debug.gem](https://github.com/ruby/debug)์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. debug.gem์€ ๋น ๋ฅธ ๋””๋ฒ„๊ฑฐ ๊ตฌํ˜„์ฒด๋กœ ์›๊ฒฉ ๋””๋ฒ„๊น…, REPL ์ƒ‰์ƒ, IDE(VSCode) ํ†ตํ•ฉ ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. `lib/debug.rb` ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.
38+
39+
## error_highlight: ๋ฐฑํŠธ๋ ˆ์ด์Šค์—์„œ์˜ ์„ธ๋ฐ€ํ•œ ์—๋Ÿฌ ์œ„์น˜
40+
41+
๋นŒํŠธ์ธ gem์ธ error_highlight๊ฐ€ ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑํŠธ๋ ˆ์ด์Šค์— ์„ธ๋ฐ€ํ•œ ์—๋Ÿฌ ์œ„์น˜๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
42+
43+
```
44+
$ ruby test.rb
45+
test.rb:1:in `<main>': undefined method `time' for 1:Integer (NoMethodError)
46+
47+
1.time {}
48+
^^^^^
49+
Did you mean? times
50+
```
51+
52+
์ด gem์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. `--disable-error_highlight` ๋ช…๋ น์–ด ์˜ต์…˜์„ ํ†ตํ•ด ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์„ค๋ช…์€ [error_highlight ์ €์žฅ์†Œ](https://github.com/ruby/error_highlight)๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
53+
54+
## Irb ๊ฐœ์„ 
55+
56+
๋‹ค์Œ ํ”„๋ฆฌ๋ทฐ์—์„œ ์„ค๋ช…๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
57+
58+
## ๋‹ค๋ฅธ ์ฃผ๋ชฉํ•  ๋งŒํ•œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ
59+
60+
### ์–ธ์–ด
61+
62+
* ํ•ด์‹œ ๋ฆฌํ„ฐ๋Ÿด๊ณผ ํ‚ค์›Œ๋“œ ์ธ์ž์˜ ๊ฐ’์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [[Feature #14579]](https://bugs.ruby-lang.org/issues/14579)
63+
* `{x:, y:}`๋Š” `{x: x, y: y}`์˜ ํŽธ์˜ ๋ฌธ๋ฒ•์ž…๋‹ˆ๋‹ค.
64+
* `foo(x:, y:)`๋Š” `foo(x: x, y: y)`์˜ ํŽธ์˜ ๋ฌธ๋ฒ•์ž…๋‹ˆ๋‹ค.
65+
66+
* ํŒจํ„ด ๋งค์นญ์—์„œ ํ•€ ์—ฐ์‚ฐ์ž(`^`)์— ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [[Feature #17411]](https://bugs.ruby-lang.org/issues/17411)
67+
68+
```ruby
69+
Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a
70+
#=> [[3, 5], [5, 7], [11, 13]]
71+
```
72+
73+
74+
### RBS
75+
76+
RBS๋Š” Ruby ํ”„๋กœ๊ทธ๋žจ์˜ ๊ตฌ์กฐ๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์„ค๋ช…์€ [RBS ์ €์žฅ์†Œ](https://github.com/ruby/rbs)๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
77+
78+
Ruby 3.0.0 ์ดํ›„์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ:
79+
80+
* `rbs collection`์ด gem๋“ค์˜ RBS๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ([๋ฌธ์„œ](https://github.com/ruby/rbs/blob/master/docs/collection.md))
81+
* ๋นŒํŠธ์ธ ๋ฐ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋งŽ์€ ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ๊ฐฑ์‹ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
82+
* ๋‹ค์ˆ˜์˜ ๋ฒ„๊ทธ ์ˆ˜์ •๊ณผ ์„ฑ๋Šฅ ํ–ฅ์ƒ๋„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
83+
84+
๋” ๋งŽ์€ ์ •๋ณด๋Š” [CHANGELOG.md](https://github.com/ruby/rbs/blob/master/CHANGELOG.md)๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
85+
86+
### TypeProf
87+
88+
TypeProf๋Š” Ruby๋ฅผ ์œ„ํ•œ ์ •์  ํƒ€์ž… ๋ถ„์„๊ธฐ์ž…๋‹ˆ๋‹ค. ํƒ€์ž…์„ ๊ธฐ์ˆ ํ•˜์ง€ ์•Š์€ Ruby ์ฝ”๋“œ๋กœ๋ถ€ํ„ฐ RBS์˜ ํ”„๋กœํ† ํƒ€์ž…์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ [๋ฌธ์„œ](https://github.com/ruby/typeprof/blob/master/doc/doc.md)๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
89+
90+
Ruby 3.0.0 ์ดํ›„์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ:
91+
92+
* [์‹คํ—˜์ ์ธ IDE ์ง€์›](https://github.com/ruby/typeprof/blob/master/doc/ide.md)์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
93+
* ๋‹ค์ˆ˜์˜ ๋ฒ„๊ทธ ์ˆ˜์ •๊ณผ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
94+
95+
## ์„ฑ๋Šฅ ํ–ฅ์ƒ
96+
97+
* MJIT
98+
* Rails์™€ ๊ฐ™์€ ์ž‘์—…๋Ÿ‰์„ ์œ„ํ•˜์—ฌ `--jit-max-cache`์˜ ๊ธฐ๋ณธ๊ฐ’์ด 100์—์„œ 10000์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
99+
JIT ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋” ์ด์ƒ 1000๊ฐœ์˜ ๋ช…๋ น์–ด๋ณด๋‹ค ๊ธด ๋ฉ”์„œ๋“œ์˜ ์ปดํŒŒ์ผ์„ ๊ฑด๋„ˆ๋›ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
100+
* Rails์˜ Zeitwerk๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด, ํด๋ž˜์Šค ์ด๋ฒคํŠธ์˜ TracePoint๊ฐ€ ํ™œ์„ฑํ™”๋˜์—ˆ์„
101+
๋•Œ JIT๋œ ์ฝ”๋“œ๋ฅผ ๋” ์ด์ƒ ์ทจ์†Œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
102+
103+
## ๊ทธ ์™ธ 3.0 ์ดํ›„ ์ฃผ๋ชฉํ•  ๋งŒํ•œ ๋ณ€ํ™”
104+
105+
* ํ•œ ์ค„ ํŒจํ„ด ๋งค์นญ(์˜ˆ: `ary => [x, y, z]`)์€ ๋” ์ด์ƒ ์‹คํ—˜์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
106+
* ๋‹ค์ค‘ ๋Œ€์ž…์˜ ํ‰๊ฐ€ ์ˆœ์„œ๊ฐ€ ์‚ด์ง ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. [[Bug #4443]](https://bugs.ruby-lang.org/issues/4443)
107+
* `foo[0], bar[0] = baz, qux`๋Š” Ruby 3.0์—์„œ `baz`, `qux`, `foo`, `bar` ์ˆœ์œผ๋กœ ํ‰๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Ruby 3.1์—์„  `foo`, `bar`, `baz`, `qux` ์ˆœ์œผ๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.
108+
* ๋ณ€์ˆ˜ ๋„ˆ๋น„ ํ• ๋‹น: ๋ฌธ์ž์—ด (์‹คํ—˜์ ) [[Bug #18239]](https://bugs.ruby-lang.org/issues/18239)
109+
110+
### ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—…๋ฐ์ดํŠธ
111+
112+
* ๋‹ค์Œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
113+
* RubyGems
114+
* Bundler
115+
* RDoc 6.4.0
116+
* ReLine
117+
* JSON 2.6.0
118+
* Psych 4.0.2
119+
* FileUtils 1.6.0
120+
* Fiddle
121+
* StringIO 3.0.1
122+
* IO::Console 0.5.9
123+
* IO::Wait 0.2.0
124+
* CSV
125+
* Etc 1.3.0
126+
* Date 3.2.0
127+
* Zlib 2.1.1
128+
* StringScanner
129+
* IpAddr
130+
* Logger 1.4.4
131+
* OStruct 0.5.0
132+
* Irb
133+
* Racc 1.6.0
134+
* Delegate 0.2.0
135+
* Benchmark 0.2.0
136+
* CGI 0.3.0
137+
* Readline(C-ext) 0.1.3
138+
* Timeout 0.2.0
139+
* YAML 0.2.0
140+
* URI 0.11.0
141+
* OpenSSL
142+
* DidYouMean
143+
* Weakref 0.1.1
144+
* Tempfile 0.1.2
145+
* TmpDir 0.1.2
146+
* English 0.7.1
147+
* Net::Protocol 0.1.2
148+
* Net::Http 0.2.0
149+
* BigDecimal
150+
* OptionParser 0.2.0
151+
* Set
152+
* Find 0.1.1
153+
* Rinda 0.1.1
154+
* Erb
155+
* NKF 0.1.1
156+
* Base64 0.1.1
157+
* OpenUri 0.2.0
158+
* SecureRandom 0.1.1
159+
* Resolv 0.2.1
160+
* Resolv::Replace 0.1.0
161+
* Time 0.2.0
162+
* PP 0.2.1
163+
* Prettyprint 0.1.1
164+
* Drb 2.1.0
165+
* Pathname 0.2.0
166+
* Digest 3.1.0.pre2
167+
* Un 0.2.0
168+
* ๋‹ค์Œ ๋‚ด์žฅ gem์ด ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
169+
* minitest 5.14.4
170+
* power_assert 2.0.1
171+
* rake 13.0.6
172+
* test-unit 3.5.0
173+
* rbs 1.6.2
174+
* typeprof 0.20.0
175+
* ๋‹ค์Œ ๊ธฐ๋ณธ gem์€ ์ด์ œ ๋‚ด์žฅ gem์ž…๋‹ˆ๋‹ค.
176+
* net-ftp
177+
* net-imap
178+
* net-pop
179+
* net-smtp
180+
* matrix
181+
* prime
182+
183+
๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ [NEWS](https://github.com/ruby/ruby/blob/{{ release.tag }}/NEWS.md)๋‚˜
184+
[์ปค๋ฐ‹ ๋กœ๊ทธ](https://github.com/ruby/ruby/compare/v3_0_0...{{ release.tag }})๋ฅผ
185+
ํ™•์ธํ•ด์ฃผ์„ธ์š”.
186+
187+
์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋”ฐ๋ผ, Ruby 3.0.0 ์ดํ›„๋กœ [ํŒŒ์ผ {{ release.stats.files_changed }}๊ฐœ ์ˆ˜์ •, {{ release.stats.insertions }}์ค„ ์ถ”๊ฐ€(+), {{ release.stats.deletions }}์ค„ ์‚ญ์ œ(-)](https://github.com/ruby/ruby/compare/v3_0_0...{{ release.tag }}#file_bucket)๊ฐ€
188+
์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค!
189+
190+
## ๋‹ค์šด๋กœ๋“œ
191+
192+
* <{{ release.url.gz }}>
193+
194+
SIZE: {{ release.size.gz }}
195+
SHA1: {{ release.sha1.gz }}
196+
SHA256: {{ release.sha256.gz }}
197+
SHA512: {{ release.sha512.gz }}
198+
199+
* <{{ release.url.xz }}>
200+
201+
SIZE: {{ release.size.xz }}
202+
SHA1: {{ release.sha1.xz }}
203+
SHA256: {{ release.sha256.xz }}
204+
SHA512: {{ release.sha512.xz }}
205+
206+
* <{{ release.url.zip }}>
207+
208+
SIZE: {{ release.size.zip }}
209+
SHA1: {{ release.sha1.zip }}
210+
SHA256: {{ release.sha256.zip }}
211+
SHA512: {{ release.sha512.zip }}
212+
213+
## Ruby๋Š”
214+
215+
Ruby๋Š” 1993๋…„์— Matz(๋งˆ์ธ ๋ชจํ†  ์œ ํ‚คํžˆ๋กœ) ์”จ๊ฐ€ ์ฒ˜์Œ ๊ฐœ๋ฐœํ–ˆ๊ณ ,
216+
ํ˜„์žฌ๋Š” ์˜คํ”ˆ ์†Œ์Šค๋กœ์„œ ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์—์„œ ๋™์ž‘ํ•˜๋ฉฐ,
217+
ํŠนํžˆ ์›น ๊ฐœ๋ฐœ์—์„œ ์ „ ์„ธ๊ณ„์ ์œผ๋กœ ์ด์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

โ€Žko/news/_posts/2021-12-25-ruby-3-1-0-released.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Ruby {{ release.version }} ๋ฆด๋ฆฌ์Šค๋ฅผ ์•Œ๋ฆฌ๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. Ruby 3.1
1616

1717
Ruby 3.1์€ Shopify์—์„œ ๊ฐœ๋ฐœํ•œ ์ƒˆ๋กœ์šด ์ธํ”„๋กœ์„ธ์Šค JIT ์ปดํŒŒ์ผ๋Ÿฌ์ธ YJIT๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
1818

19-
[Ruby 2.6์ด 2018๋…„๋„์— MJIT๋ฅผ ๋ฐœํ‘œ](https://www.ruby-lang.org/en/news/2018/12/25/ruby-2-6-0-released/)ํ•œ ๋’ค, ์„ฑ๋Šฅ์€ ๊ต‰์žฅํžˆ ํ–ฅ์ƒ๋˜์—ˆ์œผ๋ฉฐ [์ž‘๋…„์— ๋“œ๋””์–ด Ruby3x3](https://www.ruby-lang.org/en/news/2020/12/25/ruby-3-0-0-released/)์„ ๋‹ฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Optcarrot์ด ์ธ์ƒ์ ์ธ ์†๋„ ํ–ฅ์ƒ์„ ๋ณด์—ฌ์คฌ์Œ์—๋„ JIT๋Š” ์‹ค์ œ ์„ธ๊ณ„์˜ ๋น„์ฆˆ๋‹ˆ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์— ๋„์›€์„ ์ฃผ์ง€๋Š” ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
19+
[Ruby 2.6์ด 2018๋…„๋„์— MJIT๋ฅผ ๋ฐœํ‘œ](https://www.ruby-lang.org/en/news/2018/12/25/ruby-2-6-0-released/)ํ•œ ๋’ค, ์„ฑ๋Šฅ์€ ๊ต‰์žฅํžˆ ํ–ฅ์ƒ๋˜์—ˆ์œผ๋ฉฐ [์ž‘๋…„์— ๋“œ๋””์–ด Ruby3x3](https://www.ruby-lang.org/ko/news/2020/12/25/ruby-3-0-0-released/)์„ ๋‹ฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Optcarrot์ด ์ธ์ƒ์ ์ธ ์†๋„ ํ–ฅ์ƒ์„ ๋ณด์—ฌ์คฌ์Œ์—๋„ JIT๋Š” ์‹ค์ œ ์„ธ๊ณ„์˜ ๋น„์ฆˆ๋‹ˆ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์— ๋„์›€์„ ์ฃผ์ง€๋Š” ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
2020

2121
์ตœ๊ทผ์— Shopify๋Š” ๊ทธ๋“ค์˜ Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด Ruby์— ๋งŽ์€ ๊ธฐ์—ฌ๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค. YJIT๋Š” ์ค‘์š”ํ•œ ๊ธฐ์—ฌ๋กœ, Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
2222

@@ -129,8 +129,8 @@ VS Code ํ™•์žฅ์ด ๊ฐ ๋ฉ”์„œ๋“œ ์ •์˜ ์œ„์— ์ถ”์ธก๋œ(ํ˜น์€ RBS ํŒŒ์ผ์— ๋ช…
129129
* MJIT
130130
* Rails์™€ ๊ฐ™์€ ์ž‘์—…๋Ÿ‰์„ ์œ„ํ•˜์—ฌ `--jit-max-cache`์˜ ๊ธฐ๋ณธ ๊ฐ’์ด 100์—์„œ 10000์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
131131
JIT ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋” ์ด์ƒ 1000๊ฐœ์˜ ๋ช…๋ น์–ด๋ณด๋‹ค ๊ธด ๋ฉ”์„œ๋“œ์˜ ์ปดํŒŒ์ผ์„ ๊ฑด๋„ˆ๋›ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
132-
* Rails์˜ Zeitwerk๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ, ํด๋ž˜์Šค ์ด๋ฒคํŠธ์˜ TracePoint๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด๋„
133-
JIT๋œ ์ฝ”๋“œ๋ฅผ ๋” ์ด์ƒ ์ทจ์†Œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
132+
* Rails์˜ Zeitwerk๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ, ํด๋ž˜์Šค ์ด๋ฒคํŠธ์˜ TracePoint๊ฐ€
133+
ํ™œ์„ฑํ™”๋˜์—ˆ์„ ๋•Œ JIT๋œ ์ฝ”๋“œ๋ฅผ ๋” ์ด์ƒ ์ทจ์†Œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
134134

135135
## ๊ทธ ์™ธ 3.0 ์ดํ›„ ์ฃผ๋ชฉํ•  ๋งŒํ•œ ๋ณ€ํ™”
136136

0 commit comments

Comments
ย (0)