ΠΠ±ΡΠ°Π²Π΅Π½ΠΎ Π΅ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈΠΎΡ ΡΠ°Π·ΠΈΠΊ Crystal 1.5, ΡΠΈΠΈΡΡΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΈ ΡΠ΅ ΠΎΠ±ΠΈΠ΄ΡΠ²Π°Π°Ρ Π΄Π° ΡΠ° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π°Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎΡΡΠ° Π½Π° ΡΠ°Π·Π²ΠΎΡΠΎΡ Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ Ruby ΡΠΎ Π²ΠΈΡΠΎΠΊΠΈΡΠ΅ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°, ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΡΠ½ΠΈ Π·Π° ΡΠ°Π·ΠΈΠΊΠΎΡ C. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠ°ΡΠ° Π½Π° Crystal Π΅ Π±Π»ΠΈΡΠΊΠ°, Π½ΠΎ Π½Π΅ Π΅ ΡΠ΅Π»ΠΎΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½Π° ΡΠΎ Ruby, ΠΈΠ°ΠΊΠΎ Π½Π΅ΠΊΠΎΠΈ Ruby ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°Ρ Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ°. ΠΠΎΠ΄ΠΎΡ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π²ΠΎ ΠΡΠΈΡΡΠ°Π» ΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° Apache 2.0.
ΠΠ°Π·ΠΈΠΊΠΎΡ ΠΊΠΎΡΠΈΡΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΡΠ°ΡΠΈΡΠΊΠΈ ΡΠΈΠΏ, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π° Π±Π΅Π· ΠΏΠΎΡΡΠ΅Π±Π° Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠ°Π°Ρ ΡΠΈΠΏΠΎΠ²ΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ. ΠΡΠΈΡΡΠ°Π»Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΡΠ΅ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°Π°Ρ Π²ΠΎ ΠΈΠ·Π²ΡΡΠ½ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ, ΡΠΎ Π΅Π²Π°Π»ΡΠ°ΡΠΈΡΠ° Π½Π° ΠΌΠ°ΠΊΡΠΎΠ° ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΊΠΎΠ΄ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΡΠ΅. ΠΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ Crystal, ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π°Ρ Π²ΡΡΠΊΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π²ΠΎ C. ΠΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄ΠΎΡ ΡΠ΅ Π²ΡΡΠΈ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° ΠΊΠ»ΡΡΠ½ΠΈΠΎΡ Π·Π±ΠΎΡ βspawnβ, ΠΊΠΎΡ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΎ Π΄Π° ΠΈΠ·Π²ΡΡΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠ° Π²ΠΎ Π·Π°Π΄Π½ΠΈΠ½Π°, Π±Π΅Π· Π΄Π° ΡΠ° Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠ΅ Π³Π»Π°Π²Π½Π°ΡΠ° Π½ΠΈΡΠΊΠ°, Π²ΠΎ ΡΠΎΡΠΌΠ° Π½Π° Π»Π΅ΡΠ½ΠΈ Π½ΠΈΡΠΊΠΈ Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈ Π²Π»Π°ΠΊΠ½Π°.
Π‘ΡΠ°Π½Π΄Π°ΡΠ΄Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° Π³ΠΎΠ»Π΅ΠΌ ΡΠ΅Ρ Π½Π° Π·Π°Π΅Π΄Π½ΠΈΡΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΡΠΈ Π°Π»Π°ΡΠΊΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° CSV, YAML ΠΈ JSON, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ HTTP ΡΠ΅ΡΠ²Π΅ΡΠΈ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° WebSocket. ΠΠ° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π½Π° ΡΠ°Π·Π²ΠΎΡ, ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° βcrystal playβ, ΠΊΠΎΡΠ° Π³Π΅Π½Π΅ΡΠΈΡΠ° Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ (Π»ΠΎΠΊΠ°Π»Π΅Π½ Ρ ΠΎΡΡ: 8080 ΠΏΠΎ Π΄ΠΈΡΠΎΠ»Ρ) Π·Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ΄ΠΎΡ Π²ΠΎ ΡΠ°Π·ΠΈΠΊΠΎΡ ΠΡΠΈΡΡΠ°Π».
ΠΠ»Π°Π²Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ:
- ΠΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ Π΄ΠΎΠ΄Π°Π΄Π΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π° ΠΊΠΎΡΠ΅ΡΠΏΠΎΠ½Π΄Π΅Π½ΡΠΈΡΠ° Π½Π° ΠΈΠΌΠΈΡΠ°ΡΠ° Π½Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π²ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° Π°ΠΏΡΡΡΠ°ΠΊΡΠ΅Π½ ΠΌΠ΅ΡΠΎΠ΄ ΠΈ Π²ΠΎ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ°. ΠΠΊΠΎ ΠΈΠΌΠ° Π½Π΅ΡΠΎΠ²ΠΏΠ°ΡΠ°ΡΠ΅ Π½Π° ΠΈΠΌΠ΅ΡΠΎ, ΡΠ΅Π³Π° ΡΠ΅ ΠΈΠ·Π΄Π°Π²Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΡΠ²Π°ΡΠ΅: Π°ΠΏΡΡΡΠ°ΠΊΡΠ½Π° ΠΊΠ»Π°ΡΠ° FooAbstract Π°ΠΏΡΡΡΠ°ΠΊΡ def foo(Π±ΡΠΎΡ : Int32) : Nil ΠΊΡΠ°ΡΠ½Π° ΠΊΠ»Π°ΡΠ° Foo < FooAbstract def foo(ΠΈΠΌΠ΅ : Int32) : Nil p ΠΈΠΌΠ΅ ΠΊΡΠ°Ρ ΠΊΡΠ°Ρ 6 | def foo(ΠΈΠΌΠ΅ : Int32) : Nil ^β ΠΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΡΠ²Π°ΡΠ΅: ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ βΠΈΠΌΠ΅β ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°ΡΠΎΡ βΠ±ΡΠΎΡβ Π½Π° ΠΏΡΠ΅ΡΡΠ»Π΅Π½ΠΈΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ FooAbstract#foo(Π±ΡΠΎΡ : Int32), ΠΊΠΎΡ ΠΈΠΌΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΎ ΠΈΠΌΠ΅ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²Π»ΠΈΡΠ°Π΅ Π½Π° ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈΠΎΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ
- ΠΠΎΠ³Π° ΡΠ΅ Π΄ΠΎΠ΄Π΅Π»ΡΠ²Π° Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π½Π° Π½Π΅ΡΠΈΠΏΠΈΠ·ΠΈΡΠ°Π½ ΠΌΠ΅ΡΠΎΠ΄ Π½Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ°, Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΡ ΡΠ΅Π³Π° Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π½Π° ΡΠΈΠΏΠΎΡ Π½Π° ΡΠ°Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°. ΠΊΠ»Π°ΡΠ° Foo @x : Int64 def initialize(x) @x = x # ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ x ΡΠ΅ ΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ @x ΠΊΡΠ°Ρ ΠΊΡΠ°Ρ
- ΠΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ ΠΏΡΠΈΠ±Π΅Π»Π΅ΡΠΊΠΈ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ ΠΈΠ»ΠΈ ΠΌΠ°ΠΊΡΠΎΠ°ΡΠ°. def foo(@[ΠΠΎΠΆΠ΅Π±ΠΈΠΠ΅ΡΠΏΠΎΡΡΠ΅Π±Π΅Π½ΠΎ] x); ΠΊΡΠ°Ρ # ΠΠΎ ΡΠ΅Π΄
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ ΠΊΠ°ΠΊΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ ΠΈ ΠΈΠΌΠΈΡΠ° Π²ΠΎ ΡΠΎΡΠΊΠΈ. KEY = "s" foo = {s: "String", n: 0} ΡΡΠ°Π²Π° foo[KEY].size
- ΠΠΎΠ΄Π°Π΄Π΅Π½ΠΈ ΡΠ΅ Π½ΠΎΠ²ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π½Π° File#delete Π²ΠΎ File API Π·Π° Π±ΡΠΈΡΠ΅ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ. ΠΈ Dir#delete?, ΠΊΠΎΠΈ Π²ΡΠ°ΡΠ°Π°Ρ Π½Π΅ΡΠΎΡΠ½ΠΎ Π°ΠΊΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° ΠΈΠ»ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠ²Π°Π°Ρ.
- ΠΠ°ΡΠ°ΠΊΠ½Π°ΡΠ° Π΅ Π·Π°ΡΡΠΈΡΠ°ΡΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ File.tempfile, ΡΡΠΎ ΡΠ΅Π³Π° Π½Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½ΡΠ»Π° Π·Π½Π°ΡΠΈ Π²ΠΎ Π»ΠΈΠ½ΠΈΠΈΡΠ΅ ΡΡΠΎ Π³ΠΎ ΡΠΎΡΠΌΠΈΡΠ°Π°Ρ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ°.
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ° NO_COLOR, ΠΊΠΎΡΠ° Π³ΠΎ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° ΠΈΡΡΠ°ΠΊΠ½ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π±ΠΎΡΠ°ΡΠ° Π²ΠΎ ΠΈΠ·Π»Π΅Π·ΠΎΡ ΠΎΠ΄ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ ΠΈ ΡΠΎΠ»ΠΊΡΠ²Π°ΡΠΎΡ.
- Π Π°Π±ΠΎΡΠ°ΡΠ° Π²ΠΎ ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΏΡΠ΅Π²Π΅Π΄ΡΠ²Π°Ρ Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π°.
ΠΠ·Π²ΠΎΡ: opennet.ru