Rilascio del linguaggio di programmazione Crystal 1.5.

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ€Π΅Π»ΠΈΠ· языка программирования Crystal 1.5, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ удобство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° языкС Ruby с высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, свойствСнной языку Π‘ΠΈ. Бинтаксис Crystal Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ языку Ruby, Π½ΠΎ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ совмСстим с Π½ΠΈΠΌ, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ruby-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Код компилятора написан Π½Π° языкС Crystal ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0.

Il linguaggio utilizza un controllo statico dei tipi, implementato senza la necessità di specificare esplicitamente i tipi di variabili e argomenti dei metodi nel codice. I programmi in Crystal vengono compilati in file eseguibili, con il calcolo dei macro e la generazione di codice durante la compilazione. È possibile collegare binding scritti in C nei programmi Crystal. La parallelizzazione dell'esecuzione del codice avviene tramite la parola chiave «spawn», che consente di avviare un'attività in background in modalità asincrona, senza bloccare il thread principale, sotto forma di thread leggeri, noti come fiber.

La libreria standard offre un ampio set di funzioni comuni, inclusi strumenti per la gestione di CSV, YAML e JSON, componenti per la creazione di server HTTP e supporto WebSocket. Durante lo sviluppo, Γ¨ utile utilizzare il comando Β«crystal playΒ» che crea un'interfaccia web (per impostazione predefinita localhost:8080) per l'esecuzione interattiva del codice in Crystal.

Principali modifiche:

  • Π’ компилятор Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° соотвСтствия ΠΈΠΌΡ‘Π½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ абстрактного ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ Π² Π΅Π³ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ. Π’ случаС нСсоотвСтствия ΠΈΠΌΡ‘Π½ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ выводится ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: 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, ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π°Ρ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ компилятора ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°.
  • Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server πŸ”₯ Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster