Crystal 1.0 programazio-lengoaia kaleratu zen. Oharra lehen kaleratze esanguratsu gisa markatuta dago, 8 urteko lana laburbildu eta hizkuntzaren egonkortzea eta lan-proiektuetan erabiltzeko prest egotea markatu duena. 1.x adarrak atzerako bateragarritasuna mantenduko du eta lehendik dagoen kodearen eraikuntzan eta funtzionamenduan negatiboki eragiten duen hizkuntzan edo liburutegi estandarrean aldaketarik ez dagoela ziurtatuko du.
Выпуски 1.0.y будут включать лишь корректирующие исправления, а версии 1.x.0 будут предлагать новую функциональность и значительные изменения, сохраняя при этом совместимостью с кодом. Новые идеи и потенциально несовместимые изменения будут развиваться в отдельной ветке, на базе которой в последующем будет сформирован выпуск Crystal 2.0. Некоторые возможности Crystal 1.0 объявлены как предварительные и несмотря на наличие в ветке 1.0, они не подпадают под официальную поддержку. Среди таких возможностей моногопоточность, работа на платформе Windows, использование на системах с процессорами ARM.
Gogora dezagun Crystal garatzaileak Ruby lengoaiaren garapenaren erosotasuna eta C lengoaiaren berezko aplikazioen errendimendu altua uztartzen saiatzen ari direla. Crystal-ren sintaxia Ruby-ren 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 paralelismoa "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:
- Tuplek mota ezberdinetako elementuetarako sarbide indexatua ahalbidetzen dute, konpilatzaileak badakielako zer mota den elementu bakoitza. Adibidez: tupla = {1, “kaixo”, ‘x’} v = tupla[0..1] # {1, “kaixo”} typeof(v) # => Tupla (Int32, String) sortuko du
- Kate eta karaktere literalek ez dute onartzen "\uD834" bezalako Unicode ihes-sekuentziak ordezko laburdurak erabiltzea. Balio arbitrarioak kodetzeko, erabili "\x" idazkera.
- Liburutegi estandarrean, lehen zaharkitu gisa markatuta zeuden definizio, makro eta metodoen zati handi bat kendu da. Set, StaticArray#[], YAML.new, HTTP::Request, HTTP::WebSocket, Hash#delete_if, Process#kill, etab.
- Getter eta jabetza makroek itzulera mota zehaztu behar dute orain.
- Biribilketa-metodo lehenetsia TIES_EVEN-ra aldatu da ("bankariaren biribilketa", hurbilen dagoen zenbaki osora, eta mugako egoeretarako hurbilen dagoen zenbaki bikoitira). RoundingMode parametroa Number#round-era gehitu da, biribiltzeko metodoa hautatzeko aukera emanez. Eskuragarri dauden metodoak hauek dira: TIES_EVEN, TIES_AWAY, TO_ZERO, TO_POSITIVE, TO_NEGATIVE.
- Enumerable#flat_map eta Iterator#flat_map-ek bildumetako mota mistoko elementuekin funtzionatzen dute.
- Enum sekuentzien serializazioak orain azpimarra-kateen irudikapenak erabiltzen ditu.
- XML moduluan definitutako motak struct erabiltzeatik klasera eraman dira.
- Segurtasun arrazoiengatik, cookien izenen deskodetzea, baita cookien balioen kodeketa eta deskodetzea ere, eten egin da (orain birkodetzea framework eta aplikazioen ardura da). HTTP::Cookies.from_headers metodoa bi aldaeratan banatu da zerbitzariak eta bezeroak.
Iturria: opennet.ru
