Chilankhulo cha pulogalamu ya Dart 2.15 ndi Flutter 2.8 chimango chilipo

Google yasindikiza kutulutsidwa kwa chinenero cha pulogalamu ya Dart 2.15, chomwe chikupitiriza kupanga nthambi yokonzedwanso kwambiri ya Dart 2, yomwe imasiyana ndi chinenero choyambirira cha chinenero cha Dart pogwiritsa ntchito zilembo zolimba (mitundu imatha kuzindikirika, choncho Kutchula mitundu sikofunikira, koma kusindikiza kwamphamvu sikugwiritsidwanso ntchito ndipo poyambira mtunduwo umaperekedwa kumitundu yosiyanasiyana ndipo kuwunika kwamtundu kumayikidwa pambuyo pake).

Mawonekedwe a chilankhulo cha Dart:

  • Syntax yodziwika bwino komanso yosavuta kuphunzira, yachilengedwe ya JavaScript, C ndi Java programmers.
  • Kuwonetsetsa kukhazikitsidwa kwachangu komanso magwiridwe antchito apamwamba kwa asakatuli onse amakono ndi mitundu yosiyanasiyana yamalo, kuyambira pazida zonyamulika mpaka ma seva amphamvu.
  • Kutha kufotokozera makalasi ndi zolumikizira zomwe zimalola kubisa ndikugwiritsanso ntchito njira zomwe zilipo kale.
  • Kutchula mitundu kumapangitsa kuti kukhale kosavuta kukonza zolakwika ndi kuzindikira zolakwika, kumapangitsa kuti code ikhale yomveka bwino komanso yowerengeka, komanso imathandizira kusinthidwa ndi kusanthula kwake ndi omwe akupanga gulu lachitatu.
  • Mitundu yothandizidwa imaphatikizapo: mitundu yosiyanasiyana ya ma hashi, mindandanda ndi mindandanda, mizere, manambala ndi mitundu ya zingwe, mitundu yodziwira tsiku ndi nthawi, mawu okhazikika (RegExp). Ndizotheka kupanga mitundu yanu.
  • Kukonzekera kuphana kofanana, akulangizidwa kuti agwiritse ntchito makalasi omwe ali ndi chikhalidwe chodzipatula, code yomwe imachitidwa kwathunthu pamalo akutali m'malo okumbukira, ndikulumikizana ndi njira yayikulu potumiza mauthenga.
  • Thandizo logwiritsa ntchito malaibulale omwe amathandizira kuthandizira ndikuwongolera ma projekiti akuluakulu a intaneti. Ntchito za gulu lachitatu zitha kuphatikizidwa ngati malaibulale omwe amagawana nawo. Mapulogalamu amatha kugawidwa m'magawo ndikuyika chitukuko cha gawo lililonse ku gulu laopanga mapulogalamu.
  • Zida zokonzekera zothandizira chitukuko cha chinenero cha Dart, kuphatikizapo kukhazikitsidwa kwa chitukuko champhamvu ndi zida zowonongeka ndi kuwongolera ma code pa ntchentche ("edit-and-continue").
  • Kuti muchepetse chitukuko cha chilankhulo cha Dart, imabwera ndi SDK, pub manager pub, static code analyzer dart_analyzer, seti ya malaibulale, malo osakanikirana a DartPad ndi mapulagini opangidwa ndi Dart a IntelliJ IDEA, WebStorm, Emacs, Sublime Text. 2 ndi vim.
  • Maphukusi owonjezera okhala ndi malaibulale ndi zothandizira amagawidwa m'malo osungiramo mabuku, omwe ali ndi mapaketi pafupifupi 22.

Zosintha zazikulu pakutulutsidwa kwa Dart 2.15:

  • Amapereka zida zochitira mwachangu ntchito zofananira ndikudzipatula kwa othandizira. Pamakina amitundu yambiri, nthawi yothamanga ya Dart mwachisawawa imayendetsa kachidindo ka pulogalamu imodzi ya CPU ndipo imagwiritsa ntchito ma cores ena kuchita ntchito zamakina monga asynchronous I/O, kulembera mafayilo, kapena kuyimba mafoni. Pamapulogalamu omwe amafunikira kuphatikizira othandizira awo mofananira, mwachitsanzo, kuti apereke makanema pamawonekedwe, ndizotheka kukhazikitsa ma code osiyana (odzipatula), olekanitsidwa wina ndi mnzake ndikuchitidwa pa ma cores ena a CPU nthawi imodzi ndi ulusi waukulu. . Kuti muteteze ku zolakwika zomwe zimachitika panthawi imodzi yogwiritsira ntchito code yomwe ikugwira ntchito ndi seti yofanana ya deta, kugawana zinthu zomwe zingasinthidwe muzitsulo zosiyana siyana ndizoletsedwa, ndipo chitsanzo chodutsa uthenga chimagwiritsidwa ntchito poyanjana pakati pa ogwira ntchito.

    Dart 2.15 imayambitsa lingaliro latsopano - magulu odzipatula okha (magulu odzipatula), omwe amakulolani kuti mukonzekere mwayi wogawana nawo magawo osiyanasiyana amkati amkati m'magulu ang'onoang'ono omwe ali m'gulu lomwelo, lomwe lingathe kuchepetsa kwambiri pamene mukulumikizana pakati pa ogwira ntchito pagulu. . Mwachitsanzo, kuyambitsa chipika chodzipatula chowonjezera pagulu lomwe lilipo ndikufulumira kuwirikiza ka 100 ndipo kumafuna nthawi 10-100 kukumbukira pang'ono kuposa kuyambitsa chipika chodzipatula, chifukwa chochotsa kufunika koyambitsa zida zamapulogalamu.

    Ngakhale kuti kudzipatula midadada mu gulu akadali amaletsa nawo mwayi zinthu zosasinthika, magulu ntchito nawo mulu kukumbukira, amene akhoza kwambiri kufulumizitsa kulanda zinthu kuchokera chipika wina kupita kwina popanda kufunika kuchita gwero kwambiri kukopera ntchito. Mtundu watsopanowu umakupatsaninso mwayi kuti mudutse zotsatira za chothandizira mukayimba Isolate.exit() kuti mutumize deta kwa kholo lodzipatula block popanda kukopera ntchito. Kuphatikiza apo, njira yotumizira uthenga yakonzedwanso - mauthenga ang'onoang'ono ndi apakatikati tsopano asinthidwa pafupifupi nthawi 8 mwachangu. Zinthu zomwe zitha kuperekedwa pakati pa zopatula pogwiritsa ntchito SendPort.send() kuyimba kumaphatikizapo mitundu ina ya ntchito, kutseka, ndi kufufuza.

  • Pazida zopangira zolozera kuzinthu zamtundu wina muzinthu zina (kung'ambika), zoletsa pakupanga zolozera zofanana muzomangamanga zachotsedwa, zomwe zitha kukhala zothandiza pomanga zolumikizira kutengera laibulale ya Flutter. Mwachitsanzo, kuti mupange widget ya Column yomwe ili ndi ma widget angapo a Malemba, mutha kuyimba ".map()" ndikupereka zolozera kwa Text.new constructor of Text object: class FruitWidget extends StatelessWidget {@override Widget build(BuildContext context) { return Column( ana: ['Apple', 'Orange'].map(Text.new).toList()); }}
  • Kuthekera kokhudzana ndi kugwiritsa ntchito zolozera ntchito kwakulitsidwa. Onjezani kuthekera kogwiritsa ntchito njira zofananira ndi zolozera ntchito kuti mupange njira yosakhala ya generic ndi cholozera: T id (T mtengo) => mtengo; var intId = id ; // zololedwa mu mtundu 2.15 m'malo mwa "int Function(int) intId = id;" const fo = id; // pointer ku ntchito id. const c1 = fo ;
  • Laibulale ya dart:core yathandizira bwino ma enums, mwachitsanzo, mutha kutulutsa mtengo wa chingwe kuchokera pamtengo uliwonse wa enum pogwiritsa ntchito njira ya ".name", sankhani zikhalidwe ndi dzina, kapena mafananidwe awiriawiri: enum MyEnum { chimodzi , ziwiri, zitatu } zopanda kanthu () {sindikiza(MyEnum.one.name); // "imodzi" idzasindikizidwa. sindikiza(MyEnum.values.byName('ziwiri') == MyEnum.two); // "zowona" zidzasindikizidwa. mapu omaliza = MyEnum.values.asNameMap(); sindikiza (mapu['atatu'] == MyEnum.three); // "zoona". }
  • Njira yopondereza ya pointer yakhazikitsidwa yomwe imalola kugwiritsa ntchito mawonekedwe ophatikizika kwambiri a zolozera m'malo a 64-bit ngati malo adilesi a 32-bit ndi okwanira kuyankha (osapitilira 4 GB ya kukumbukira). Mayesero awonetsa kuti kukhathamiritsa kotereku kumapangitsa kuti muchepetse muluwu ndi pafupifupi 10%. Mu Flutter SDK, mawonekedwe atsopanowa adayatsidwa kale ndi Android mwachisawawa, ndipo akukonzekera kuti ayambitse iOS pakumasulidwa kwamtsogolo.
  • Dart SDK imaphatikizapo zida zosinthira ndi kusanthula magwiridwe antchito (DevTools), zomwe zidaperekedwa kale phukusi lapadera.
  • Zida zawonjezeredwa ku lamulo la "dart pub" ndi pub.dev nkhokwe za phukusi kuti muzitsatira kusindikizidwa mwangozi kwachinsinsi, mwachitsanzo, kusiya zidziwitso zamakina ophatikizana mosalekeza ndi malo amtambo mkati mwa phukusi. Ngati kutayikira koteroko kuzindikirika, kuchitidwa kwa lamulo la "dart pub publish" kudzasokonezedwa ndi uthenga wolakwika. Ngati panali zolakwika, ndizotheka kudutsa cheke kudzera pamndandanda woyera.
  • Kutha kubweza phukusi lomwe lasindikizidwa kale lawonjezedwa kumalo osungira a pub.dev, mwachitsanzo, ngati zolakwika zowopsa kapena zovuta zapezeka. M'mbuyomu, pakuwongolera kotereku, mchitidwewo unali kufalitsa mtundu wowongolera, koma nthawi zina ndikofunikira kuletsa kutulutsidwa komwe kulipo ndikuyimitsa mwachangu kufalitsa kwake (mwachitsanzo, ngati kukonzanso sikunakonzekere kapena ngati kumasulidwa kwathunthu kunali koyenera. lofalitsidwa molakwitsa m'malo moyesera). Pambuyo pa kuthetsedwa, phukusili silidziwikanso mu malamulo a "pub get" ndi "pub upgrade", ndipo pamakina omwe adayiyika kale, chenjezo lapadera limaperekedwa nthawi ina "pub get" ikaperekedwa.
  • Chitetezo chowonjezera ku chiwopsezo (CVE-2021-22567) chifukwa chogwiritsa ntchito zilembo za unicode mu code yomwe imasintha mawonekedwe owonetsera.
  • Konzani chiwopsezo (CVE-2021-22568) chomwe chimakulolani kuti mutengere wogwiritsa ntchito wina wa pub.dev mukamasindikiza ma phukusi ku seva yachitatu yomwe imavomereza ma tokeni a pub.dev oauth2. Mwachitsanzo, chiwopsezocho chingagwiritsidwe ntchito kuukira ma seva amkati ndi amakampani. Madivelopa omwe amangotengera phukusi pa pub.dev sakhudzidwa ndi nkhaniyi.

Nthawi yomweyo, kutulutsidwa kwakukulu kwa mawonekedwe a ogwiritsa ntchito Flutter 2.8 kunaperekedwa, komwe kumawonedwa ngati njira ina ya React Native ndikulola, kutengera code code imodzi, kumasula mapulogalamu a iOS, Android, Windows, macOS ndi Mapulatifomu a Linux, komanso pangani mapulogalamu kuti ayendetse asakatuli. Chigoba chachizolowezi cha Fuchsia microkernel opareting'i sisitimu yopangidwa ndi Google imamangidwa pamaziko a Flutter. Zikudziwika kuti m'miyezi isanu ndi umodzi yapitayi, chiwerengero cha mapulogalamu a Flutter 2 mu Google Play Store chawonjezeka kuchokera ku 200 zikwi kufika ku 375 zikwi, i.e. pafupifupi kawiri.

Gawo lalikulu la nambala ya Flutter likugwiritsidwa ntchito m'chinenero cha Dart, ndipo injini yogwiritsira ntchito nthawi yogwiritsira ntchito imalembedwa mu C ++. Mukapanga mapulogalamu, kuphatikiza chilankhulo cha Flutter chamtundu wa Dart, mutha kugwiritsa ntchito mawonekedwe a Dart Foreign Function kuti muyimbire nambala ya C/C++. Kuchita kwapamwamba kumatheka polemba mapulogalamu ku code yachibadwidwe pamapulatifomu omwe mukufuna. Pachifukwa ichi, pulogalamuyo sifunikira kubwezeretsedwanso pambuyo pa kusintha kulikonse - Dart imapereka njira yowotchera yotentha yomwe imakupatsani mwayi wosintha pulogalamu yomwe ikuyenda ndikuwunika zotsatira zake.

Zina mwa zosintha pakutulutsidwa kwatsopano kwa Flutter, kukhathamiritsa kwa liwiro loyambitsa komanso kugwiritsa ntchito kukumbukira pazida zam'manja ndizodziwika. Ndizosavuta kulumikiza mapulogalamu kuzinthu zam'mbuyo monga Firebase ndi Google Cloud. Zida zophatikizira ndi Google Ads zakhazikika. Thandizo la makamera ndi mapulagini apa intaneti asinthidwa kwambiri. Zida zatsopano zaperekedwa kuti zichepetse chitukuko, mwachitsanzo, widget yawonjezedwa kuti itsimikizidwe pogwiritsa ntchito Firebase. Injini ya Flame, yopangidwira kupanga masewera a 2D pogwiritsa ntchito Flutter, yasinthidwa.

Source: opennet.ru

Kuwonjezera ndemanga