Crystal programazio-lengoaia 1.2

Crystal 1.2 programazio-lengoaiaren oharra argitaratu da, eta horien garatzaileak Ruby lengoaiaren garapenaren erosotasuna eta C lengoaiaren aplikazio-errendimendu handiko ezaugarria uztartzen saiatzen ari dira. Crystal-ren sintaxia Ruby-tik hurbil dago, baina ez da guztiz bateragarria, Ruby-ren programa batzuk aldatu gabe exekutatzen diren arren. Konpiladorearen kodea Crystal-en idatzita dago eta Apache 2.0 lizentziapean banatzen da.

Hizkuntzak motaren egiaztapen estatikoa erabiltzen du, kodean aldagai motak eta metodo argumentuak esplizituki zehaztu beharrik gabe inplementatuta. Crystal programak fitxategi exekutagarrietan konpilatzen dira, makroekin ebaluatu eta kodea konpilazio garaian sortzen da. Crystal programetan, C-n idatzitako loturak konekta daitezke. Kodearen exekuzioaren paralelizazioa "spawn" gako-hitza erabiliz egiten da, atzeko planoko zeregin bat modu asinkronoan exekutatzeko aukera ematen duena, hari nagusia blokeatu gabe, zuntz izeneko hari arinetan.

Liburutegi estandarrak funtzio komun ugari eskaintzen ditu, besteak beste, CSV, YAML eta JSON prozesatzeko tresnak, HTTP zerbitzariak sortzeko osagaiak eta WebSocket euskarria. Garapen-prozesuan zehar, komenigarria da "crystal play" komandoa erabiltzea, web interfaze bat sortzen duena (localhost:8080 lehenespenez) kodearen exekuzio interaktiborako Crystal hizkuntzan.

Aldaketa nagusiak:

  • Klase generiko baten azpiklase bat guraso klase baten elementu bati esleitzeko gaitasuna gehitu da. klase Foo(T); amaierako klasea Bar(T) < Foo(T); amaiera x = Foo x = Barra
  • Makroek orain azpimarra erabil dezakete for begizta bateko balio bat baztertzeko. {% _, v, i for {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • "file_exists?" metodoa gehitu da makroei. fitxategi baten existentzia egiaztatzeko.
  • Liburutegi estandarrak 128 biteko zenbaki osoak onartzen ditu orain.
  • Indexable::Mutable(T) modulua gehitu da BitArray eta Deque bezalako bildumetarako eragiketa aurreratuen ezarpenarekin. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = egia # ba = BitArray[1000000000] ba.biratu!(-1) # ba = BitArray[0100000000]
  • XML::Node#namespace_definition metodoa gehitu da XML-tik izen-espazio zehatz bat ateratzeko.
  • IO#write_utf8 eta URI.encode metodoak zaharkituta geratu dira eta IO#write_string eta URI.encode_path-ekin ordezkatu behar dira.
  • 32 biteko x86 arkitekturarako euskarria bigarren mailara eraman da (jada ez dira sortzen prest dauden paketeak). ARM64 arkitekturarako lehen laguntza mailarako transferentzia prestatzen ari da.
  • Lanak jarraitzen du Windows plataformarako laguntza osoa bermatzeko. Windows socketetarako euskarria gehitu da.
  • MacOSentzako pakete unibertsala gehitu da, bai x86 prozesadoredun gailuetan eta baita Apple M1 txipa duten ekipoetan ere.

Iturria: opennet.ru

Gehitu iruzkin berria