Limbajul de programare Crystal 1.0 disponibil

A avut loc lansarea limbajului de programare Crystal 1.0. Lansarea este marcată ca prima lansare semnificativă, care a însumat 8 ani de muncă și a marcat stabilizarea limbii și pregătirea sa pentru utilizare în proiecte de lucru. Ramura 1.x va menține compatibilitatea cu versiunea anterioară și va asigura că nu există modificări ale limbii sau bibliotecii standard care afectează negativ construirea și funcționarea codului existent.

Versiunile 1.0.y vor include doar corecții minore, în timp ce versiunile 1.x.0 vor introduce funcționalități noi și modificări semnificative, menținând în același timp compatibilitatea codului. Noile idei și modificările potențial incompatibile vor fi dezvoltate într-o ramură separată, care va forma ulterior baza pentru versiunea Crystal 2.0. Unele caracteristici ale Crystal 1.0 sunt declarate preliminare și, în ciuda faptului că sunt prezente în ramura 1.0, nu sunt acoperite de suport oficial. Aceste caracteristici includ multithreading, suport pentru platformă și... Windows, utilizare pe sisteme cu procesoare ARM.

Să ne amintim că dezvoltatorii Crystal încearcă să combine comoditatea dezvoltării în limbajul Ruby cu performanța ridicată a aplicației inerente limbajului C. Sintaxa lui Crystal este aproape de, 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 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:

  • Tuplurile permit accesul indexat la elemente de diferite tipuri, deoarece compilatorul știe ce tip este fiecare element. De exemplu: tuple = {1, „hello”, „x'} v = tuple[0..1] # va returna {1, „hello”} typeof(v) # => Tuple(Int32, String)
  • Literale șiruri și caractere nu permit utilizarea abrevierilor surogat în secvențele de escape Unicode, cum ar fi „\uD834”. Pentru a codifica valori arbitrare, utilizați notația „\x”.
  • În biblioteca standard, o mare parte a definițiilor, macrocomenzilor și metodelor care au fost marcate anterior ca învechite au fost eliminate. Inclusiv metodele Set, StaticArray#[], YAML.new, HTTP::Request, HTTP::WebSocket, Hash#delete_if, Process#kill etc.
  • Macrocomenzile getter și proprietate necesită acum specificarea tipului de returnare.
  • Metoda implicită de rotunjire a fost schimbată la TIES_EVEN („rotunjirea bancherului”, la cel mai apropiat număr întreg, iar pentru situațiile limită la cel mai apropiat număr par). Parametrul RoundingMode a fost adăugat la Number#round, permițându-vă să selectați metoda de rotunjire. Metodele disponibile includ: TIES_EVEN, TIES_AWAY, TO_ZERO, TO_POSITIVE, TO_NEGATIVE.
  • Enumerable#flat_map și Iterator#flat_map funcționează cu elemente de tipuri mixte în colecții.
  • Serializarea secvențelor Enum utilizează acum reprezentări de șir de subliniere.
  • Tipurile definite în modulul XML au fost mutate de la utilizarea struct la clasă.
  • Din motive de securitate, decodificarea numelor cookie-urilor, precum și codificarea și decodificarea valorilor cookie-urilor, a fost întreruptă (recodificarea este acum responsabilitatea framework-urilor și aplicațiilor). Metoda HTTP::Cookies.from_headers a fost împărțită în două variante pentru servere si clienti.

Sursa: opennet.ru

Cumpărați găzduire de încredere pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără găzduire web fiabilă cu protecție DDoS, servere VPS VDS | ProHoster