Crystal 1.5 ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์ถ์๋์์ต๋๋ค. ๊ฐ๋ฐ์๋ค์ Ruby ์ธ์ด์ ๊ฐ๋ฐ ํธ์์ฑ๊ณผ C ์ธ์ด์ ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ํน์ฑ์ ๊ฒฐํฉํ๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. Crystal์ ๊ตฌ๋ฌธ์ Ruby์ ๋น์ทํ์ง๋ง ์์ ํ ํธํ๋์ง๋ ์์ง๋ง ์ผ๋ถ Ruby ํ๋ก๊ทธ๋จ์ ์์ ์์ด ์คํ๋ฉ๋๋ค. ์ปดํ์ผ๋ฌ ์ฝ๋๋ Crystal๋ก ์์ฑ๋์์ผ๋ฉฐ Apache 2.0 ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
์ธ์ด๋ ์ฝ๋์์ ๋ณ์ ๋ฐ ๋ฉ์๋ ์ธ์์ ์ ํ์ ๋ช ์์ ์ผ๋ก ์ง์ ํ ํ์ ์์ด ๊ตฌํ๋๋ ์ ์ ์ ํ ๊ฒ์ฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. Crystal ํ๋ก๊ทธ๋จ์ ์ปดํ์ผ ํ์์ ๋งคํฌ๋ก๊ฐ ํ๊ฐ๋๊ณ ์ฝ๋๊ฐ ์์ฑ๋์ด ์คํ ํ์ผ๋ก ์ปดํ์ผ๋ฉ๋๋ค. Crystal ํ๋ก๊ทธ๋จ์์๋ C๋ก ์์ฑ๋ ๋ฐ์ธ๋ฉ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ์ฝ๋ ์คํ์ ๋ณ๋ ฌํ๋ "spawn" ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ํ์ด๋ฒ๋ผ๋ ๊ฒฝ๋ ์ค๋ ๋ ํํ๋ก ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ฐจ๋จํ์ง ์๊ณ ๋น๋๊ธฐ ๋ชจ๋์์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์คํํ ์ ์์ต๋๋ค.
ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ CSV, YAML ๋ฐ JSON ์ฒ๋ฆฌ์ฉ ๋๊ตฌ, HTTP ์๋ฒ ์์ฑ์ฉ ๊ตฌ์ฑ ์์, WebSocket ์ง์์ ํฌํจํ ๊ด๋ฒ์ํ ๊ณตํต ๊ธฐ๋ฅ ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ฐ๋ฐ ๊ณผ์ ์์ Crystal ์ธ์ด๋ก ์ฝ๋๋ฅผ ๋ํํ์ผ๋ก ์คํํ๊ธฐ ์ํ ์น ์ธํฐํ์ด์ค(๊ธฐ๋ณธ์ ์ผ๋ก localhost:8080)๋ฅผ ์์ฑํ๋ "crystal play" ๋ช ๋ น์ ์ฌ์ฉํ๋ ๊ฒ์ด ํธ๋ฆฌํฉ๋๋ค.
์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ :
- ์ปดํ์ผ๋ฌ๋ ์ถ์ ๋ฉ์๋ ๊ตฌํ ๋ฐ ํด๋น ์ ์์์ ์ธ์ ์ด๋ฆ์ ์ผ์น ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ต๋๋ค. ์ด๋ฆ์ด ์ผ์นํ์ง ์์ผ๋ฉด ์ด์ ๊ฒฝ๊ณ ๊ฐ ํ์๋ฉ๋๋ค. abstract class FooAbstract abstract def foo(number : Int32) : Nil end class Foo < FooAbstract def foo(name : Int32) : Nil p name end end 6 | def foo(name : Int32) : Nil ^โ ๊ฒฝ๊ณ : ์์น ๋งค๊ฐ ๋ณ์ 'name'์ ์ฌ์ ์๋ ๋ฉ์๋ FooAbstract#foo(number : Int32)์ ๋งค๊ฐ ๋ณ์ 'number'์ ํด๋นํฉ๋๋ค. ์ด ๋งค๊ฐ ๋ณ์๋ ์ด๋ฆ์ด ๋ค๋ฅด๋ฉฐ ๋ช ๋ช ๋ ์ธ์ ์ ๋ฌ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
- ์ ํ์ด ์ง์ ๋์ง ์์ ๋ฉ์๋์ ์ธ์๋ฅผ ๋ณ์ ๊ฐ์ ํ ๋นํ๋ฉด ์ธ์๋ ์ด์ ํด๋น ๋ณ์์ ์ ํ์ผ๋ก ์ ํ๋ฉ๋๋ค. class Foo @x : Int64 def ์ด๊ธฐํ(x) @x = x # ๋งค๊ฐ๋ณ์ x๊ฐ ์ ๋ ฅ๋ฉ๋๋ค @x end end
- ๋ฉ์๋๋ ๋งคํฌ๋ก์ ๋งค๊ฐ๋ณ์์ ์ฃผ์์ ์ถ๊ฐํ ์ ์์ต๋๋ค. def foo(@[MaybeUnused] x); ๋ # ์์์ด
- ์์๋ฅผ ํํ์ ์ธ๋ฑ์ค ๋ฐ ์ด๋ฆ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. KEY = "s" foo = {s: "String", n: 0}์ foo[KEY].size๋ฅผ ๋ฃ์ต๋๋ค.
- ํ์ผ ๋ฐ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ญ์ ํ๊ธฐ ์ํ ์๋ก์ด File#delete? ๋ฉ์๋๊ฐ File API์ ์ถ๊ฐ๋์์ต๋๋ค. ๋ฐ Dir#delete?๋ ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๊ฐ ๋๋ฝ๋ ๊ฒฝ์ฐ false๋ฅผ ๋ฐํํฉ๋๋ค.
- File.tempfile ๋ฉ์๋์ ๋ณดํธ๊ฐ ๊ฐํ๋์ด ์ด์ ํ์ผ ์ด๋ฆ์ ๊ตฌ์ฑํ๋ ํ์ ๋ ๋ฌธ์๊ฐ ํ์ฉ๋์ง ์์ต๋๋ค.
- ์ปดํ์ผ๋ฌ ๋ฐ ์ธํฐํ๋ฆฌํฐ ์ถ๋ ฅ์์ โโ์์ ๊ฐ์กฐ ํ์๋ฅผ ๋นํ์ฑํํ๋ ํ๊ฒฝ ๋ณ์ NO_COLOR๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ํต์ญ์ฌ ๋ชจ๋์์์ ์์ ์ด ํฌ๊ฒ ๊ฐ์ ๋์์ต๋๋ค.
์ถ์ฒ : opennet.ru