Programmeerimiskeele Crystal väljalase 1.5

Avaldatud on programmeerimiskeele Crystal 1.5 väljalase, mille arendajad püüavad ühendada Ruby keeles arendamise mugavuse C-keelele iseloomuliku kõrge rakenduste jõudlusega. Crystali süntaks on Rubyle lähedane, kuid mitte sellega täielikult ühilduv, kuigi mõned Ruby programmid töötavad ilma muudatusteta. Kompilaatori kood on kirjutatud Crystalis ja seda levitatakse Apache 2.0 litsentsi all.

Keel kasutab staatilist tüübikontrolli, mida rakendatakse ilma, et oleks vaja koodis selgelt määratleda muutujate tüüpe ja meetodi argumente. Kristallprogrammid kompileeritakse käivitatavateks failideks, mille makrosid hinnatakse ja kood genereeritakse kompileerimise ajal. Crystal programmides on võimalik ühendada C keeles kirjutatud köiteid. Koodi täitmise paralleelsus viiakse läbi märksõna "spawn" abil, mis võimaldab teil käivitada taustaülesannet asünkroonselt, põhilõimi blokeerimata, kergete lõimede, mida nimetatakse kiududeks, kujul.

Standardne teek pakub suurt hulka tavalisi funktsioone, sealhulgas tööriistu CSV, YAML ja JSON töötlemiseks, HTTP-serverite loomise komponente ja WebSocketi tuge. Arendusprotsessi käigus on mugav kasutada käsku “crystal play”, mis genereerib veebiliidese (vaikimisi localhost:8080) koodi interaktiivseks täitmiseks Crystal keeles.

Peamised muudatused:

  • Koostaja on abstraktse meetodi juurutamisel ja defineerimisel lisanud argumentide nimede vastavuse kontrolli. Nime mittevastavuse korral antakse nüüd hoiatus: abstraktne klass FooAbstract abstract def foo(number : Int32) : Nil end class Foo < FooAbstract def foo(nimi : Int32) : Null p nime lõpp 6 | def foo(nimi : Int32) : Nil ^— Hoiatus: positsiooniparameeter 'name' vastab alistatud meetodi FooAbstract#foo(number : Int32) parameetrile 'number', millel on erinev nimi ja mis võib mõjutada nimega argumentide edastamist
  • Kui määrate muutuja väärtusele argumendi tüübita meetodile, on argument nüüd selle muutuja tüübiga piiratud. class Foo @x : Int64 def originize(x) @x = x # parameeter x sisestatakse @x end end
  • Võimaldab lisada märkusi meetodite või makrode parameetritele. def foo(@[Võib-ollaKasutamata] x); lõpp # OK
  • Lisatud tugi konstantide kasutamiseks indeksite ja nimedena korteežides. KEY = "s" foo = {s: "String", n: 0} paneb foo[KEY].size
  • Failide API-le on lisatud uued File#delete?-meetodid failide ja kataloogide kustutamiseks. ja Dir#delete?, mis tagastavad vale, kui fail või kataloog puudub.
  • Tugevdatud on meetodi File.tempfile kaitset, mis nüüd ei luba failinime moodustavatel ridadel nullmärke.
  • Lisatud keskkonnamuutuja NO_COLOR, mis keelab kompilaatori ja interpretaatori väljundis värvide esiletõstmise.
  • Töö tõlgirežiimis on oluliselt paranenud.

Allikas: opennet.ru

Lisa kommentaar