Na voljo je programski jezik Crystal 1.0

Izšel je programski jezik Crystal 1.0. Izdaja je označena kot prvi pomemben izid, ki je povzela 8 let dela in označila stabilizacijo jezika ter pripravljenost za uporabo v delovnih projektih. V veji 1.x bo podprta nazaj kompatibilnost in zagotavljena bo odsotnost sprememb v jeziku in standardni knjižnici, ki negativno vplivajo na sestavljanje in delovanje obstoječega kode.

Izdaje 1.0.y bodo vključivale le popravljajoče popravke, medtem ko bodo različice 1.x.0 ponujale nove funkcionalnosti in pomembne spremembe, ob tem pa bodo ohranile združljivost s kodo. Nove ideje in potencialno nekompatibilne spremembe se bodo razvijale v ločeni veji, na osnovi katere bo kasneje oblikovana izdaja Crystal 2.0. Nekatere možnosti Crystal 1.0 so razglašene za predhodne in kljub temu da so prisotne v veji 1.0, ne spadajo pod uradno podporo. Med takšnimi možnostmi so enojno nitno delovanje, delovanje na platformi Windows in uporaba na sistemih s procesorji ARM.

Spomnimo, da razvijalci Crystal poskušajo združiti udobje razvoja v jeziku Ruby z visoko zmogljivostjo aplikacij, značilno za jezik C. Sintaksa Crystal je podobna jeziku Ruby, vendar ni povsem združljiva z njim, kljub temu, da nekatere ruby programe izvaja brez predelave. Koda prevajalnika je napisana v jeziku Crystal in se distribuira pod licenco Apache 2.0.

V jeziku se uporablja statična preverjanje tipov, izvedena brez potrebe po izrecnem navajanju tipov spremenljivk in argumentov metod v kodi. Programi v Crystal se prevajajo v izvršne datoteke, z izračunavanjem makro in generiranjem kode med prevajanjem. V programih v jeziku Crystal je dovoljena povezava z bindigi, napisanimi v jeziku C. Paralelizacija izvajanja kode se izvaja s pomočjo ključne besede 'spawn', ki omogoča zagon ozadnje naloge v asinhronem načinu, ne da bi blokirala glavno nit, v obliki lahkih niti, imenovanih vlakna (Fiber).

Standardna knjižnica nudi širok spekter funkcionalnosti, vključno z orodji za obdelavo CSV, YAML in JSON, komponentami za ustvarjanje HTTP strežnikov ter podporo za WebSocket. Pri razvoju je priročno uporabiti ukaz „crystal play“, ki ustvari spletni vmesnik (privzeto localhost:8080) za interaktivno izvajanje kode v jeziku Crystal.

Glavne spremembe:

  • V tuplih je dovoljen indeksni dostop do elementov različnih tipov, saj ima prevajalnik informacije o tem, katere vrste je vsak element. Na primer: tuple = {1, „hello“, ‘x’} v = tuple[0..1] # vrača {1, „hello“} typeof(v) # => Tuple(Int32, String)
  • V nizu in značilnih literali je prepovedana uporaba nadomestnih okrajšav v Unicode escape sekvencah, kot je „\uD834“. Za kodiranje poljubnih vrednosti je treba uporabiti notacijo „\x“.
  • Iz standardne knjižnice je bilo odstranjeno veliko število definicij, makrov in metod, prej označenih za zastarele. Vključuje metode Set, StaticArray#[], YAML.new, HTTP::Request, HTTP::WebSocket, Hash#delete_if, Process#kill itd.
  • V makrih getter in property je zdaj obvezno navesti vrnjeno vrsto.
  • Privzeta metoda za zaokroževanje je spremenjena v TIES_EVEN („zaokroževanje bankirja“, do najbližjega celega števila, za mejne primere pa do najbližjega sodo števila). V Number#round je dodan parameter RoundingMode, ki omogoča izbiro metode zaokroževanja. Med razpoložljivimi metodami so: TIES_EVEN, TIES_AWAY, TO_ZERO, TO_POSITIVE, TO_NEGATIVE.
  • V zbirkah je omogočena funkcionalnost Enumerable#flat_map in Iterator#flat_map z elementi mešanih tipov.
  • Pri serializaciji zaporedij Enum se zdaj uporabljajo prikazi v obliki nizov s podčrtaji.
  • Tipi, opredeljeni v modulu XML, so preneseni z uporabo class namesto struct.
  • Zaradi varnostnih razlogov je prenehana dešifriranje imen piškotkov, prav tako kodiranje in dešifriranje vrednosti piškotkov (kodiranje je preusmerjeno na okvire in aplikacije). Metoda HTTP::Cookies.from_headers je razdeljena na dve različici za strežnikov in stranke.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster