Crystal dasturlash tilining chiqarilishi 1.2

Crystal 1.2 dasturlash tilining chiqarilishi chop etildi, uni ishlab chiquvchilari Ruby tilida ishlash qulayligini C tiliga xos bo'lgan yuqori amaliy ko'rsatkichlar bilan uyg'unlashtirishga harakat qilmoqda. Crystalning sintaksisi Ruby ga yaqin, lekin to'liq mos kelmaydi, garchi ba'zi Ruby dasturlari o'zgartirishlarsiz ishlaydi. Kompilyator kodi Crystal-da yozilgan va Apache 2.0 litsenziyasi ostida tarqatiladi.

Til koddagi o'zgaruvchilar turlarini va usul argumentlarini aniq ko'rsatishga hojat qoldirmasdan amalga oshiriladigan statik turdagi tekshirishdan foydalanadi. Kristal dasturlar bajariladigan fayllarga kompilyatsiya qilinadi, makroslar baholanadi va kompilyatsiya vaqtida kod yaratiladi. Crystal dasturlarida C tilida yozilgan bog'lanishlarni ulash mumkin. Kodning bajarilishini parallellashtirish "spawn" kalit so'zi yordamida amalga oshiriladi, bu sizga fon vazifasini asinxron ravishda, asosiy ipni bloklamasdan, tolalar deb ataladigan engil iplar shaklida bajarishga imkon beradi.

Standart kutubxona CSV, YAML va JSON-ni qayta ishlash vositalarini, HTTP serverlarini yaratish komponentlarini va WebSocket-ni qo'llab-quvvatlashni o'z ichiga olgan keng tarqalgan funktsiyalar to'plamini taqdim etadi. Ishlab chiqish jarayonida Crystal tilida kodni interaktiv bajarish uchun veb-interfeysni (sukut bo'yicha localhost:8080) yaratuvchi "kristal o'ynash" buyrug'idan foydalanish qulay.

Asosiy o'zgarishlar:

  • Umumiy sinfning pastki sinfini ota-sinf elementiga belgilash imkoniyati qo'shildi. sinf Foo(T); oxirgi sinf Bar(T) < Foo(T); end x = Foo x = Bar
  • Makroslar endi for tsiklidagi qiymatni e'tiborsiz qoldirish uchun pastki chiziqdan foydalanishi mumkin. {% for _, v, i in {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • Makroslarga β€œfayl_bor?” usuli qoβ€˜shildi. fayl mavjudligini tekshirish uchun.
  • Standart kutubxona endi 128 bitli butun sonlarni qo'llab-quvvatlaydi.
  • BitArray va Deque kabi to'plamlar uchun ilg'or operatsiyalarni amalga oshirish bilan Indexable::Mutable(T) moduli qo'shildi. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = rost # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • XML dan ma'lum bir nom maydonini olish uchun XML::Node#namespace_definition usuli qo'shildi.
  • IO#write_utf8 va URI.encode usullari eskirgan va ularni IO#write_string va URI.encode_path bilan almashtirish kerak.
  • 32-bitli x86 arxitekturasini qo'llab-quvvatlash ikkinchi darajaga ko'chirildi (tayyor paketlar endi yaratilmaydi). ARM64 arxitekturasini qo'llab-quvvatlashning birinchi darajasiga o'tish tayyorlanmoqda.
  • Windows platformasini to'liq qo'llab-quvvatlash bo'yicha ishlar davom etmoqda. Windows soketlari uchun qo'shimcha yordam.
  • MacOS uchun universal paket qo'shildi, u ham x86 protsessorli qurilmalarda, ham Apple M1 chipli qurilmalarda ishlaydi.

Manba: opennet.ru

a Izoh qo'shish