Nim 0.20 dasturlash tilining yangi versiyasi

bo'lib o'tdi tizim dasturlash tilini chiqarish Nim 0.20.0. Til statik yozishdan foydalanadi va Paskal, C++, Python va Lisp tillarini hisobga olgan holda yaratilgan. Nim manba kodi C, C++ yoki JavaScript ko'rinishida tuzilgan. Keyinchalik, olingan C/C++ kodi har qanday mavjud kompilyator (clang, gcc, icc, Visual C++) yordamida bajariladigan faylga kompilyatsiya qilinadi, bu sizga C ga yaqin ishlashga erishish imkonini beradi, agar siz ishga tushirish xarajatlarini hisobga olmasangiz. axlat yig'uvchi. Python-ga o'xshab, Nim blok cheklovchi sifatida chekinishdan foydalanadi. Metadasturlash vositalari va domenga xos tillarni (DSL) yaratish imkoniyatlari qo'llab-quvvatlanadi. Loyiha kodi ta'minlangan MIT litsenziyasi ostida.

Nim 0.20 versiyasi birinchi barqaror 1.0 versiyasiga nomzod sifatida ko'rib chiqilishi mumkin, bu tilning holatini ta'minlaydigan birinchi barqaror filialni shakllantirish uchun zarur bo'lgan bir nechta o'zaro ishlash qobiliyatini buzadigan o'zgarishlarni o'z ichiga oladi. 1.0 versiyasi barqaror, uzoq muddatli qo'llab-quvvatlash versiyasi sifatida e'tirof etilgan bo'lib, u tilning barqarorlashgan qismida orqaga qarab muvofiqlikni saqlab qolish uchun kafolatlanadi. Alohida ravishda, kompilyatorda eksperimental rejim ham mavjud bo'lib, unda orqaga qarab muvofiqlikni buzishi mumkin bo'lgan yangi xususiyatlar ishlab chiqiladi.

Nim 0.20 da taklif qilingan o'zgarishlar orasida:

  • "Not" endi har doim unar operator, ya'ni. “assert(not a)” kabi iboralar endi ruxsat etilmaydi va faqat “assert not a”ga ruxsat beriladi;
  • Kompilyatsiya bosqichida butun sonlar va haqiqiy sonlarni konvertatsiya qilish uchun qattiq tekshiruvlar yoqilgan, ya'ni. "const b = uint16(-1)" iborasi endi xatoga olib keladi, chunki -1 belgisisiz butun son turiga aylantirib bo'lmaydi;
  • Konstantalar va tsikl o'zgaruvchilari uchun kortejlarni ochish ta'minlanadi.
    Masalan, endi siz ‘const (d, e) = (7, “sakkiz”)” va “f (x, y) uchun” kabi topshiriqlardan foydalanishingiz mumkin;

  • Xesh va jadvallarning sukut bo'yicha ishga tushirilishi taqdim etilgan. Misol uchun, "var s: HashSet[int]" ni e'lon qilgandan so'ng, avval xatoga olib kelgan "s.incl(5)" ni darhol bajarishingiz mumkin;
  • "Case" operatori va massiv indeksi chegaradan tashqarida bo'lgan muammolar uchun xato ma'lumotlari yaxshilandi;
  • Takrorlash paytida jadval uzunligini o'zgartirish taqiqlanadi.

Manba: opennet.ru

a Izoh qo'shish