ΠŸΡƒΡΠ½Π°Ρ‚Π° Π΅ Crystal 0.34.0

ИзлСзС Π½ΠΎΠ²Π°Ρ‚Π° вСрсия Π½Π° 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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster