Crystal ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด 1.5 ์ถœ์‹œ

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

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