Dart 2.15 dasturlash tili va Flutter 2.8 ramkasi mavjud

Google Dart 2.15 dasturlash tilini nashr etdi, u Dart 2-ning tubdan qayta ishlangan bo'limining rivojlanishini davom ettiradi, bu Dart tilining asl versiyasidan kuchli statik yozishdan foydalanish bilan farqlanadi (turlar avtomatik ravishda aniqlanishi mumkin, shuning uchun). turlarini ko'rsatish shart emas, lekin dinamik terish endi ishlatilmaydi va dastlab hisoblangan tur o'zgaruvchiga tayinlanadi va keyinchalik qattiq tur tekshiruvi qo'llaniladi).

Dart tilining xususiyatlari:

  • Tanish va o'rganish oson sintaksis, JavaScript, C va Java dasturchilari uchun tabiiy.
  • Portativ qurilmalardan tortib kuchli serverlargacha bo'lgan barcha zamonaviy veb-brauzerlar va har xil turdagi muhitlar uchun tezkor ishga tushirish va yuqori unumdorlikni ta'minlash.
  • Mavjud usullar va ma'lumotlarni inkapsulyatsiya qilish va qayta ishlatish imkonini beruvchi sinflar va interfeyslarni aniqlash qobiliyati.
  • Turlarni ko'rsatish xatolarni tuzatish va aniqlashni osonlashtiradi, kodni aniqroq va o'qilishi mumkin bo'ladi va uchinchi tomon ishlab chiquvchilari tomonidan uni o'zgartirish va tahlil qilishni soddalashtiradi.
  • Qo'llab-quvvatlanadigan turlarga quyidagilar kiradi: har xil turdagi xeshlar, massivlar va ro'yxatlar, navbatlar, raqamli va qatorlar turlari, sana va vaqtni aniqlash uchun turlar, muntazam ifodalar (RegExp). O'zingizning turlaringizni yaratishingiz mumkin.
  • Parallel bajarishni tashkil qilish uchun kodi to'liq alohida xotira maydonida, xabarlarni jo'natish orqali asosiy jarayon bilan o'zaro aloqada bo'lgan izolyatsiya qilingan maydonda bajariladigan izolyatsiyalash atributiga ega sinflardan foydalanish taklif etiladi.
  • Katta veb-loyihalarni qo'llab-quvvatlash va disk raskadrovka qilishni soddalashtiradigan kutubxonalardan foydalanishni qo'llab-quvvatlash. Funksiyalarning uchinchi tomon ilovalari umumiy kutubxonalar shaklida kiritilishi mumkin. Ilovalarni qismlarga bo'lish va har bir qismni ishlab chiqishni alohida dasturchilar jamoasiga topshirish mumkin.
  • Dart tilidagi rivojlanishni qo'llab-quvvatlash uchun tayyor vositalar to'plami, shu jumladan dinamik rivojlanish va disk raskadrovka vositalarini tezda kodni tuzatish bilan ("tahrirlash va davom ettirish").
  • Dart tilida ishlab chiqishni soddalashtirish uchun u SDK, paketlar menejeri pub, dart_analyzer statik kod analizatori, kutubxonalar to'plami, DartPad integratsiyalashgan ishlab chiqish muhiti va IntelliJ IDEA, WebStorm, Emacs, Sublime Text uchun Dart-ni qo'llab-quvvatlaydigan plaginlar bilan birga keladi. 2 va Vim.
  • Kutubxonalar va yordamchi dasturlarga ega qo'shimcha paketlar 22 mingga yaqin paketga ega bo'lgan pub ombori orqali tarqatiladi.

Dart 2.15 versiyasidagi asosiy o'zgarishlar:

  • Ishlovchilarni izolyatsiyalash bilan vazifalarni tezkor parallel bajarish uchun vositalarni taqdim etadi. Ko'p yadroli tizimlarda Dart ish vaqti sukut bo'yicha bir protsessor yadrosida dastur kodini ishga tushiradi va asinxron kiritish-chiqarish, fayllarga yozish yoki tarmoq qo'ng'iroqlarini amalga oshirish kabi tizim vazifalarini bajarish uchun boshqa yadrolardan foydalanadi. O'z ishlov beruvchilarini parallel ravishda bajarishi kerak bo'lgan ilovalar uchun, masalan, interfeysda animatsiyani ko'rsatish uchun, asosiy dastur chizig'i bilan bir vaqtda bir-biridan ajratilgan va boshqa CPU yadrolarida bajariladigan alohida kod bloklarini (izolyatsiya qilish) ishga tushirish mumkin. . Bir xil ma'lumotlar to'plami bilan ishlaydigan kodni bir vaqtning o'zida bajarishda yuzaga keladigan xatolardan himoya qilish uchun turli xil izolyatsiya bloklarida o'zgaruvchan ob'ektlarni almashish taqiqlanadi va ishlov beruvchilar o'rtasidagi o'zaro ta'sir uchun xabarlarni uzatish modeli qo'llaniladi.

    Dart 2.15 yangi kontseptsiyani taqdim etadi - izolyatsiyalangan blok guruhlari (izolyatsiya guruhlari), bu sizga bir guruhning bir qismi bo'lgan izolyatsiya qilingan bloklardagi turli xil ichki ma'lumotlar tuzilmalariga umumiy kirishni tashkil qilish imkonini beradi, bu guruhdagi ishlov beruvchilar o'rtasidagi o'zaro aloqada qo'shimcha xarajatlarni sezilarli darajada kamaytirishi mumkin. . Masalan, mavjud guruhda qo'shimcha izolyatsiya blokini ishga tushirish dastur ma'lumotlar tuzilmalarini ishga tushirish zarurati yo'qolganligi sababli, alohida izolyatsiya blokini ishga tushirishdan ko'ra 100 marta tezroq va 10-100 marta kamroq xotira talab qiladi.

    Guruhdagi izolyatsiyalash bloklari o'zgaruvchan ob'ektlarga umumiy kirishni hali ham taqiqlashiga qaramay, guruhlar umumiy yig'ma xotiradan foydalanadilar, bu esa resurslarni ko'p talab qiladigan nusxa ko'chirish operatsiyalarini bajarmasdan ob'ektlarni bir blokdan ikkinchisiga o'tkazishni sezilarli darajada tezlashtirishi mumkin. Yangi versiya, shuningdek, nusxa ko'chirish operatsiyalarisiz ma'lumotlarni ota-izolyatsiya blokiga o'tkazish uchun Isolate.exit() ga qo'ng'iroq qilganda ishlov beruvchining natijasini uzatish imkonini beradi. Bundan tashqari, xabarlarni uzatish mexanizmi optimallashtirildi - endi kichik va o'rta xabarlar taxminan 8 barobar tezroq qayta ishlanadi. SendPort.send() qo'ng'irog'i yordamida izolyatsiyalar o'rtasida o'tkazilishi mumkin bo'lgan ob'ektlar ba'zi turdagi funktsiyalarni, yopishlarni va stek izlarini o'z ichiga oladi.

  • Boshqa ob'ektlardagi individual funktsiyalarga ko'rsatgichlar yaratish vositalarida (yirtib tashlash) konstruktor kodida shunga o'xshash ko'rsatkichlarni yaratish bo'yicha cheklovlar olib tashlandi, bu Flutter kutubxonasi asosida interfeyslarni yaratishda foydali bo'lishi mumkin. Misol uchun, bir nechta Matn vidjetlarini o'z ichiga olgan Ustun vidjetini yaratish uchun siz ".map()" ga qo'ng'iroq qilishingiz va ko'rsatkichlarni Matn ob'ektining Text.new konstruktoriga o'tkazishingiz mumkin: klass FruitWidget kengaytirilgan StatelessWidget { @override Widget build(BuildContext context) { Qaytish Ustun (bolalar: ['Apple', 'Orange'].map(Text.new).toList()); } }
  • Funksiya ko'rsatkichlaridan foydalanish bilan bog'liq imkoniyatlar kengaytirildi. Umumiy bo'lmagan usul va ko'rsatkichni yaratish uchun umumiy usullar va funktsiya ko'rsatkichlaridan foydalanish imkoniyati qo'shildi: T id (T qiymati) => qiymat; var intId = id ; // 2.15 versiyada "int Function(int) intId = id;" o'rniga ruxsat berilgan. const fo = id; // funktsiya identifikatoriga ko'rsatgich. const c1 = fo ;
  • Dart:core kutubxonasi raqamlarni qo'llab-quvvatlashni yaxshilagan, masalan, endi siz ".name" usuli yordamida har bir enum qiymatidan satr qiymatini chiqarishingiz, qiymatlarni nomi bo'yicha tanlashingiz yoki qiymatlar juftligini moslashingiz mumkin: enum MyEnum { one , ikki, uch } void main() { print(MyEnum.one.name); // "bir" chop etiladi. print(MyEnum.values.byName('ikki') == MyEnum.two); // "to'g'ri" chop etiladi. yakuniy xarita = MyEnum.values.asNameMap(); print(map['uch'] == MyEnum.three); // "to'g'ri". }
  • Agar manzillash uchun 64 bitli manzil maydoni yetarli bo'lsa (32 Gb dan ortiq xotira ishlatilmasa) 4 bitli muhitda ko'rsatgichlarni yanada ixcham ko'rinishidan foydalanishga imkon beruvchi ko'rsatkichni siqish texnikasi amalga oshirildi. Sinovlar shuni ko'rsatdiki, bunday optimallashtirish yig'ish hajmini taxminan 10% ga kamaytirishga imkon beradi. Flutter SDK-da yangi rejim sukut bo'yicha Android uchun allaqachon yoqilgan va kelajakdagi versiyada iOS uchun yoqilishi rejalashtirilgan.
  • Dart SDK disk raskadrovka va ish faoliyatini tahlil qilish vositalarini (DevTools) o'z ichiga oladi, ular avval alohida paketda taqdim etilgan.
  • “Dart pub” buyrug‘i va pub.dev paket omborlariga maxfiy ma’lumotlarning tasodifiy nashr etilishini kuzatish uchun asboblar qo‘shildi, masalan, paket ichidagi uzluksiz integratsiya tizimlari va bulutli muhitlar uchun hisob ma’lumotlarini qoldirib. Agar bunday qochqinlar aniqlansa, "dart pub publish" buyrug'ining bajarilishi xato xabari bilan to'xtatiladi. Agar noto'g'ri ijobiy bo'lsa, oq ro'yxat orqali chekni chetlab o'tish mumkin.
  • Pub.dev omboriga paketning allaqachon nashr etilgan versiyasini bekor qilish imkoniyati qo'shildi, masalan, xavfli xatolar yoki zaifliklar aniqlansa. Ilgari, bunday tuzatishlar uchun tuzatuvchi versiyani nashr etish amaliyoti bo'lgan, ammo ba'zi hollarda mavjud nashrni bekor qilish va uning keyingi tarqalishini zudlik bilan to'xtatish kerak (masalan, agar tuzatish hali tayyor bo'lmasa yoki to'liq nashr etilgan bo'lsa). sinov versiyasi o'rniga xato bilan nashr etilgan). Bekor qilingandan so'ng, paket endi "pub get" va "pub upgrade" buyruqlarida aniqlanmaydi va uni o'rnatgan tizimlarda keyingi safar "pub get" bajarilganda maxsus ogohlantirish beriladi.
  • Ko'rsatish tartibini o'zgartiruvchi kodda unicode belgilaridan foydalanish natijasida yuzaga kelgan zaiflikdan (CVE-2021-22567) qo'shimcha himoya.
  • Pub.dev oauth2021 kirish tokenlarini qabul qiluvchi uchinchi tomon serveriga paketlarni nashr qilishda sizga boshqa pub.dev foydalanuvchisi taqlid qilish imkonini beruvchi zaiflik (CVE-22568-2) tuzatildi. Masalan, zaiflikdan ichki va korporativ paket serverlariga hujum qilish uchun foydalanish mumkin. Faqat pub.dev saytida paketlarni joylashtirgan dasturchilarga bu muammo ta'sir qilmaydi.

Shu bilan birga, Flutter 2.8 foydalanuvchi interfeysi ramkasining muhim versiyasi taqdim etildi, u React Native-ga muqobil hisoblanadi va yagona kod bazasi asosida iOS, Android, Windows, macOS va ilovalarni chiqarish imkonini beradi. Linux platformalari, shuningdek, brauzerlarda ishlash uchun ilovalar yaratish. Google tomonidan ishlab chiqilgan Fuchsia microkernel operatsion tizimi uchun maxsus qobiq Flutter asosida qurilgan. Qayd etilishicha, so‘nggi olti oy ichida Google Play do‘konidagi Flutter 2 ilovalari soni 200 mingdan 375 mingga ko‘paygan, ya’ni. deyarli ikki marta.

Flutter kodining asosiy qismi Dart tilida amalga oshirilgan va ilovalarni bajarish uchun ish vaqti mexanizmi C++ da yozilgan. Ilovalarni ishlab chiqishda, Flutterning ona tilidan tashqari, siz C/C++ kodini chaqirish uchun Dart Foreign Function interfeysidan foydalanishingiz mumkin. Ilovalarni maqsadli platformalar uchun mahalliy kodga kompilyatsiya qilish orqali yuqori ijro ko'rsatkichlariga erishiladi. Bunday holda, har bir o'zgarishdan keyin dasturni qayta kompilyatsiya qilish shart emas - Dart ishlayotgan dasturga o'zgartirishlar kiritish va natijani darhol baholash imkonini beruvchi issiq qayta yuklash rejimini taqdim etadi.

Flutter-ning yangi versiyasidagi o'zgarishlar orasida mobil qurilmalarda ishga tushirish tezligi va xotira sarfini optimallashtirish qayd etilgan. Ilovalarni Firebase va Google Cloud kabi backend xizmatlariga ulash osonroq. Google Ads bilan integratsiya vositalari barqarorlashtirildi. Kameralar va veb-plaginlarni qo'llab-quvvatlash sezilarli darajada yaxshilandi. Rivojlanishni soddalashtirish uchun yangi vositalar taklif qilindi, masalan, Firebase yordamida autentifikatsiya qilish uchun vidjet qo'shildi. Flutter yordamida 2D o‘yinlarni ishlab chiqish uchun mo‘ljallangan Flame dvigateli yangilandi.

Manba: opennet.ru

a Izoh qo'shish