ΠΠ±ΡΠ°Π²Π΅Π½ΠΎ Π΅ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈΠΎΡ ΡΠ°Π·ΠΈΠΊ Crystal 1.5, ΡΠΈΠΈΡΡΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΈ ΡΠ΅ ΠΎΠ±ΠΈΠ΄ΡΠ²Π°Π°Ρ Π΄Π° ΡΠ° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π°Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎΡΡΠ° Π½Π° ΡΠ°Π·Π²ΠΎΡΠΎΡ Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ Ruby ΡΠΎ Π²ΠΈΡΠΎΠΊΠΈΡΠ΅ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°, ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΡΠ½ΠΈ Π·Π° ΡΠ°Π·ΠΈΠΊΠΎΡ C. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠ°ΡΠ° Π½Π° Crystal Π΅ Π±Π»ΠΈΡΠΊΠ°, Π½ΠΎ Π½Π΅ Π΅ ΡΠ΅Π»ΠΎΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½Π° ΡΠΎ Ruby, ΠΈΠ°ΠΊΠΎ Π½Π΅ΠΊΠΎΠΈ Ruby ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°Ρ Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ°. ΠΠΎΠ΄ΠΎΡ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π²ΠΎ ΠΡΠΈΡΡΠ°Π» ΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° Apache 2.0.
ΠΠ°Π·ΠΈΠΊΠΎΡ ΠΊΠΎΡΠΈΡΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΡΠ°ΡΠΈΡΠΊΠΈ ΡΠΈΠΏ, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π° Π±Π΅Π· ΠΏΠΎΡΡΠ΅Π±Π° Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠ°Π°Ρ ΡΠΈΠΏΠΎΠ²ΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ. ΠΡΠΈΡΡΠ°Π»Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΡΠ΅ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°Π°Ρ Π²ΠΎ ΠΈΠ·Π²ΡΡΠ½ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ, ΡΠΎ Π΅Π²Π°Π»ΡΠ°ΡΠΈΡΠ° Π½Π° ΠΌΠ°ΠΊΡΠΎΠ° ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΊΠΎΠ΄ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΡΠ΅. ΠΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ Crystal, ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π°Ρ Π²ΡΡΠΊΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π²ΠΎ C. ΠΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄ΠΎΡ ΡΠ΅ Π²ΡΡΠΈ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° ΠΊΠ»ΡΡΠ½ΠΈΠΎΡ Π·Π±ΠΎΡ βspawnβ, ΠΊΠΎΡ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΎ Π΄Π° ΠΈΠ·Π²ΡΡΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠ° Π²ΠΎ Π·Π°Π΄Π½ΠΈΠ½Π°, Π±Π΅Π· Π΄Π° ΡΠ° Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠ΅ Π³Π»Π°Π²Π½Π°ΡΠ° Π½ΠΈΡΠΊΠ°, Π²ΠΎ ΡΠΎΡΠΌΠ° Π½Π° Π»Π΅ΡΠ½ΠΈ Π½ΠΈΡΠΊΠΈ Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈ Π²Π»Π°ΠΊΠ½Π°.
Π‘ΡΠ°Π½Π΄Π°ΡΠ΄Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° Π³ΠΎΠ»Π΅ΠΌ ΡΠ΅Ρ Π½Π° Π·Π°Π΅Π΄Π½ΠΈΡΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΡΠΈ Π°Π»Π°ΡΠΊΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° CSV, YAML ΠΈ JSON, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ HTTP ΡΠ΅ΡΠ²Π΅ΡΠΈ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° WebSocket. ΠΠ° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π½Π° ΡΠ°Π·Π²ΠΎΡ, ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° βcrystal playβ, ΠΊΠΎΡΠ° Π³Π΅Π½Π΅ΡΠΈΡΠ° Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ (Π»ΠΎΠΊΠ°Π»Π΅Π½ Ρ ΠΎΡΡ: 8080 ΠΏΠΎ Π΄ΠΈΡΠΎΠ»Ρ) Π·Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ΄ΠΎΡ Π²ΠΎ ΡΠ°Π·ΠΈΠΊΠΎΡ ΠΡΠΈΡΡΠ°Π».
ΠΠ»Π°Π²Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ:
- Π ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΈΠΌΡΠ½ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈ Π² Π΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ. Π ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΈΠΌΡΠ½ ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: 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 ^β Warning: positional parameter βnameβ corresponds to parameter βnumberβ of the overridden method FooAbstract#foo(number : Int32), which has a different name and may affect named argument passing
- ΠΡΠΈ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π½Π΅ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π΄Π°Π½Π½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠΈΠΏΠΎΠΌ ΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. class Foo @x : Int64 def initialize(x) @x = x # ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ x ΠΏΠΎΠ»ΡΡΠΈΡ ΡΠΈΠΏ @x end end
- Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈΠ»ΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ². def foo(@[MaybeUnused] x); end # OK
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΈ ΠΈΠΌΡΠ½ Π² ΠΊΠΎΡΡΠ΅ΠΆΠ°Ρ . KEY = Β«sΒ» foo = {s: Β«StringΒ», n: 0} puts foo[KEY].size
- Π API File Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ File#delete? ΠΈ Dir#delete?, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠ΅ false Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΡΡΡΡΡΡΠ²ΠΈΡ ΡΠ°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°.
- Π£ΡΠΈΠ»Π΅Π½Π° Π·Π°ΡΠΈΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π° File.tempfile, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΠΏΠ΅ΡΡ Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ Π½ΡΠ»Π΅Π²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π² ΡΡΠΎΠΊΠ°Ρ , ΡΠΎΡΠΌΠΈΡΡΡΡΠΈΡ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ NO_COLOR, ΠΎΡΠΊΠ»ΡΡΠ°ΡΡΠ°Ρ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠΎΠΌ Π² Π²ΡΠ²ΠΎΠ΄Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°.
- ΠΠ½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΡΡΡΠ΅Π½Π° ΡΠ°Π±ΠΎΡΠ° Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°.
ΠΠ·Π²ΠΎΡ: opennet.ru