เบเบฒเบ™เบ›เปˆเบญเบเบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก Crystal 1.5

เบเบฒเบ™เบ›เปˆเบญเบเป‚เบ›เบฅเปเบเบฅเบก Crystal 1.5 เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบžเบตเบกเบกเบฒ, เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบตเปˆเบžเบฐเบเบฒเบเบฒเบกเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ„เบงเบฒเบกเบชเบฐเบ”เบงเบเบชเบฐเบšเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบ™เบžเบฒเบชเบฒ Ruby เบเบฑเบšเบฅเบฑเบเบชเบฐเบ™เบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบชเบนเบ‡เบ‚เบญเบ‡เบžเบฒเบชเบฒ C. syntax เบ‚เบญเบ‡ Crystal เปเบกเปˆเบ™เบขเบนเปˆเปƒเบเป‰เบเบฑเบš, เปเบ•เปˆเบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบš Ruby, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบšเบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™ Ruby เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ”เบฑเบ”เปเบ›เบ‡. เบฅเบฐเบซเบฑเบ” compiler เปเบกเปˆเบ™เบ‚เบฝเบ™เปƒเบ™ Crystal เปเบฅเบฐเปเบˆเบเบขเบฒเบเบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” Apache 2.0.

เบžเบฒเบชเบฒเปƒเบŠเป‰เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”เบชเบฐเบ–เบดเบ”, เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฅเบฐเบšเบธเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ•เบปเบงเปเบ›เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เปƒเบ™เบฅเบฐเบซเบฑเบ”เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™. เป‚เบ„เบ‡เบเบฒเบ™ Crystal เบ–เบทเบเบฅเบงเบšเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰, เบ”เป‰เบงเบเบเบฒเบ™เบ›เบฐเป€เบกเบตเบ™เบกเบฐเบซเบฒเบžเบฒเบเปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบก. เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ Crystal, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบ—เบตเปˆเบ‚เบฝเบ™เปƒเบ™ C. เบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”เปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบซเบฅเบฑเบ "spawn", เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบžเบทเป‰เบ™เบซเบฅเบฑเบ‡เปเบšเบš asynchronously, เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบชเบฐเบเบฑเบ”เบชเบฒเบเบซเบผเบฑเบ, เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบเบฐเบ—เบนเป‰เบ—เบตเปˆเบกเบตเบ™เป‰เปเบฒเบซเบ™เบฑเบเป€เบšเบปเบฒเบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒเป€เบชเบฑเป‰เบ™เป„เบ.

เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบชเบฐเบซเบ™เบญเบ‡เบŠเบธเบ”เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบ—เบปเปˆเบงเป„เบ›, เบฅเบงเบกเบ—เบฑเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™ CSV, YAML, เปเบฅเบฐ JSON, เบญเบปเบ‡เบ›เบฐเบเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ HTTP, เปเบฅเบฐเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ WebSocket. เปƒเบ™โ€‹เบฅเบฐโ€‹เบซเบงเปˆเบฒเบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบฐโ€‹เบšเบงเบ™โ€‹เบเบฒเบ™โ€‹เบžเบฑเบ”โ€‹เบ—เบฐโ€‹เบ™เบฒโ€‹, เบกเบฑเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบเบฒเบ™โ€‹เบชเบฐโ€‹เบ”เบงเบโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡ "crystal playโ€‹"โ€‹, เป€เบŠเบดเปˆเบ‡โ€‹เบชเป‰เบฒเบ‡โ€‹เบเบฒเบ™โ€‹เป‚เบ•เป‰โ€‹เบ•เบญเบšโ€‹เบ‚เบญเบ‡โ€‹เป€เบงเบฑเบšโ€‹เป„เบŠโ€‹เบ•โ€‹เปŒ (localhost:8080 เป‚เบ”เบโ€‹เบ„เปˆเบฒโ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹) เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เป‚เบ•เป‰โ€‹เบ•เบญเบšโ€‹เบ‚เบญเบ‡โ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เปƒเบ™โ€‹เบžเบฒโ€‹เบชเบฒ Crystalโ€‹.

เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ•เบปเป‰เบ™เบ•เป:

  • เบœเบนเป‰เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เป„เบ”เป‰เป€เบžเบตเปˆเบกเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบ•เบญเบšเป‚เบ•เป‰เบ‚เบญเบ‡เบŠเบทเปˆเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบ•เบปเบงเบ•เบปเบ™เปเบฅเบฐเปƒเบ™เบ„เปเบฒเบ™เบดเบเบฒเบกเบ‚เบญเบ‡เบกเบฑเบ™. เบ–เป‰เบฒเบกเบตเบŠเบทเปˆเบšเปเปˆเบเบปเบ‡เบเบฑเบ™, เบ”เบฝเบงเบ™เบตเป‰เบกเบตเบเบฒเบ™เป€เบ•เบทเบญเบ™เบญเบญเบ: เบซเป‰เบญเบ‡เบฎเบฝเบ™ abstract FooAbstract abstract def foo(number : Int32): Nil end class Foo < FooAbstract def foo(name: Int32): Nil p name end 6 | def foo(name : Int32): Nil ^โ€” เบ„เบณเป€เบ•เบทเบญเบ™: เบžเบฒเบฃเบฒเบกเบดเป€เบ•เบตเบ•เบณเปเปœเปˆเบ‡ 'เบŠเบทเปˆ' เบเบปเบ‡เบเบฑเบšเบžเบฒเบฃเบฒเบกเบดเป€เบ•เบต 'เบˆเบณเบ™เบงเบ™' เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™ overridden FooAbstract#foo(number : Int32), เป€เบŠเบดเปˆเบ‡เบกเบตเบŠเบทเปˆเบ•เปˆเบฒเบ‡เบเบฑเบ™ เปเบฅเบฐเบญเบฒเบ”เบชเบปเปˆเบ‡เบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เบŠเบทเปˆ.
  • เป€เบกเบทเปˆเบญเบเปเบฒเบ™เบปเบ” argument เปƒเบซเป‰เบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™ untyped เบเบฑเบšเบ„เปˆเบฒเบ‚เบญเบ‡เบ•เบปเบงเปเบ›, argument เบ›เบฐเบˆเบธเบšเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบˆเปเบฒเบเบฑเบ”เบเบฑเบšเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบ™เบฑเป‰เบ™. class Foo @x : Int64 def initialize(x) @x = x # เบžเบฒเบฃเบฒเบกเบดเป€เบ•เบต x เบˆเบฐเบ–เบทเบเบžเบดเบก @x end end
  • เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบžเบตเปˆเบกเบ„เปเบฒเบšเบฑเบ™เบเบฒเบเปƒเบชเปˆเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบซเบผเบท macro. def foo(@[MaybeUnused] x); เบˆเบปเบš # เบ•เบปเบเบฅเบปเบ‡
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เปเบฅเบฐเบŠเบทเปˆเปƒเบ™ tuples. KEY = "s" foo = {s: "String", n: 0} เปƒเบชเปˆ foo[KEY].size
  • เปƒเปเปˆ File#delete? เบงเบดเบ—เบตเบเบฒเบ™เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเปƒเบชเปˆ File API เบชเบณเบฅเบฑเบšเบเบฒเบ™เบฅเบถเบšเป„เบŸเบฅเปŒ เปเบฅเบฐเบฅเบฒเบเบŠเบทเปˆ. เปเบฅเบฐ Dir#delete?, เป€เบŠเบดเปˆเบ‡เบชเบปเปˆเบ‡เบ„เบทเบ™ false เบ–เป‰เบฒเป„เบŸเบฅเปŒเบซเบผเบทเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบซเบฒเบเป„เบ›.
  • เบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™ File.tempfile เป„เบ”เป‰เบฎเบฑเบšเบ„เบงเบฒเบกเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡, เป€เบŠเบดเปˆเบ‡เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบšเปเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบกเบตเบ•เบปเบงเบญเบฑเบเบชเบญเบ™ null เปƒเบ™เปเบ–เบงเบ—เบตเปˆเป€เบ›เบฑเบ™เบŠเบทเปˆเป„เบŸเบฅเปŒ.
  • เป€เบžเบตเปˆเบกเบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก NO_COLOR, เป€เบŠเบดเปˆเบ‡เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบเบฒเบ™เป€เบ™เบฑเป‰เบ™เบชเบตเปƒเบ™ compiler เปเบฅเบฐ interpreter output.
  • เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบฎเบนเบšเปเบšเบšเบ™เบฒเบเบžเบฒเบชเบฒเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™