Dart 2.15 proqramlaşdırma dili və Flutter 2.8 çərçivəsi mövcuddur

Google Dart 2.15 proqramlaşdırma dilinin buraxılışını nəşr etdi, o, Dart 2-nin köklü şəkildə yenidən işlənmiş qolunun inkişafını davam etdirir, Dart dilinin orijinal versiyasından güclü statik yazmanın istifadəsi ilə fərqlənir (növlər avtomatik olaraq müəyyən edilə bilər, buna görə də növlərin göstərilməsinə ehtiyac yoxdur, lakin dinamik tipləmə artıq istifadə edilmir və ilkin olaraq hesablanan tip dəyişənə təyin edilir və sonradan ciddi tip yoxlaması tətbiq edilir).

Dart dilinin xüsusiyyətləri:

  • JavaScript, C və Java proqramçıları üçün təbii olan tanış və öyrənilməsi asan sintaksis.
  • Portativ cihazlardan tutmuş güclü serverlərə qədər bütün müasir veb-brauzerlər və müxtəlif növ mühitlər üçün sürətli işə salınma və yüksək performansın təmin edilməsi.
  • Mövcud metod və məlumatların inkapsulyasiyasına və təkrar istifadəsinə imkan verən sinifləri və interfeysləri müəyyən etmək bacarığı.
  • Növlərin müəyyən edilməsi səhvləri aradan qaldırmağı və aşkar etməyi asanlaşdırır, kodu daha aydın və oxunaqlı edir və üçüncü tərəf tərtibatçıları tərəfindən onun dəyişdirilməsini və təhlilini asanlaşdırır.
  • Dəstəklənən növlərə aşağıdakılar daxildir: müxtəlif növ heşlər, massivlər və siyahılar, növbələr, rəqəmli və sətir tipləri, tarix və vaxtı təyin etmək üçün növlər, müntəzəm ifadələr (RegExp). Öz növlərinizi yaratmaq mümkündür.
  • Paralel icranı təşkil etmək üçün kodu ayrı bir yaddaş sahəsində tamamilə təcrid olunmuş məkanda yerinə yetirilən, mesajların göndərilməsi ilə əsas proseslə qarşılıqlı əlaqədə olan isolate atributlu siniflərdən istifadə etmək təklif olunur.
  • Böyük veb layihələrin dəstəklənməsini və sazlanmasını asanlaşdıran kitabxanaların istifadəsinə dəstək. Funksiyaların üçüncü tərəf tətbiqləri ortaq kitabxanalar şəklində daxil edilə bilər. Tətbiqləri hissələrə bölmək və hər bir hissənin işlənməsini ayrıca proqramçılar komandasına həvalə etmək olar.
  • Dart dilində inkişafı dəstəkləmək üçün hazır alətlər toplusu, o cümlədən dinamik inkişaf və kod korreksiyası ilə sazlama vasitələrinin tətbiqi (“redaktə et və davam et”).
  • Dart dilində inkişafı asanlaşdırmaq üçün o, SDK, paket meneceri pub, statik kod analizatoru dart_analyzer, kitabxanalar dəsti, inteqrasiya olunmuş inkişaf mühiti DartPad və IntelliJ IDEA, WebStorm, Emacs, Sublime Text üçün Dart-la aktivləşdirilən plaginlərlə gəlir. 2 və Vim.
  • Kitabxanalar və kommunal xidmətlər olan əlavə paketlər təxminən 22 min paketi olan pub repozitoriyası vasitəsilə paylanır.

Dart 2.15 buraxılışında əsas dəyişikliklər:

  • İşləyicilərin izolyasiyası ilə tapşırıqların sürətli paralel icrası üçün alətlər təqdim edir. Çox nüvəli sistemlərdə Dart işləmə vaxtı standart olaraq bir CPU nüvəsində proqram kodunu işlədir və asinxron I/O, fayllara yazmaq və ya şəbəkə zəngləri etmək kimi sistem tapşırıqlarını yerinə yetirmək üçün digər nüvələrdən istifadə edir. İşləyicilərini paralel olaraq yerinə yetirməli olan proqramlar üçün, məsələn, interfeysdə animasiya göstərmək üçün, əsas proqram ipi ilə eyni vaxtda bir-birindən təcrid olunmuş və digər CPU nüvələrində icra olunan ayrı-ayrı kod bloklarını işə salmaq (izolyasiya etmək) mümkündür. . Eyni verilənlər toplusu ilə işləyən kodun eyni vaxtda icrası zamanı yaranan səhvlərdən qorunmaq üçün dəyişkən obyektlərin müxtəlif izolyasiya bloklarında paylaşılması qadağandır və işləyicilər arasında qarşılıqlı əlaqə üçün mesaj ötürmə modelindən istifadə olunur.

    Dart 2.15 yeni bir konsepsiya təqdim edir - təcrid olunmuş blok qrupları (izolyasiya qrupları), bu, eyni qrupun bir hissəsi olan təcrid bloklarında müxtəlif daxili məlumat strukturlarına ortaq girişi təşkil etməyə imkan verir və bu, qrupdakı işləyicilər arasında qarşılıqlı əlaqə zamanı əlavə xərcləri əhəmiyyətli dərəcədə azalda bilər. . Məsələn, mövcud qrupda əlavə təcrid blokunun işə salınması proqram verilənləri strukturlarının işə salınması zərurətinin aradan qaldırılması ilə əlaqədar ayrıca təcrid blokunun işə salınmasından 100 dəfə daha sürətli və 10-100 dəfə az yaddaş tələb edir.

    Qrupdakı təcrid bloklarının dəyişən obyektlərə paylaşılan girişi hələ də qadağan etməsinə baxmayaraq, qruplar resurs tutumlu surət çıxarma əməliyyatlarını yerinə yetirmədən obyektlərin bir blokdan digərinə ötürülməsini əhəmiyyətli dərəcədə sürətləndirə bilən paylaşılan yığın yaddaşdan istifadə edirlər. Yeni versiya, həmçinin əməliyyatların surətini çıxarmadan məlumatları ana izolyasiya blokuna ötürmək üçün Isolate.exit()-ə zəng edərkən işləyicinin nəticəsini ötürməyə imkan verir. Bundan əlavə, mesajın ötürülməsi mexanizmi optimallaşdırılıb - indi kiçik və orta ölçülü mesajlar təxminən 8 dəfə sürətlə emal edilir. SendPort.send() çağırışından istifadə edərək izolyasiyalar arasında ötürülə bilən obyektlərə bəzi növ funksiyalar, bağlamalar və yığın izləri daxildir.

  • Digər obyektlərdə fərdi funksiyalar üçün göstəricilər yaratmaq alətlərində (yırtma), konstruktor kodunda oxşar göstəricilərin yaradılmasına məhdudiyyətlər aradan qaldırıldı, bu Flutter kitabxanası əsasında interfeyslər qurarkən faydalı ola bilər. Məsələn, çoxsaylı Mətn vidcetlərini özündə birləşdirən Sütun vidceti yaratmaq üçün siz ".map()"-a zəng edə və göstəriciləri Mətn obyektinin Text.new konstruktoruna ötürə bilərsiniz: sinif FruitWidget genişləndirir StatelessWidget { @override Widget build(BuildContext context) { Sütunu qaytarın (uşaqlar: ['Apple', 'Orange'].map(Text.new).toList()); } }
  • Funksiya göstəricilərinin istifadəsi ilə bağlı imkanlar genişləndirilmişdir. Qeyri-ümumi metod və göstərici yaratmaq üçün ümumi metodlardan və funksiya göstəricilərindən istifadə etmək imkanı əlavə edildi: T id (T dəyəri) => dəyər; var intId = id ; // "int Function(int) intId = id;" əvəzinə 2.15 versiyasında icazə verilir. const fo = id; // funksiya identifikatoruna göstərici. const c1 = fo ;
  • dart:core kitabxanası nömrələr üçün təkmilləşdirilmiş dəstəkə malikdir, məsələn, indi ".name" metodundan istifadə edərək hər bir enum dəyərindən sətir dəyəri çıxara, ada görə dəyərləri seçə və ya dəyər cütlərini uyğunlaşdıra bilərsiniz: enum MyEnum { bir , iki, üç } void main() { çap (MyEnum.one.name); // "bir" çap olunacaq. print(MyEnum.values.byName('iki') == MyEnum.two); // "doğru" çap olunacaq. yekun xəritə = MyEnum.values.asNameMap(); çap (xəritə['üç'] == MyEnum.three); // "doğru". }
  • 64 bitlik ünvan sahəsi ünvanlama üçün kifayət edərsə (32 GB-dan çox yaddaş istifadə edilmir) 4 bitlik mühitlərdə göstəricilərin daha yığcam təsvirindən istifadə etməyə imkan verən göstərici sıxılma texnikası tətbiq edilmişdir. Testlər göstərdi ki, belə optimallaşdırma yığın ölçüsünü təxminən 10% azaltmağa imkan verir. Flutter SDK-da yeni rejim artıq standart olaraq Android üçün aktivdir və gələcək buraxılışda iOS üçün aktivləşdirilməsi planlaşdırılır.
  • Dart SDK-ya əvvəllər ayrıca paketdə təqdim edilmiş sazlama və performans təhlili alətləri (DevTools) daxildir.
  • Məxfi məlumatların təsadüfən dərc olunmasını izləmək üçün “dart pub” əmrinə və pub.dev paket anbarlarına alətlər əlavə edilib, məsələn, paketin içərisində davamlı inteqrasiya sistemləri və bulud mühitləri üçün etimadnamələr buraxmaq. Belə sızmalar aşkar edilərsə, “dart pub publish” əmrinin icrası xəta mesajı ilə dayandırılacaq. Yanlış pozitiv olarsa, ağ siyahı vasitəsilə çeki keçmək mümkündür.
  • Paketin artıq dərc olunmuş versiyasını ləğv etmək imkanı pub.dev repozitoriyasına əlavə edilib, məsələn, təhlükəli xətalar və ya boşluqlar aşkar edildikdə. Əvvəllər bu cür düzəlişlər üçün təcrübə düzəldici versiyanı dərc etmək idi, lakin bəzi hallarda mövcud buraxılışı ləğv etmək və onun sonrakı yayılmasını təcili olaraq dayandırmaq lazımdır (məsələn, düzəliş hələ hazır deyilsə və ya tam buraxılış olubsa) sınaq versiyası əvəzinə səhvən dərc edilmişdir). Ləğv edildikdən sonra paket artıq “pub get” və “pub upgrade” əmrlərində müəyyən edilmir və onu artıq quraşdırmış sistemlərdə növbəti dəfə “pub get” icra edildikdə xüsusi xəbərdarlıq verilir.
  • Ekran sırasını dəyişən kodda unicode simvollarının istifadəsi nəticəsində yaranan zəifliyə (CVE-2021-22567) qarşı əlavə qorunma.
  • Pub.dev oauth2021 giriş nişanlarını qəbul edən üçüncü tərəf serverinə paketləri dərc edərkən başqa pub.dev istifadəçisini təqlid etməyə imkan verən boşluq (CVE-22568-2) düzəldildi. Məsələn, zəiflik daxili və korporativ paket serverlərinə hücum etmək üçün istifadə edilə bilər. Yalnız pub.dev-də paketləri saxlayan tərtibatçılar bu problemdən təsirlənmir.

Eyni zamanda, React Native-ə alternativ hesab edilən və vahid kod bazası əsasında iOS, Android, Windows, macOS və digər sistemlər üçün proqramları buraxmağa imkan verən Flutter 2.8 istifadəçi interfeysi çərçivəsinin əhəmiyyətli buraxılışı təqdim edildi. Linux platformaları, həmçinin brauzerlərdə işləmək üçün proqramlar yaradır. Google tərəfindən hazırlanmış Fuchsia mikrokernel əməliyyat sistemi üçün xüsusi qabıq Flutter əsasında qurulub. Qeyd olunur ki, son altı ayda Google Play Store-da Flutter 2 tətbiqlərinin sayı 200 mindən 375 minə yüksəlib, yəni. demək olar ki, iki dəfə.

Flutter kodunun əsas hissəsi Dart dilində həyata keçirilir və proqramların icrası üçün iş vaxtı mühərriki C++ dilində yazılmışdır. Tətbiqlər hazırlayarkən Flutterin doğma Dart dilindən əlavə, siz C/C++ kodunu çağırmaq üçün Dart Xarici Funksiya interfeysindən istifadə edə bilərsiniz. Yüksək icra performansı tətbiqləri hədəf platformalar üçün yerli koda tərtib etməklə əldə edilir. Bu halda, hər dəyişiklikdən sonra proqramın yenidən tərtib edilməsinə ehtiyac yoxdur - Dart, işləyən proqrama dəyişikliklər etməyə və dərhal nəticəni qiymətləndirməyə imkan verən qaynar yenidən yükləmə rejimini təmin edir.

Flutter-in yeni buraxılışında edilən dəyişikliklər arasında mobil cihazlarda işə salınma sürətinin və yaddaş sərfinin optimallaşdırılması qeyd olunub. Tətbiqləri Firebase və Google Cloud kimi backend xidmətlərinə qoşmaq daha asandır. Google Ads ilə inteqrasiya üçün alətlər stabilləşdirilib. Kameralar və veb plaginlər üçün dəstək əhəmiyyətli dərəcədə yaxşılaşdırıldı. İnkişafı asanlaşdırmaq üçün yeni alətlər təklif edilmişdir, məsələn, Firebase istifadə edərək autentifikasiya üçün vidcet əlavə edilmişdir. Flutter istifadə edərək 2D oyunların hazırlanması üçün nəzərdə tutulmuş Flame mühərriki yenilənib.

Mənbə: opennet.ru

Добавить комментарий