ΠΠ·Π»Π΅Π·Π΅ Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Crystal, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Ρ Ruby ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΡΠΈΠΉΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΡΠ° ΡΡΠ½ΡΠ°ΠΉΠΌ Ρ Π²Π³ΡΠ°Π΄Π΅Π½ event loop, ΠΏΡΠΈ ΠΊΠΎΠΉΡΠΎ Π²ΡΠΈΡΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° Π²Ρ ΠΎΠ΄ ΠΈ ΠΈΠ·Ρ ΠΎΠ΄ ΡΠ° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈ, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡ (Π·Π°ΡΠ΅Π³Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π° ΡΡΠ΅Π· ΡΠ»Π°Π³ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ) ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠΎΡΡ ΠΈ ΡΠ΄ΠΎΠ±Π΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π° C.
ΠΡ Π²Π΅ΡΡΠΈΡ 0.34.0 Π΅Π·ΠΈΠΊΡΡ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΎ Π·Π°ΠΏΠΎΡΠ²Π° Π΄Π° ΡΠ΅ Π΄Π²ΠΈΠΆΠΈ ΡΠ²Π΅ΡΠ΅Π½ΠΎ ΠΊΡΠΌ ΠΏΡΡΠ²ΠΈΡ ΡΠΈ ΠΈΡΡΠΈΠ½ΡΠΊΠΈ ΡΠ΅Π»ΠΈΠ· (Ρ.Π΅. Π²Π΅ΡΡΠΈΡ 1.0).
Π Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Crystal ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈΠΌ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠΎ Π²Π°ΠΆΠ½ΠΎΡΡ:
Π API Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π½ΠΎΠ²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π° Π»ΠΎΠ³Π²Π°Π½Π΅ Log, ΠΊΠΎΡΡΠΎ, Π·Π° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ ΡΡΠ°ΡΠ°ΡΠ°, ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΡΠΎΡΠ²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΊΡΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π±Π΅ΠΊΠ΅Π½Π΄ΠΈ ΠΈ Π΄Π° ΡΠΈΠ»ΡΡΠΈΡΠ° ΡΠ΅Π·ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ Π½Π°ΡΠΈΠ½ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ βΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊΠ°β.
Π ΡΠ΄ΠΈΠΌΠ΅Π½ΡΠΈ ΠΎΡ ΡΠ²Π΅ΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° C, Errno ΠΈ WinError, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π° Π·Π° ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΈ Π·Π° Π²Ρ ΠΎΠ΄ ΠΈ ΠΈΠ·Ρ ΠΎΠ΄, ΠΈΠ·Π»ΠΈΠ·Π°Ρ Π² ΠΌΠΈΠ½Π°Π»ΠΎΡΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΉΠ΅ΡΠ°ΡΡ ΠΈΡΡΠ° Π½Π° ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡΡΠ°. IO::Error (Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π½ΠΈΠΊΠΎΠΉ Π½Π΅ Π·Π°Π±ΡΠ°Π½ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Errno).
ΠΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠ° Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π°ΡΠ° ΠΏΠΎΠ΄ΠΌΡΠ½Π° Π½Π° else nil ΠΎΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΡΠ° case/when/else. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΎ, Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΡΠΎ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π½Π΅ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π½Π° Π΅Π΄Π½Π° ΠΎΡ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ΡΠ΅ Π² ΠΏΡΠΈ ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠ°Π½ΠΈ ΡΠ»ΡΡΠ°ΠΈ, ΠΊΠ°ΡΠΎ enum-ΠΈ ΠΈ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ ΠΏΠΎ ΡΠΈΠΏΠΎΠ²Π΅ ΠΎΡ Union. Π’ΠΎΠ΅ΡΡ, ΠΏΠΎ-ΠΏΡΠΎΡΡΠΎ ΠΊΠ°Π·Π°Π½ΠΎ, ΡΠ°ΠΊΡΠ² ΠΊΠΎΠ΄ Π²Π΅ΡΠ΅ Π½ΡΠΌΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ΅ Π΅Π΄ΠΈΠ½ Π² (when Char) ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° else-ΠΊΠ»ΠΎΠ½:
a = 1 || βxβ || "foo"
case a
when Int32
# β¦
when String
# β¦
end
ΠΠΏΡΠΈΡΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° disable_overflow Π²Π΅ΡΠ΅ Π½Π΅ Π΅ Π½Π° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΏΡΠ΅ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ &+, &-, &*.
Array#fill ΡΠ΅Π³Π° Π»Π΅ΡΠΈ ΠΊΠ°ΡΠΎ ΠΊΡΡΡΡΠΌ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π½Π° Π·Π°ΠΌΡΠ½Π°ΡΠ° Π½Π° Π½Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ½ΠΈΡ ΡΠΈΠΊΡΠ» Ρ Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΡΡ memset;
ΠΠ΅Π½ΠΈΠ΄ΠΆΡΡΡΡ Π½Π° ΡΠ°ΡΠ΄ΠΎΠ²Π΅ΡΠ΅ (ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅), ΠΊΠΎΠΈΡΠΎ, ΠΏΠ°ΡΠ°Π΄ΠΎΠΊΡΠ°Π»Π½ΠΎ, ΡΠ΅ Π½Π°ΡΠΈΡΠ°Ρ shards, ΡΠ΅Π³Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎ-Π±ΡΡΠ· ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π·Π° ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ²Π°Π½Π΅ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Molinillo, ΠΏΠΎΠ΄ΡΠΌΠΎΡΡΠ΅Π½ Π² CocoaPods (Swift) ΠΈ Builder (Ruby).
ΠΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° LLVM 10, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈ ΡΡΡΠ±Π²Π°Π»ΠΎ Π΄Π° Π½ΠΈ Π΄Π°Π΄Π΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΡΡΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, ΡΡΠ°Π±ΠΈΠ»Π½ΠΎΡΡΡΠ° ΠΈ Ρ.Π½.
β¦ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈ, ΠΏΠΎ ΠΌΠΎΠ΅ Π»ΠΈΡΠ½ΠΎ ΠΌΠ½Π΅Π½ΠΈΠ΅, ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΡΡΠ΅ΡΡΠ²Π΅Π½ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ.
ΠΡΠΊΠ°ΠΌ Π΄Π° ΠΎΡΠ±Π΅Π»Π΅ΠΆΠ°, ΡΠ΅ Crystal Π΅ Π΅Π·ΠΈΠΊ, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° LLVM, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΏΠΈΡΠ°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΏΠΎ-Π±ΡΡΠ·ΠΎ, ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ ΠΈ ΠΏΠΎ-ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π½Π° Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠΈ βΡΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈΡΠΈβ, ΠΈ Π² ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»Π½ΠΎ Π±ΡΡΠ· Π±ΠΈΠ½Π°ΡΠ΅Π½ ΠΊΠΎΠ΄. Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° Golang ΡΠ΅ ΠΎΡΠΊΡΠΎΡΠ²Π° Ρ Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΠ°Π·Π²ΠΈΡΠΎ ΠΠΠ, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π΄ΠΆΠ΅Π½Π΅ΡΠΈΡΠΈΡΠ΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡ ΠΈ ΡΡΠ΅Π½ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ. Π‘ΠΏΠΎΡΠ΅Π΄ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠΈ Π΅ Π΄ΠΎΠ½ΡΠΊΡΠ΄Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ Π½Π° Nim, Π½ΠΎ Π΅ ΡΠ²Π½ΠΎ Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: linux.org.ru
