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

ИздадСна Π΅ Π½ΠΎΠ²Π° вСрсия Π½Π° Crystal, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ със синтаксис Ruby, Ρ‡ΠΈΠΈΡ‚ΠΎ основни характСристики са Π²Ρ€Π΅ΠΌΠ΅ Π·Π° изпълнСниС с β€žΠ²Π³Ρ€Π°Π΄Π΅Π½β€œ Ρ†ΠΈΠΊΡŠΠ» Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ, Π² ΠΊΠΎΠΉΡ‚ΠΎ всички I/O ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ са асинхронни, ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° многопоточност (Π΄ΠΎΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ сС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° ΠΎΡ‚ Ρ„Π»Π°Π³ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° компилация) ΠΈ ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ проста ΠΈ ΡƒΠ΄ΠΎΠ±Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² C.

Π—Π°ΠΏΠΎΡ‡Π²Π°ΠΉΠΊΠΈ с вСрсия 0.34.0, Π΅Π·ΠΈΠΊΡŠΡ‚ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΎ Π·Π°ΠΏΠΎΡ‡Π²Π° Π΄Π° сС Π΄Π²ΠΈΠΆΠΈ към ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ си истинско ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ (Ρ‚.Π΅. вСрсия 1.0).

Новата вСрсия Π½Π° Crystal Π²ΠΊΠ»ΡŽΡ‡Π²Π° слСднитС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΈ подобрСния ΠΏΠΎ ваТност:

  • Към API Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π½ΠΎΠ²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π° рСгистриранС Π’Ρ…ΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ, Π·Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ стария, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π΄ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π±Π΅ΠΊΠ΅Π½Π΄ΠΎΠ²Π΅ ΠΈ Π΄Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π° Ρ‚Π΅Π·ΠΈ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ Π² зависимост ΠΎΡ‚ β€žΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊΠ°β€œ.

  • Π ΡƒΠ΄ΠΈΠΌΠ΅Π½Ρ‚ΠΈ ΠΎΡ‚ свСта Π½Π° C Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°, Errno ΠΈ WinError, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° I/O ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΈ, сС ΠΏΡ€Π΅Π²Ρ€ΡŠΡ‰Π°Ρ‚ Π² Π½Π΅Ρ‰ΠΎ ΠΎΡ‚ ΠΌΠΈΠ½Π°Π»ΠΎΡ‚ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° йСрархията Π½Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ‚Π° IO::Π“Ρ€Π΅ΡˆΠΊΠ° (всС ΠΏΠ°ΠΊ Π½ΠΈΠΊΠΎΠΉ Π½Π΅ забранява ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Errno).

  • ΠŸΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ замСстванС Π½Π° else nil ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° случай/ΠΊΠΎΠ³Π°Ρ‚ΠΎ/Π΄Ρ€ΡƒΠ³ΠΎ. Π’ΠΎΠ²Π° сС ΠΏΡ€Π°Π²ΠΈ, Π·Π° Π΄Π° сС ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈ случайно пропусканС Π½Π° някой ΠΎΡ‚ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡ€ΠΈ ΡΡŠΠΏΠΎΡΡ‚Π°Π²ΡΠ½Π΅ Π½Π° дСтСрминистични случаи ΠΊΠ°Ρ‚ΠΎ enum ΠΈ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ ΠΏΡ€Π΅Π· Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΎΡ‚ Union. ВоСст, просто ΠΊΠ°Π·Π°Π½ΠΎ, Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠ΄ Π²Π΅Ρ‡Π΅ няма Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ, Π±Π΅Π· Π΄Π° посочитС ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½ ΠΊΠΎΠ³Π°Ρ‚ΠΎ (ΠΊΠΎΠ³Π°Ρ‚ΠΎ Char) ΠΈΠ»ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΡ‰Π΅-ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅:

Π° = 1 || 'x' || "Ρ„Ρƒ"
случай Π°
ΠΊΠΎΠ³Π°Ρ‚ΠΎ Int32
#…
ΠΊΠΎΠ³Π°Ρ‚ΠΎ String
#…
ΠΊΡ€Π°ΠΉ

  • ΠžΠΏΡ†ΠΈΡ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ disable_overflow Π²Π΅Ρ‡Π΅ Π½Π΅ сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π°. Π—Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΡ€Π΅ΠΏΡŠΠ»Π²Π°Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ &+, &-, &*.

  • Масив#запълванС сСга Π»Π΅Ρ‚ΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ ΠΎΡ‚ ΠΊΡƒΡ€ΡˆΡƒΠΌ, Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° замяната Π½Π° глупавия Ρ†ΠΈΠΊΡŠΠ» с Π΅Π΄ΠΈΠ½ прост memset;

  • ΠœΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Π½Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΈ (ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ), Π½Π°Ρ€Π΅Ρ‡Π΅Π½, парадоксално, ΠΏΠ°Ρ€Ρ‡Π΅Ρ‚Π°, сСга ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΈΡ ΠΈ ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π΅Π½ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ Π·Π° ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€Π΅Π½ΠΈΠ΅ Π½Π° зависимостта Molinillo, Π½Π°ΠΌΠΈΡ€Π°Ρ‰ сС Π² CocoaPods (Swift) ΠΈ Builder (Ruby).

  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° LLVM 10, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π° тСория Ρ‰Π΅ Π½ΠΈ Π΄Π°Π΄Π΅ извСстно ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° производитСлността, стабилността ΠΈ Ρ‚.Π½.

... ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ, ΠΏΠΎ ΠΌΠΎΠ΅ субСктивно ΠΌΠ½Π΅Π½ΠΈΠ΅, ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π·Π½Π°Ρ‡ΠΈΠΌΠΈ подобрСния.

Π‘ΠΈΡ… искал Π΄Π° ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠ°, Ρ‡Π΅ Crystal Π΅ Π΅Π·ΠΈΠΊ, ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ Π½Π° LLVM, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΠΏΠΈΡˆΠ΅Ρ‚Π΅ прилоТСния понякога ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ, ΠΏΠΎ-просто ΠΈ ΠΏΠΎ-сбито, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π½Π° Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π°Π½ΠΈ β€žΠ±Ρ€Π°Ρ‚Ρβ€œ, ΠΈ Π² ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ доста Π±ΡŠΡ€Π· Π΄Π²ΠΎΠΈΡ‡Π΅Π½ Ρ„Π°ΠΉΠ» ΠΊΠ°Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚. Π’ сравнСниС с Golang, Ρ‚ΠΎΠΉ сС ΠΎΡ‚Π»ΠΈΡ‡Π°Π²Π° с напълно ΠΏΡŠΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΈΡ си OOP, ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ прост ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ синтаксис. НСговата Ρ†Π΅Π» Π΅ Π΄ΠΎ голяма стСпСн ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° Nim, Π½ΠΎ Π² ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π΅ ясно фокусирана Π²ΡŠΡ€Ρ…Ρƒ практичСското ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ β€žΡ‚ΡƒΠΊ ΠΈ ΡΠ΅Π³Π°β€œ, Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΈΠΌΠ° Π² своя API арсСнал ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΈ, ΡƒΠ΄ΠΎΠ±Π½ΠΈ ΠΈ висококачСствСни инструмСнти, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½ΠΈ ΠΎΡ‚ Π΅Π·ΠΈΠΊΠΎΠ²ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ ΠΈ слСдоватСлно ΠΌΠ½ΠΎΠ³ΠΎ стабилни.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: linux.org.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€