Crystal dasturlash tilining chiqarilishi 1.5

Crystal 1.5 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:

  • Kompilyator mavhum usulni amalga oshirishda va uning ta'rifida argument nomlarining mosligini tekshirishni qo'shdi. Agar nom nomuvofiqligi bo'lsa, endi ogohlantirish beriladi: mavhum sinf FooAbstract abstrakt def foo(raqam: Int32) : Nil end klassi Foo < FooAbstract def foo(name : Int32) : Nil p nomi oxiri 6 | def foo(name : Int32) : Nil ^— Ogohlantirish: “nom” pozitsion parametri bekor qilingan FooAbstract#foo(raqam: Int32) usulining “raqami” parametriga mos keladi, bu boshqa nomga ega va nomli argument uzatilishiga taʼsir qilishi mumkin.
  • Argumentni o'zgaruvchining qiymatiga yozilmagan usulga tayinlashda, argument endi o'sha o'zgaruvchining turi bilan cheklanadi. class Foo @x : Int64 def initialize(x) @x = x # parametr x yoziladi @x end end
  • Usullar yoki makroslar parametrlariga izohlar qo'shish imkonini beradi. def foo(@[MaybeUnused] x); oxiri # OK
  • Konstantalarni indekslar va kortejlardagi nomlar sifatida ishlatish uchun qo'shimcha yordam. KEY = "s" foo = {s: "String", n: 0} foo[KEY].size qo'yadi
  • Fayl va kataloglarni oʻchirish uchun File API-ga yangi File#delete? usullari qoʻshildi. va Dir#delete?, agar fayl yoki katalog yo'q bo'lsa, false qaytaradi.
  • File.tempfile usulining himoyasi kuchaytirildi, bu endi fayl nomini tashkil etuvchi satrlarda null belgilarga ruxsat bermaydi.
  • NO_COLOR muhit oʻzgaruvchisi qoʻshildi, bu kompilyator va tarjimon chiqishida ranglarni ajratib koʻrsatishni oʻchirib qoʻyadi.
  • Tarjimon rejimida ishlash sezilarli darajada yaxshilandi.

Manba: opennet.ru

a Izoh qo'shish