2023๋…„ 5์›” 18์ผยท1๋ถ„ ์ฝ๊ธฐ

Ruby 3.3.0์—์„œ ์ˆœ์ˆ˜ Ruby JIT ์ปดํŒŒ์ผ๋Ÿฌ์ธ RJIT ๊ณต๊ฐœ

Ruby 3.3.0 ์—…๋ฐ์ดํŠธ๋Š” YJIT ์ปดํŒŒ์ผ๋Ÿฌ์˜ ๋Œ€์•ˆ์ธ ์‹คํ—˜์ ์ธ ์ˆœ์ˆ˜ Ruby JIT ์ปดํŒŒ์ผ๋Ÿฌ์ธ RJIT๋ฅผ ์„ ๋ณด์ž…๋‹ˆ๋‹ค.

Ruby 3.3.0์—์„œ ์ˆœ์ˆ˜ Ruby JIT ์ปดํŒŒ์ผ๋Ÿฌ์ธ RJIT ๊ณต๊ฐœ

๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ํ–ฅํ›„ ๊ฐœ์„  ์‚ฌํ•ญ์ธ Ruby 3.3.0์€ RJIT๋ผ๋Š” ์‹คํ—˜์ ์ธ ์ˆœ์ˆ˜ Ruby ์ ์‹œ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์„ ๋ณด์ž…๋‹ˆ๋‹ค. ์ด ์—…๋ฐ์ดํŠธ๋Š” ๋˜ํ•œ YJIT ์ปดํŒŒ์ผ๋Ÿฌ์— ๋Œ€ํ•œ ์ˆ˜๋งŽ์€ ๊ฐœ์„  ์‚ฌํ•ญ๊ณผ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

5์›” 12์ผ์— ๊ณต์‹ ์ถœ์‹œ๋œ Ruby 3.3.0์˜ ์ฒซ ๋ฒˆ์งธ ํ”„๋ฆฌ๋ทฐ๋Š” ruby-lang.org์—์„œ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ƒ์‚ฐ์šฉ์œผ๋กœ ๊ถŒ์žฅ๋˜์ง€๋Š” ์•Š์ง€๋งŒ RJIT๋Š” MJIT(Method-based Just in Time) ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. RJIT๋Š” MJIT์˜ ์š”๊ตฌ ์‚ฌํ•ญ์ธ ๋Ÿฐํƒ€์ž„ ๋™์•ˆ C ์ปดํŒŒ์ผ๋Ÿฌ์˜ ํ•„์š”์„ฑ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์‹คํ—˜์  ํŠน์„ฑ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  RJIT๋Š” ์—ฌ์ „ํžˆ ๊ณ ๊ธ‰์ด๋ฉฐ ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. Ruby ๊ฐœ๋ฐœ์ž๋Š” ํ”„๋กœ๋•์…˜ ๋ชฉ์ ์œผ๋กœ Shopify์—์„œ ๋งŒ๋“  YJIT(Yet Another Ruby JIT) ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ด Ruby 3.3.0 ์—…๋ฐ์ดํŠธ์—์„œ YJIT ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ƒ๋‹นํ•œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์˜ ์ด์ ์„ ์–ป์Šต๋‹ˆ๋‹ค. Ruby ์˜นํ˜ธ์ž๋“ค์€ ๊ฐ€์ƒ ๋จธ์‹ ์˜ ์Šคํƒ ์ž‘์—…์„ ์œ„ํ•œ ๋ ˆ์ง€์Šคํ„ฐ ํ• ๋‹น๊ณผ ์„ ํƒ์  ์ธ์ˆ˜๋กœ ๋” ๋งŽ์€ ํ˜ธ์ถœ์„ ์ปดํŒŒ์ผํ•˜๊ธฐ ์œ„ํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ์นญ์ฐฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ์ด์ œ ํ›จ์”ฌ ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ Arm64 ํ”Œ๋žซํผ์—์„œ ์ฝ”๋“œ ์ƒ์„ฑ์ด ๋ˆˆ์— ๋„๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. YJIT๋Š” ์ด์ œ ๋” ๋‚˜์€ ์ œ์–ด๋ฅผ ์œ„ํ•ด ์ผ์‹œ ์ค‘์ง€ ๋ชจ๋“œ์—์„œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ถ€ํŒ…์ด ์™„๋ฃŒ๋˜๋ฉด ์ˆ˜๋™์œผ๋กœ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ YJIT์˜ ์ข…๋ฃŒ ์ถ”์  ๊ธฐ๋Šฅ์€ ์ด๋ฒˆ ์—…๋ฐ์ดํŠธ์—์„œ ์ƒ˜ํ”Œ๋ง์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ปดํŒŒ์ผ๋Ÿฌ ๊ฐœ์„  ์™ธ์—๋„ Ruby 3.3.0์€ Object Shapes๋กœ defined?(@ivar)๋ฅผ ์ตœ์ ํ™”ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ๋˜ํ•œ RubyGems, bigdecimal, bundler ๋ฐ syntax_suggest๋ฅผ ํฌํ•จํ•˜์—ฌ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋‚ด์˜ ์—ฌ๋Ÿฌ ๊ธฐ๋ณธ gem์ด ์ƒˆ๋กœ ๊ณ ์ณ์กŒ์Šต๋‹ˆ๋‹ค.

Ruby์˜ ์ตœ์‹  ๋ฆด๋ฆฌ์Šค์ธ ๋ฒ„์ „ 3.2.2๊ฐ€ 3์›” 30์ผ์— ๋ฐœํ‘œ๋˜์–ด ์ค‘์š”ํ•œ ๋ณด์•ˆ ํŒจ์น˜๊ฐ€ ํฌํ•จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํฌ๋ฆฌ์Šค๋งˆ์Šค์— ๋ฐ๋ท”ํ•œ Ruby 3.2.0์€ WASI(WebAssembly System Interface)์— ๋Œ€ํ•œ ์ง€์›์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์Ÿ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์—์„œ Ruby์™€ ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์ง€์†์ ์ธ ๊ฐœ์„ ์€ ํ–ฅ์ƒ๋œ ์„ฑ๋Šฅ์„ ์œ„ํ•œ ๋” ๋‚˜์€ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๋ ค๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋…ธ๋ ฅ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

AppMaster ์™€ ๊ฐ™์€ No-code ํ”Œ๋žซํผ์€ ๊ธฐ์—…๊ณผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ์‹์„ ํ˜์‹ ์ ์œผ๋กœ ๋ณ€ํ™”์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด AppMaster ํ”Œ๋žซํผ์€ ์ฝ”๋”ฉ ์ „๋ฌธ ์ง€์‹์ด ์—†์–ด๋„ ๋ฐฑ์—”๋“œ, ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํฌ๊ด„์ ์ธ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Ruby ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์ตœ๊ทผ ๋ฐœ์ „์€ ๊ฐœ๋ฐœ์ž ์ƒ์‚ฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ํšจ์œจ์ ์ด๊ณ  ๋น„์šฉ ํšจ์œจ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ด๋Ÿฌํ•œ ์ง€์†์ ์ธ ์ถ”์„ธ๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

Easy to start
Create something amazing

Experiment with AppMaster with free plan.
When you will be ready you can choose the proper subscription.

Get Started
Ruby 3.3.0์—์„œ ์ˆœ์ˆ˜ Ruby JIT ์ปดํŒŒ์ผ๋Ÿฌ์ธ RJIT ๊ณต๊ฐœ | AppMaster