Lansarea limbajului de programare Crystal 1.2

A fost publicată lansarea limbajului de programare Crystal 1.2, 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:

  • S-a adăugat capacitatea de a atribui o subclasă a unei clase generice unui element al unei clase părinte. clasa Foo(T); clasa finală Bar(T) < Foo(T); sfârşitul x = Foo x = Bar
  • Macro-urile pot folosi acum un caracter de subliniere pentru a ignora o valoare dintr-o buclă for. {% pentru _, v, i în {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% final %}
  • S-a adăugat metoda „file_exists?” la macrocomenzi. pentru a verifica existența unui fișier.
  • Biblioteca standard acceptă acum numere întregi pe 128 de biți.
  • S-a adăugat modulul Indexable::Mutable(T) cu implementarea operațiunilor avansate pentru colecții precum BitArray și Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • S-a adăugat metoda XML::Node#namespace_definition pentru a extrage un anumit spațiu de nume din XML.
  • Metodele IO#write_utf8 și URI.encode au fost depreciate și ar trebui înlocuite cu IO#write_string și URI.encode_path.
  • Suportul pentru arhitectura x32 pe 86 de biți a fost mutat la al doilea nivel (pachetele gata făcute nu mai sunt generate). Se pregătește un transfer la primul nivel de suport pentru arhitectura ARM64.
  • Lucrările continuă pentru a asigura suport complet pentru platforma Windows. S-a adăugat suport pentru socket-uri Windows.
  • A fost adăugat un pachet universal pentru macOS, care funcționează atât pe dispozitive cu procesoare x86, cât și pe echipamente cu cip Apple M1.

Sursa: opennet.ru

Adauga un comentariu