ИздаванС Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Crystal 1.5

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π° Π΅ вСрсията Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Crystal 1.5, Ρ‡ΠΈΠΈΡ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ сС ΠΎΠΏΠΈΡ‚Π²Π°Ρ‚ Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚ удобството Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ Π½Π° Π΅Π·ΠΈΠΊΠ° Ruby с високата производитСлност Π½Π° прилоТСнията, ΠΏΡ€ΠΈΡΡŠΡ‰Π° Π½Π° Π΅Π·ΠΈΠΊΠ° C. Π‘ΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡΡŠΡ‚ Π½Π° Crystal Π΅ близък Π΄ΠΎ, Π½ΠΎ Π½Π΅ Π΅ напълно ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌ с Ruby, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ някои ruby ​​програми работят Π±Π΅Π· ΠΏΡ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°. ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° Π΅ написан Π½Π° Crystal ΠΈ сС разпространява ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·Π° Apache 2.0.

Π•Π·ΠΈΠΊΡŠΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° статична ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠ°, Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π±Π΅Π· нСобходимост ΠΎΡ‚ ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ ΡƒΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² ΠΊΠΎΠ΄Π°. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ Crystal сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Ρ‚ Π² изпълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, с ΠΎΡ†Π΅Π½ΠΊΠ° Π½Π° макроси ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° компилация. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ Π½Π° Crystal Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠ±Π²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ, написани Π½Π° Π΅Π·ΠΈΠΊ C. ΠŸΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄Π° сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π°Ρ‚Π° Π΄ΡƒΠΌΠ° β€žspawnβ€œ, която Π²ΠΈ позволява Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚Π΅ Ρ„ΠΎΠ½ΠΎΠ²Π° Π·Π°Π΄Π°Ρ‡Π° Π² асинхронСн Ρ€Π΅ΠΆΠΈΠΌ, Π±Π΅Π· Π΄Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚Π΅ основната нишка, ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° Π»Π΅ΠΊΠΈ нишки, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ΠΈ Π²Π»Π°ΠΊΠ½Π° (Fiber).

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Π°Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° прСдоставя голям Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΎΠ±Ρ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ инструмСнти Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с CSV, YAML ΠΈ JSON, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° HTTP ΡΡŠΡ€Π²ΡŠΡ€ΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° WebSocket. По Π²Ρ€Π΅ΠΌΠ΅ Π½Π° процСса Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€žcrystal playβ€œ, която Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° ΡƒΠ΅Π± интСрфСйс (localhost:8080 ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅) Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ изпълнСниС Π½Π° ΠΊΠΎΠ΄ Π½Π° Π΅Π·ΠΈΠΊΠ° Crystal.

Основни ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ:

  • ΠšΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅Ρ‚ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π² рСализацията Π½Π° абстрактния ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ Π² Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° дСфиниция. ΠΠ΅ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΈΠΌΠ΅ сСга Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: 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' ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π° Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ 'number' Π½Π° замСнСния ΠΌΠ΅Ρ‚ΠΎΠ΄ FooAbstract#foo(number : Int32), ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠΌΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎ ΠΈΠΌΠ΅ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° повлияС Π½Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚
  • ΠšΠΎΠ³Π°Ρ‚ΠΎ присвоитС стойността Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π½Π° Π½Π΅Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ‚ΠΎΠ·ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π²Π΅Ρ‡Π΅ Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Π½Π° Ρ‚Π°Π·ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°. class Foo @x: Int64 def initialize(x) @x = x # ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ x Ρ‰Π΅ бъдС ΠΎΡ‚ Ρ‚ΠΈΠΏ @x ΠΊΡ€Π°ΠΉ ΠΊΡ€Π°ΠΉ
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π΅ добавянСто Π½Π° Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ към ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ ΠΈΠ»ΠΈ макроси. def foo(@[МоТС Π±ΠΈ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½] x); ΠΊΡ€Π°ΠΉ#OK
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° константи ΠΊΠ°Ρ‚ΠΎ индСкси ΠΈ ΠΈΠΌΠ΅Π½Π° Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ. KEY = "s" foo = {s: "String", n: 0} поставя foo[KEY].size
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ File#delete? към File API Π·Π° ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. ΠΈ Dir#delete?, ΠΊΠΎΠΈΡ‚ΠΎ Π²Ρ€ΡŠΡ‰Π°Ρ‚ false, Π°ΠΊΠΎ Ρ„Π°ΠΉΠ»ΡŠΡ‚ ΠΈΠ»ΠΈ дирСкторията Π½Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‚.
  • ПодсилСна Π΅ Π·Π°Ρ‰ΠΈΡ‚Π°Ρ‚Π° Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° File.tempfile, ΠΊΠΎΠΉΡ‚ΠΎ Π²Π΅Ρ‡Π΅ Π½Π΅ позволява Π½ΡƒΠ»Π΅Π²ΠΈ Π·Π½Π°Ρ†ΠΈ Π² Π½ΠΈΠ·ΠΎΠ²Π΅, ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Ρ‰ΠΈ ΠΈΠΌΠ΅ Π½Π° Ρ„Π°ΠΉΠ».
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° срСдата NO_COLOR Π·Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° освСтяванСто Π½Π° Ρ†Π²Π΅Ρ‚ΠΎΠ²Π΅Ρ‚Π΅ Π² ΠΈΠ·Ρ…ΠΎΠ΄Π° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°.
  • Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π² Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΏΡ€Π΅Π²ΠΎΠ΄Π°Ρ‡.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€