Lansarea limbajului de programare Crystal 1.5

A fost publicată lansarea limbajului de programare Crystal 1.5, ai cărui dezvoltatori încearcă să combine comoditatea dezvoltării în limbajul Ruby cu performanța înaltă a aplicației, caracteristică limbajului C. Sintaxa lui Crystal este aproape, dar nu este pe deplin compatibilă cu Ruby, deși unele programe Ruby rulează fără modificări. Codul compilatorului este scris în Crystal și distribuit sub licența Apache 2.0.

Limbajul folosește verificarea de tip statică, implementată fără a fi nevoie de a specifica în mod explicit tipurile de variabile și argumentele metodei din cod. Programele Crystal sunt compilate în fișiere executabile, cu macrocomenzi evaluate și cod generat în timpul compilării. În programele Crystal, este posibilă conectarea legăturilor scrise în C. Paralelizarea execuției codului se realizează folosind cuvântul cheie „spawn”, care vă permite să rulați o sarcină de fundal în mod asincron, fără a bloca firul principal, sub formă de fire ușoare numite fibre.

Biblioteca standard oferă un set mare de funcții comune, inclusiv instrumente pentru procesarea CSV, YAML și JSON, componente pentru crearea de servere HTTP și suport WebSocket. În timpul procesului de dezvoltare, este convenabil să utilizați comanda „crystal play”, care generează o interfață web (localhost:8080 în mod implicit) pentru executarea interactivă a codului în limbajul Crystal.

Principalele modificări:

  • Compilatorul a adăugat o verificare pentru corespondența numelor de argument în implementarea unei metode abstracte și în definirea acesteia. Dacă există o nepotrivire de nume, acum este emis un avertisment: abstract class FooAbstract abstract def foo(număr : Int32) : Nil end class Foo < FooAbstract def foo(name : Int32) : Nil p name end end 6 | def foo(nume : Int32) : Nil ^— Avertisment: parametrul pozițional „nume” corespunde parametrului „număr” al metodei suprascrise FooAbstract#foo(număr : Int32), care are un alt nume și poate afecta transmiterea argumentului numit
  • Când atribuiți un argument unei metode netipizate valorii unei variabile, argumentul este acum constrâns la tipul acelei variabile. clasa Foo @x : Int64 def initialize(x) @x = x # parametrul x va fi tastat @x end end
  • Vă permite să adăugați adnotări la parametrii metodelor sau macrocomenzilor. def foo(@[MaybeUnused] x); sfârșit # OK
  • S-a adăugat suport pentru utilizarea constantelor ca indici și nume în tupluri. KEY = „s” foo = {s: „Șir”, n: 0} pune foo[KEY].size
  • Au fost adăugate noi metode File#delete? la File API pentru ștergerea fișierelor și directoarelor. și Dir#delete?, care returnează false dacă fișierul sau directorul lipsește.
  • Protecția metodei File.tempfile a fost consolidată, care acum nu permite caractere nule în liniile care formează numele fișierului.
  • S-a adăugat variabila de mediu NO_COLOR, care dezactivează evidențierea culorilor în rezultatul compilatorului și interpretului.
  • Lucrul în modul interpret a fost îmbunătățit semnificativ.

Sursa: opennet.ru

Adauga un comentariu