ΠΡΡΠ»Π° Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Crystal, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ Ruby, Π³Π»Π°Π²Π½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ — ΡΠ°Π½ΡΠ°ΠΉΠΌ Ρ «Π²ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ» event loop’ΠΎΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Ρ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ (ΠΏΠΎΠΊΠ° Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ»Π°Π³ΠΎΠΌ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ) ΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠ°Ρ ΠΈ ΡΠ΄ΠΎΠ±Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ Π½Π° Π‘ΠΈ.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 0.34.0, ΡΠ·ΡΠΊ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΠ²ΡΡΠ΄ΠΎΠΉ ΠΏΠΎΡΡΡΠΏΡΡ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Π² ΡΡΠΎΡΠΎΠ½Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π½Π°ΡΡΠΎΡΡΠ΅Π³ΠΎ ΡΠ΅Π»ΠΈΠ·Π° (Ρ.Π΅. Π²Π΅ΡΡΠΈΠΈ 1.0).
Π Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Crystal ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈΡ Π²Π°ΠΆΠ½ΠΎΡΡΠΈ:
-
Π API Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π½ΠΎΠ²Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΆΡΡΠ½Π°Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Log, ΠΊΠΎΡΠΎΡΠ°Ρ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΠ°ΡΠΎΠΉ, ΡΠΌΠ΅Π΅Ρ Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΡΠ°Π·Π½ΡΠ΅ Π±Π΅ΠΊΠ΅Π½Π΄Ρ ΠΈ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ ΡΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ «ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°».
-
Π ΡΠ΄ΠΈΠΌΠ΅Π½ΡΡ ΠΈΠ· ΠΌΠΈΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° Π‘ΠΈ, Errno ΠΈ WinError, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΠ΅ΡΡ Π΄Π»Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°, ΡΡ ΠΎΠ΄ΡΡ Π² ΠΏΡΠΎΡΠ»ΠΎΠ΅ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ IO::Error (Π²ΠΏΡΠΎΡΠ΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Errno Π½ΠΈΠΊΡΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π°ΠΏΡΠ΅ΡΠ°Π΅Ρ).
-
Π£Π±ΡΠ°Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° else nil ΠΈΠ· ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° case/when/else. ΠΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ ΠΏΡΠΎΠΏΡΡΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π²Π΅ΡΠΎΠΊ when ΠΏΡΠΈ ΠΌΠ°ΡΡΠΈΠ½Π³Π΅ ΠΏΠΎ Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ»ΡΡΠ°ΡΠΌ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ enum’ΠΎΠ² ΠΈ ΠΏΡΠΎΡ ΠΎΠ΄Π° ΠΏΠΎ ΡΠΈΠΏΠ°ΠΌ ΠΈΠ· Union’Π°. Π’.Π΅., ΠΏΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, Π²ΠΎΡ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π΅ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ when (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, ΡΡΠΎ ΠΏΠΎ ΠΈΠ΄Π΅Π΅ Π΄Π°ΡΡ Π½Π°ΠΌ Π½Π΅ΠΊΠΈΠΉ ΡΠΎΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ, etc.
… ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ , Π½Π° ΠΌΠΎΠΉ ΡΡΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Π²Π·Π³Π»ΡΠ΄, ΠΌΠ΅Π½Π΅Π΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠΉ.
Π₯ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Crystal — ΡΡΠΎ ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π½Π° LLVM ΡΠ·ΡΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΉ Π±ΡΡΡΡΠ΅Π΅, ΠΏΡΠΎΡΠ΅ ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½Π΅Π΅, ΡΠ΅ΠΌ Π½Π° Π΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ «ΡΠΎΠ±ΡΠ°ΡΡΡΡ », ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΡΡΡΡΠΉ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊ. ΠΠ° ΡΠΎΠ½Π΅ Golang Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠΌ ΠΠΠ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠ² ΠΈ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΡΠΌ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ. ΠΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ Nim, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ «Π·Π΄Π΅ΡΡ ΠΈ ΡΠ΅ΠΉΡΠ°Ρ», Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ΅ΠΌΡ ΠΈΠΌΠ΅Π΅Ρ Π² ΡΠ²ΠΎΡΠΌ API-Π°ΡΡΠ΅Π½Π°Π»Π΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ΄ΠΎΠ±Π½ΡΡ ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ ΡΠ·ΡΠΊΠ° ΠΈ ΠΏΠΎΡΠΎΠΌΡ Π²Π΅ΡΡΠΌΠ° ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ .
ΠΡΡΠΎΡΠ½ΠΈΠΊ: linux.org.ru