Ulimi lokuhlela lwe-Dart 2.15 kanye nohlaka lwe-Flutter 2.8 luyatholakala

I-Google ishicilele ukukhululwa kolimi lwezinhlelo lwe-Dart 2.15, oluqhubekisela phambili ukuthuthukiswa kwegatsha eliklanywe kabusha ngokumangalisayo le-Dart 2, elihluke enguqulweni yokuqala yolimi lwe-Dart ngokusebenzisa ukuthayipha okuqinile okuqinile (izinhlobo zingachazwa ngokuzenzakalelayo, ukucacisa izinhlobo akudingekile, kodwa ukuthayipha okuguquguqukayo akusasetshenziswa futhi ekuqaleni kubalwe uhlobo lwabelwa kokuguquguqukayo bese kusetshenziswa ukuhlolwa kohlobo oluqinile).

Izici zolimi lwe-Dart:

  • I-syntax ejwayelekile futhi kulula ukuyifunda, yemvelo ye-JavaScript, C kanye nabahleli bezinhlelo ze-Java.
  • Ukuqinisekisa ukuqaliswa okusheshayo nokusebenza okuphezulu kuzo zonke iziphequluli zewebhu zesimanje nezinhlobo ezahlukahlukene zendawo, kusukela kumadivayisi aphathekayo kuya kumaseva anamandla.
  • Ikhono lokuchaza amakilasi nokuxhumana okuvumela ukuhlanganisa nokusebenzisa kabusha izindlela ezikhona nedatha.
  • Ukucacisa izinhlobo kwenza kube lula ukulungisa iphutha nokuhlonza amaphutha, kwenza ikhodi icace futhi ifundeke kakhudlwana, futhi kwenza ukuguqulwa nokuhlaziywa kwayo kube lula ngonjiniyela bezinkampani zangaphandle.
  • Izinhlobo ezisekelwayo zifaka: izinhlobo ezihlukahlukene zama-hashi, ama-array nohlu, imigqa, izinhlobo zezinombolo nezintambo, izinhlobo zokunquma idethi nesikhathi, izinkulumo ezivamile (RegExp). Kungenzeka ukudala izinhlobo zakho siqu.
  • Ukuze kuhlelwe ukubulawa okuhambisanayo, kuhlongozwa ukusebenzisa amakilasi anemfanelo ehlukanisiwe, ikhodi ekhishwa ngokuphelele endaweni engayodwa endaweni yenkumbulo ehlukile, ixhumana nenqubo eyinhloko ngokuthumela imilayezo.
  • Ukusekelwa kokusetshenziswa kwemitapo yolwazi eyenza kube lula ukusekelwa nokulungisa amaphutha amaphrojekthi amakhulu ewebhu. Ukuqaliswa kwemisebenzi yenkampani yangaphandle kungafakwa ngendlela yamalabhulali okwabelwana ngawo. Izicelo zingahlukaniswa zibe izingxenye futhi ziphathise ukuthuthukiswa kwengxenye ngayinye eqenjini elihlukile labahleli.
  • Iqoqo lamathuluzi enziwe ngomumo ukusekela intuthuko ngolimi lwe-Dart, okuhlanganisa ukuqaliswa kokuthuthukiswa okuguquguqukayo namathuluzi okulungisa iphutha ngokulungiswa kwekhodi ngokuhamba kwesikhathi (“hlela-futhi-qhubeka”).
  • Ukwenza kube lula ukuthuthukiswa kolimi lwe-Dart, ifika ne-SDK, iphabhu yomphathi wephakeji, i-static code analyzer dart_analyzer, iqoqo lemitapo yolwazi, indawo yokuthuthukisa edidiyelwe i-DartPad kanye nama-plugin anikwe amandla e-Dart we-IntelliJ IDEA, WebStorm, Emacs, Sublime Text. 2 kanye Vim.
  • Amaphakheji engeziwe anemitapo yolwazi kanye nezinsiza asatshalaliswa ngendawo yokugcina izincwadi, enamaphakheji angaba yizinkulungwane ezingama-22.

Izinguquko ezinkulu ekukhishweni kwe-Dart 2.15:

  • Ihlinzeka ngamathuluzi okwenziwa ngokushesha okuhambisanayo kwemisebenzi ngokuhlukaniswa kwezibambi. Kumasistimu ane-multi-core, isikhathi sokusebenza se-Dart ngokuzenzakalela sisebenzisa ikhodi yohlelo kumongo owodwa we-CPU futhi sisebenzisa amanye ama-cores ukwenza imisebenzi yesistimu efana ne-asynchronous I/O, ukubhalela amafayela, noma ukwenza amakholi enethiwekhi. Kuzinhlelo zokusebenza ezidinga ukwenza izibambi zazo ngokuhambisana, isibonelo, ukwenza ukugqwayiza kusixhumi esibonakalayo, kuyenzeka ukwethule amabhulokhi ahlukene ekhodi (ahlukaniselwe), ahlukaniswe namanye futhi asetshenziswe kwamanye ama-CPU cores kanyekanye nentambo yohlelo lokusebenza eyinhloko. . Ukuze kuvikelwe kumaphutha avelayo lapho kusetshenziswa kanyekanye ikhodi esebenza nesethi efanayo yedatha, ukwabelana kwezinto eziguqulekayo kumabhulokhi ahlukene ahlukene akuvunyelwe, futhi imodeli yokudlulisa umlayezo isetshenziselwa ukuxhumana phakathi kwabaphathi.

    I-Dart 2.15 yethula umqondo omusha - amaqembu e-block ahlukanisiwe (amaqembu angawodwa), okuvumela ukuthi uhlele ukufinyelela okwabiwe ezakhiweni ezahlukahlukene zedatha yangaphakathi kumabhulokhi angawodwa ayingxenye yeqembu elifanayo, elinganciphisa kakhulu phezulu lapho usebenzisana phakathi kwabaphathi eqenjini. . Isibonelo, ukwethula ibhulokhi eyengeziwe ye-isolate eqenjini elikhona ngokushesha izikhathi eziyi-100 futhi kudinga izikhathi eziyi-10-100 inkumbulo encane kunokwethula ibhulokhi ehlukile ehlukile, ngenxa yokuqedwa kwesidingo sokuqalisa izakhiwo zedatha yohlelo.

    Naphezu kweqiniso lokuthi amabhlogo wokuhlukanisa eqenjini asavimbela ukufinyelela okwabiwe ezintweni eziguquguqukayo, amaqembu asebenzisa inkumbulo yenqwaba ehlanganyelwe, engasheshisa ngokuphawulekayo ukudluliswa kwezinto ukusuka kwelinye ibhulokhi kuya kwelinye ngaphandle kwesidingo sokwenza imisebenzi yokukopisha esetshenziswa kakhulu. Inguqulo entsha futhi ikuvumela ukuthi udlulise umphumela wesibambi lapho ushayela i-Isolate.exit() ukuze udlulisele idatha kubhulokhi yokuhlukanisa yomzali ngaphandle kokukopisha imisebenzi. Ukwengeza, indlela yokudlulisa imiyalezo isithuthukisiwe - imilayezo emincane nemaphakathi manje isicutshungulwa ngokushesha izikhathi eziyisi-8. Izinto ezingadluliswa phakathi kwama-isolate kusetshenziswa ikholi ye-SendPort.send() ihlanganisa ezinye izinhlobo zemisebenzi, ukuvalwa, nokulandelelwa kwesitaki.

  • Kumathuluzi okudala izinkomba zomsebenzi ngamunye kwezinye izinto (ukudabula), imikhawulo ekudaleni izikhombi ezifanayo kukhodi yomakhi isusiwe, engaba wusizo lapho kwakhiwa izindawo zokuhlangana ezisuselwe kulabhulali ye-Flutter. Isibonelo, ukuze udale iwijethi Yekholomu ehlanganisa amawijethi Ombhalo amaningi, ungabiza okuthi ".map()" futhi udlulisele izikhombi kumakhi we-Text.new wento yombhalo: isigaba se-FruitWidget sinweba i-StatelessWidget {@override Widget build(BuildContext content) { buyisela Ikholomu( izingane: ['Apple', 'Orange'].map(Text.new).toList()); }}
  • Amathuba ahlobene nokusetshenziswa kwezikhombisi zokusebenza anwetshiwe. Kwengezwe ikhono lokusebenzisa izindlela ezijwayelekile nezikhombi zokusebenza ukuze udale indlela engajwayelekile nesikhombisi: T id (T value) => inani; var intId = id ; // kuvunyelwe kunguqulo 2.15 esikhundleni sokuthi "int Function(int) intId = id;" const fo = id; // i-pointer to function id. const c1 = fo ;
  • Umtapo wezincwadi we-dart:core uthuthukise ukwesekwa kwama-enum, isibonelo, ungakwazi manje ukukhipha inani leyunithi yezinhlamvu kusuka kunani ngalinye le-enum usebenzisa indlela ethi ".name", khetha amanani ngegama, noma ufanise amapheya amanani: enum MyEnum { one , ezimbili, ezintathu } i-void main() {phrinta(MyEnum.one.name); // "okukodwa" kuzophrintwa. phrinta(MyEnum.values.byName('two') == MyEnum.two); // "iqiniso" lizophrintwa. imephu yokugcina = MyEnum.values.asNameMap(); phrinta(imephu['ezintathu'] == MyEnum.three); // "iqiniso". }
  • Kusetshenziswe indlela yokucindezela i-pointer evumela ukusetshenziswa kokumelela okuhlangene kwezikhombi ezindaweni ezingama-64-bit uma isikhala sekheli esingu-32-bit sanele ukubhekana (akusebenzi inkumbulo engaphezu kuka-4 GB). Ukuhlola kubonise ukuthi ukulungiselelwa okunjalo kwenza kube nokwenzeka ukunciphisa usayizi wenqwaba cishe ngo-10%. Ku-Flutter SDK, imodi entsha isivele inikwe amandla ku-Android ngokuzenzakalela, futhi ihlelelwe ukuthi inikwe amandla ku-iOS ekukhishweni okuzayo.
  • I-Dart SDK ihlanganisa amathuluzi okulungisa amaphutha nokuhlaziya ukusebenza (DevTools), ayekade ahlinzekwa ngephakheji ehlukile.
  • Amathuluzi engeziwe emyalweni we-“dart pub” kanye namakhosombe wephakheji we-pub.dev ukuze alandelele ukushicilelwa kwephutha kolwazi oluyimfihlo, isibonelo, ukushiya imininingwane yezinhlelo eziqhubekayo zokuhlanganisa kanye nezindawo zamafu ngaphakathi kwephakheji. Uma ukuvuza okunjalo kutholwa, ukukhishwa komyalo othi “dart pub publish” kuzophazanyiswa ngomlayezo wephutha. Uma kube khona okungelona iqiniso, kungenzeka ukuthi udlule isheke ohlwini olumhlophe.
  • Amandla okuhoxisa inguqulo eshicilelwe kakade yephakheji yengezwe endaweni yokugcina ye-pub.dev, isibonelo, uma amaphutha ayingozi noma ubungozi kutholwa. Ngaphambilini, ekulungiseni okunjalo, umkhuba wawuwukushicilela inguqulo yokulungisa, kodwa kwezinye izimo kuyadingeka ukukhansela ukukhululwa okukhona futhi kumiswe ngokushesha ukusatshalaliswa kwakho okwengeziwe (isibonelo, uma ukulungiswa kungakalungi noma uma ukukhululwa okugcwele eshicilelwe ngephutha esikhundleni senguqulo yokuhlola). Ngemuva kokuhoxiswa, iphakheji alisahlonzwa emiyalweni ethi "pub get" kanye "nokuthuthukiswa kwe-pub", futhi kumasistimu asevele ayifakile, kukhishwa isexwayiso esikhethekile ngesikhathi esilandelayo lapho "pub get" senziwa.
  • Ukuvikela okungeziwe ebungozini (CVE-2021-22567) okubangelwa ukusetshenziswa kwezinhlamvu ze-unicode kukhodi ezishintsha uhlelo lokubonisa.
  • Kulungiswe ubungozi (CVE-2021-22568) obukuvumela ukuthi uzenze omunye umsebenzisi we-pub.dev lapho ushicilela amaphakheji kuseva yenkampani yangaphandle eyamukela amathokheni okufinyelela e-pub.dev oauth2. Isibonelo, ubungozi bungase busetshenziswe ukuhlasela amaseva ephakheji yangaphakathi neyenkampani. Onjiniyela abasingatha amaphakheji kuphela ku-pub.dev abathintwa yile nkinga.

Ngasikhathi sinye, kwethulwa ukukhishwa okubalulekile kohlaka lwesixhumi esibonakalayo somsebenzisi i-Flutter 2.8, ethathwa njengenye indlela ye-React Native futhi ivumela, ngokusekelwe kusisekelo sekhodi eyodwa, ukukhulula izinhlelo zokusebenza ze-iOS, Android, Windows, macOS kanye Izinkundla ze-Linux, kanye nokwenza izinhlelo zokusebenza ezizosebenza kuziphequluli. Igobolondo langokwezifiso lesistimu yokusebenza ye-Fuchsia microkernel eyakhiwe i-Google lakhiwe phezu kwesisekelo se-Flutter. Kuyaphawulwa ukuthi phakathi nezinyanga eziyisithupha ezedlule, inani lezicelo ze-Flutter 2 ku-Google Play Isitolo liye landa lisuka ku-200 kuya ku-375 ayizinkulungwane, i.e. cishe kabili.

Ingxenye eyinhloko yekhodi ye-Flutter isetshenziswa ngolimi lwe-Dart, futhi injini yesikhathi sokusebenza sokwenza izinhlelo zokusebenza ibhalwe ku-C++. Lapho uthuthukisa izinhlelo zokusebenza, ngaphezu kolimi lwe-Dart lwendabuko lwe-Flutter, ungasebenzisa isixhumi esibonakalayo se-Dart Foreign Function ukuze ushayele ikhodi ye-C/C++. Ukusebenza okuphezulu kufinyelelwa ngokuhlanganisa izinhlelo zokusebenza kwikhodi yomdabu yezingxenyekazi eziqondiwe. Kulokhu, uhlelo aludingi ukuphinda luhlanganiswe ngemva koshintsho ngalunye - I-Dart inikeza imodi yokulayisha kabusha eshisayo evumela ukuthi wenze izinguquko kuhlelo lokusebenza olusebenzayo futhi uhlole umphumela ngokushesha.

Phakathi kwezinguquko ekukhishweni okusha kwe-Flutter, ukuthuthukiswa kwejubane lokuqalisa nokusebenzisa inkumbulo kumadivayisi eselula kuyaphawulwa. Kulula ukuxhuma izinhlelo zokusebenza kumasevisi angemuva afana ne-Firebase ne-Google Cloud. Amathuluzi okuhlanganiswa Nezikhangiso ze-Google azinzile. Ukusekelwa kwamakhamera nama-plugin ewebhu kuye kwathuthukiswa kakhulu. Amathuluzi amasha aphakanyiswe ukwenza kube lula ukuthuthukiswa, isibonelo, iwijethi yengeziwe ukuze kuqinisekiswe kusetshenziswa i-Firebase. Injini ye-Flame, eklanyelwe ukuthuthukisa imidlalo ye-2D isebenzisa i-Flutter, ibuyekeziwe.

Source: opennet.ru

Engeza amazwana