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

Crystal 1.2 ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋“ค์€ Ruby ์–ธ์–ด์˜ ๊ฐœ๋ฐœ ํŽธ์˜์„ฑ๊ณผ C ์–ธ์–ด์˜ ๋†’์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ํŠน์„ฑ์„ ๊ฒฐํ•ฉํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Crystal์˜ ๊ตฌ๋ฌธ์€ Ruby์™€ ๋น„์Šทํ•˜์ง€๋งŒ ์™„์ „ํžˆ ํ˜ธํ™˜๋˜์ง€๋Š” ์•Š์ง€๋งŒ ์ผ๋ถ€ Ruby ํ”„๋กœ๊ทธ๋žจ์€ ์ˆ˜์ • ์—†์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ ์ฝ”๋“œ๋Š” Crystal๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ Apache 2.0 ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

์–ธ์–ด๋Š” ์ฝ”๋“œ์—์„œ ๋ณ€์ˆ˜ ๋ฐ ๋ฉ”์„œ๋“œ ์ธ์ˆ˜์˜ ์œ ํ˜•์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•  ํ•„์š” ์—†์ด ๊ตฌํ˜„๋˜๋Š” ์ •์  ์œ ํ˜• ๊ฒ€์‚ฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Crystal ํ”„๋กœ๊ทธ๋žจ์€ ์ปดํŒŒ์ผ ํƒ€์ž„์— ๋งคํฌ๋กœ๊ฐ€ ํ‰๊ฐ€๋˜๊ณ  ์ฝ”๋“œ๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์‹คํ–‰ ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค. Crystal ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” C๋กœ ์ž‘์„ฑ๋œ ๋ฐ”์ธ๋”ฉ์„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ์‹คํ–‰์˜ ๋ณ‘๋ ฌํ™”๋Š” "spawn" ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํŒŒ์ด๋ฒ„๋ผ๋Š” ๊ฒฝ๋Ÿ‰ ์Šค๋ ˆ๋“œ ํ˜•ํƒœ๋กœ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋ฅผ ์ฐจ๋‹จํ•˜์ง€ ์•Š๊ณ  ๋น„๋™๊ธฐ ๋ชจ๋“œ์—์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” CSV, YAML ๋ฐ JSON ์ฒ˜๋ฆฌ์šฉ ๋„๊ตฌ, HTTP ์„œ๋ฒ„ ์ƒ์„ฑ์šฉ ๊ตฌ์„ฑ ์š”์†Œ, WebSocket ์ง€์›์„ ํฌํ•จํ•œ ๊ด‘๋ฒ”์œ„ํ•œ ๊ณตํ†ต ๊ธฐ๋Šฅ ์„ธํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ Crystal ์–ธ์–ด๋กœ ์ฝ”๋“œ๋ฅผ ๋Œ€ํ™”ํ˜•์œผ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์›น ์ธํ„ฐํŽ˜์ด์Šค(๊ธฐ๋ณธ์ ์œผ๋กœ localhost:8080)๋ฅผ ์ƒ์„ฑํ•˜๋Š” "crystal play" ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ :

  • ์ผ๋ฐ˜ ํด๋ž˜์Šค์˜ ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ์ƒ์œ„ ํด๋ž˜์Šค์˜ ์š”์†Œ์— ํ• ๋‹นํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ํด๋ž˜์Šค Foo(T); end class Bar(T) < Foo(T); ๋ x = ํ‘ธ x = ๋ฐ”
  • ์ด์ œ ๋งคํฌ๋กœ๋Š” ๋ฐ‘์ค„์„ ์‚ฌ์šฉํ•˜์—ฌ for ๋ฃจํ”„์˜ ๊ฐ’์„ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. {% for _, v, i in {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • ๋งคํฌ๋กœ์— "file_exists?" ๋ฉ”์†Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ์˜ ์กด์žฌ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ์ด์ œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” 128๋น„ํŠธ ์ •์ˆ˜๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • BitArray ๋ฐ Deque์™€ ๊ฐ™์€ ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ๊ณ ๊ธ‰ ์ž‘์—…์„ ๊ตฌํ˜„ํ•˜๋Š” Indexable::Mutable(T) ๋ชจ๋“ˆ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • XML์—์„œ ํŠน์ • ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ถ”์ถœํ•˜๋Š” XML::Node#namespace_definition ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • IO#write_utf8 ๋ฐ URI.encode ๋ฉ”์†Œ๋“œ๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ IO#write_string ๋ฐ URI.encode_path๋กœ ๋Œ€์ฒด๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • 32๋น„ํŠธ x86 ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์ง€์›์ด ๋‘ ๋ฒˆ์งธ ์ˆ˜์ค€์œผ๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค(๊ธฐ์„ฑ ํŒจํ‚ค์ง€๋Š” ๋” ์ด์ƒ ์ƒ์„ฑ๋˜์ง€ ์•Š์Œ). ARM64 ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์ฒซ ๋ฒˆ์งธ ์ง€์› ์ˆ˜์ค€์œผ๋กœ์˜ ์ „ํ™˜์ด ์ค€๋น„ ์ค‘์ž…๋‹ˆ๋‹ค.
  • Windows ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ์™„์ „ํ•œ ์ง€์›์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…์ด ๊ณ„์†๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Windows ์†Œ์ผ“์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • x86 ํ”„๋กœ์„ธ์„œ๊ฐ€ ํƒ‘์žฌ๋œ ์žฅ์น˜์™€ Apple M1 ์นฉ์ด ํƒ‘์žฌ๋œ ์žฅ๋น„ ๋ชจ๋‘์—์„œ ์ž‘๋™ํ•˜๋Š” macOS์šฉ ๋ฒ”์šฉ ํŒจํ‚ค์ง€๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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