ํฌ๋ฆฌ์Šคํƒˆ 0.34.0 ์ถœ์‹œ

Ruby ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผ๋œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ธ Crystal์˜ ์ƒˆ ๋ฒ„์ „์ด ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์–ธ์–ด์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์€ ๋ชจ๋“  I/O ์ž‘์—…์ด ๋น„๋™๊ธฐ์‹์ธ "๋‚ด์žฅ" ์ด๋ฒคํŠธ ๋ฃจํ”„๊ฐ€ ์žˆ๋Š” ๋Ÿฐํƒ€์ž„์ด๋ฉฐ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ ์ค‘์— ํ”Œ๋ž˜๊ทธ์— ์˜ํ•ด ํ™œ์„ฑํ™”๋˜๋ฏ€๋กœ) C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ณ  ํŽธ๋ฆฌํ•˜๊ฒŒ ์ž‘๋™๋ฉ๋‹ˆ๋‹ค.

๋ฒ„์ „ 0.34.0๋ถ€ํ„ฐ ์–ธ์–ด๋Š” ๊ณต์‹์ ์œผ๋กœ ์ฒซ ๋ฒˆ์งธ ์‹ค์ œ ๋ฆด๋ฆฌ์Šค(์˜ˆ: ๋ฒ„์ „ 1.0)๋ฅผ ํ–ฅํ•ด ๋‚˜์•„๊ฐ€๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

Crystal์˜ ์ƒˆ ๋ฒ„์ „์—๋Š” ์ค‘์š”๋„์— ๋”ฐ๋ผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ณ€๊ฒฝ ๋ฐ ๊ฐœ์„  ์‚ฌํ•ญ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ƒˆ๋กœ์šด ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ API์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ, ์ด์ „ ๋ฒ„์ „๊ณผ ๋‹ฌ๋ฆฌ ๋‹ค๋ฅธ ๋ฐฑ์—”๋“œ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๊ณ  '์†Œ์Šค'์— ๋”ฐ๋ผ ์ด๋Ÿฌํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ค๋ฅด๊ฒŒ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • C ๊ฐœ๋ฐœ ์„ธ๊ณ„์˜ ๊ธฐ์ดˆ, ์—๋ฅด๋…ธ ะธ WinErrorI/O ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ์— ์‚ฌ์šฉ๋˜๋Š” ๋Š” ์˜ˆ์™ธ ๊ณ„์ธต ๊ตฌ์กฐ ๋•๋ถ„์— ๊ณผ๊ฑฐ์˜ ์ผ์ด ๋˜์–ด๊ฐ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. IO::์˜ค๋ฅ˜ (๊ทธ๋Ÿฌ๋‚˜ ์•„์ง Errno ์‚ฌ์šฉ์„ ๊ธˆ์ง€ํ•˜๋Š” ์‚ฌ๋žŒ์€ ์—†์Šต๋‹ˆ๋‹ค).

  • ์—ฐ์‚ฐ์ž์—์„œ else nil์˜ ์ž๋™ ๋Œ€์ฒด๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฝ์šฐ/์–ธ์ œ/๋‹ค๋ฅธ ๊ฒฝ์šฐ. ์ด๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์‹ค์ˆ˜๋กœ ๋ถ„๊ธฐ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฑด๋„ˆ๋›ฐ๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์–ธ์ œ ์—ด๊ฑฐํ˜•๊ณผ ๊ฐ™์€ ๊ฒฐ์ •์  ์‚ฌ๋ก€๋ฅผ ์ผ์น˜์‹œํ‚ค๊ณ  Union์—์„œ ์œ ํ˜•์„ ์ „๋‹ฌํ•  ๋•Œ. ์ฆ‰, ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ์ด ์ฝ”๋“œ๋Š” ํ•˜๋‚˜๋ฅผ ๋” ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋” ์ด์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ธ์ œ (Char์ธ ๊ฒฝ์šฐ) ๋˜๋Š” ์ž‘์—… ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด-๊ฐ€์ง€:

a = 1 || 'x' || "ํ‘ธ"
๊ฒฝ์šฐ
Int32์ผ ๋•Œ
#โ€ฆ
๋ฌธ์ž์—ด์ผ ๋•Œ
#โ€ฆ
end

  • ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜ ๋น„ํ™œ์„ฑํ™”_์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋” ์ด์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ค๋ฒ„ํ”Œ๋กœ ์ž‘์—…์˜ ๊ฒฝ์šฐ &+, &-, &* ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฐฐ์—ด#์ฑ„์šฐ๊ธฐ ์ด์ œ ์–ด๋ฆฌ์„์€ ๋ฃจํ”„๋ฅผ ํ•˜๋‚˜์˜ ๊ฐ„๋‹จํ•œ memset์œผ๋กœ ๋Œ€์ฒดํ•œ ๋•๋ถ„์— ์ด์•Œ๋ณด๋‹ค ๋” ๋น ๋ฅด๊ฒŒ ๋‚ ์•„๊ฐ‘๋‹ˆ๋‹ค.

  • ์—ญ์„ค์ ์ด๊ฒŒ๋„ ์ƒค๋“œ(ํŒจํ‚ค์ง€) ๊ด€๋ฆฌ์ž๋ผ๊ณ  ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค. ํŒŒํŽธ์—์„œ๋Š” ์ด์ œ CocoaPods(Swift) ๋ฐ Builder(Ruby)์— ์žˆ๋Š” ๋” ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ธ Molinillo ์ข…์†์„ฑ ๋งŒ์กฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์ถ”๊ฐ€ ์ง€์› LLVM 10, ์ด๋ก ์ ์œผ๋กœ๋Š” ์ƒ์‚ฐ์„ฑ, ์•ˆ์ •์„ฑ ๋“ฑ์ด ์–ด๋Š ์ •๋„ ํ–ฅ์ƒ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

... ๊ทธ๋ฆฌ๊ณ  ๋‚ด ์ฃผ๊ด€์ ์ธ ์˜๊ฒฌ์œผ๋กœ๋Š” ๋œ ์ค‘์š”ํ•œ ๊ฐœ์„  ์‚ฌํ•ญ์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Crystal์€ LLVM์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋œ ์–ธ์–ด์ด๋ฏ€๋กœ ๋•Œ๋•Œ๋กœ ํ•ด์„๋œ "ํ˜•์ œ"๋ณด๋‹ค ๋” ๋น ๋ฅด๊ณ  ๊ฐ„๋‹จํ•˜๋ฉฐ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋™์‹œ์— ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ƒ๋‹นํžˆ ๋น ๋ฅธ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Golang๊ณผ ๋น„๊ตํ•˜๋ฉด ์™„์ „ํžˆ ์™„์ „ํ•œ OOP, ์ œ๋„ค๋ฆญ ์ง€์›, ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ๊ตฌ๋ฌธ์œผ๋กœ ์ธํ•ด ๋ˆˆ์— ๋•๋‹ˆ๋‹ค. ๊ทธ ๋ชฉ์ ์€ Nim๊ณผ ๋Œ€์ฒด๋กœ ์œ ์‚ฌํ•˜์ง€๋งŒ ๋™์‹œ์— API ๋ฌด๊ธฐ๊ณ ์— ์ž˜ ๋ฌธ์„œํ™”๋˜์–ด ์žˆ๊ณ  ํŽธ๋ฆฌํ•˜๋ฉฐ ๊ณ ํ’ˆ์งˆ์˜ ๋งŽ์€ ๋„๊ตฌ๊ฐ€ ์ง€์›๋˜๋Š” ๋•๋ถ„์— "์ง€๊ธˆ ์—ฌ๊ธฐ"์˜ ์‹ค์ œ ์‚ฌ์šฉ์— ๋ถ„๋ช…ํžˆ ์ดˆ์ ์„ ๋งž์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์–ธ์–ด ๊ฐœ๋ฐœ์ž์ด๋ฏ€๋กœ ๋งค์šฐ ์•ˆ์ •์ ์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : linux.org.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€