Google ir publicÄjusi programmÄÅ”anas valodas Dart 2.15 izlaidumu, kas turpina radikÄli pÄrveidota Dart 2 atzara izstrÄdi, kas no Dart valodas sÄkotnÄjÄs versijas atŔķiras ar spÄcÄ«gas statiskÄs maŔīnrakstÄ«Å”anas izmantoÅ”anu (tipus var secinÄt automÄtiski, tÄpÄc precizÄjot tipi nav nepiecieÅ”ami, bet dinamiskÄ rakstÄ«Å”ana vairs netiek izmantota, un sÄkotnÄjais aprÄÄ·ins tiek pieŔķirts mainÄ«gajam, un pÄc tam tiek piemÄrota stingra tipa pÄrbaude).
Dart valodas iezīmes:
- PazÄ«stama un viegli apgÅ«stama sintakse, dabiska JavaScript, C un Java programmÄtÄjiem.
- Ätras palaiÅ”anas un augstas veiktspÄjas nodroÅ”inÄÅ”ana visÄm mÅ«sdienu tÄ«mekļa pÄrlÅ«kprogrammÄm un dažÄda veida vidÄm, sÄkot no pÄrnÄsÄjamÄm ierÄ«cÄm lÄ«dz jaudÄ«giem serveriem.
- IespÄja definÄt klases un saskarnes, kas ļauj iekapsulÄt un atkÄrtoti izmantot esoÅ”Äs metodes un datus.
- Veidu norÄdÄ«Å”ana atvieglo atkļūdoÅ”anu un kļūdu identificÄÅ”anu, padara kodu skaidrÄku un lasÄmÄku, kÄ arÄ« vienkÄrÅ”o tÄ modifikÄciju un analÄ«zi, ko veic treÅ”Äs puses izstrÄdÄtÄji.
- AtbalstÄ«tie veidi ir: dažÄda veida jaucÄjkodoli, masÄ«vi un saraksti, rindas, ciparu un virkÅu veidi, datuma un laika noteikÅ”anas veidi, regulÄrÄs izteiksmes (RegExp). Ir iespÄja izveidot savus tipus.
- ParalÄlÄs izpildes organizÄÅ”anai tiek piedÄvÄts izmantot klases ar atribÅ«tu izolÄt, kuru kods tiek pilnÄ«bÄ izpildÄ«ts izolÄtÄ telpÄ atseviÅ”Ä·Ä atmiÅas zonÄ, mijiedarbojoties ar galveno procesu, nosÅ«tot ziÅojumus.
- Atbalsts tÄdu bibliotÄku izmantoÅ”anai, kas vienkÄrÅ”o lielu tÄ«mekļa projektu atbalstu un atkļūdoÅ”anu. TreÅ”Äs puses funkciju ievieÅ”anas var iekļaut koplietojamo bibliotÄku veidÄ. Lietojumprogrammas var sadalÄ«t daļÄs un katras daļas izstrÄdi uzticÄt atseviŔķai programmÄtÄju komandai.
- Gatavu rÄ«ku komplekts Dart valodas izstrÄdes atbalstam, ieskaitot dinamiskas izstrÄdes un atkļūdoÅ”anas rÄ«ku ievieÅ”anu ar koda korekciju lidojumÄ (ārediÄ£Ät un turpinÄtā).
- Lai vienkÄrÅ”otu izstrÄdi Dart valodÄ, tajÄ ir iekļauts SDK, pakotÅu pÄrvaldnieka pubs, statiskÄ koda analizators dart_analyzer, bibliotÄku komplekts, integrÄta izstrÄdes vide DartPad un ar Dart iespÄjoti spraudÅi IntelliJ IDEA, WebStorm, Emacs, Sublime Text. 2 un Vim.
- Papildu pakotnes ar bibliotÄkÄm un utilÄ«tprogrammÄm tiek izplatÄ«tas caur krodziÅu repozitoriju, kurÄ ir aptuveni 22 tÅ«kstoÅ”i pakeÅ”u.
GalvenÄs izmaiÅas Dart 2.15 laidienÄ:
- NodroÅ”ina rÄ«kus Ätrai paralÄlai uzdevumu izpildei ar apstrÄdÄtÄju izolÄciju. Daudzkodolu sistÄmÄs Dart izpildlaiks pÄc noklusÄjuma palaiž lietojumprogrammas kodu vienÄ CPU kodolÄ un izmanto citus kodolus, lai veiktu sistÄmas uzdevumus, piemÄram, asinhrono I/O, ierakstÄ«Å”anu failos vai tÄ«kla zvanu veikÅ”anu. LietojumprogrammÄm, kurÄm paralÄli jÄizpilda apdarinÄtÄji, piemÄram, lai interfeisÄ renderÄtu animÄciju, ir iespÄjams palaist atseviŔķus koda blokus (izolÄt), kas ir izolÄti viens no otra un tiek izpildÄ«ti citos CPU kodolos vienlaikus ar galveno lietojumprogrammas pavedienu. . Lai aizsargÄtu pret kļūdÄm, kas rodas, vienlaikus izpildot kodu, kas strÄdÄ ar vienu un to paÅ”u datu kopu, ir aizliegta mainÄ«gu objektu koplietoÅ”ana dažÄdos izolÄÅ”anas blokos, un tiek izmantots ziÅojumu nodoÅ”anas modelis mijiedarbÄ«bai starp apstrÄdÄtÄjiem.
Dart 2.15 ievieÅ” jaunu koncepciju - izolÄtas bloku grupas (izolÄcijas grupas), kas ļauj organizÄt kopÄ«gu piekļuvi dažÄdÄm iekÅ”ÄjÄm datu struktÅ«rÄm izolÄtos blokos, kas ir daļa no vienas grupas, kas var ievÄrojami samazinÄt pieskaitÄmÄs izmaksas, mijiedarbojoties starp apstrÄdÄtÄjiem grupÄ . PiemÄram, papildu izolÄÅ”anas bloka palaiÅ”ana esoÅ”ajÄ grupÄ ir 100 reizes ÄtrÄka un prasa 10-100 reižu mazÄk atmiÅas nekÄ atseviŔķa izolÄÅ”anas bloka palaiÅ”ana, jo nav nepiecieÅ”ams inicializÄt programmas datu struktÅ«ras.
Neskatoties uz to, ka izolÄtie bloki grupÄ joprojÄm aizliedz kopÄ«gu piekļuvi mainÄ«giem objektiem, grupas izmanto koplietojamo kaudzes atmiÅu, kas var ievÄrojami paÄtrinÄt objektu pÄrsÅ«tÄ«Å”anu no viena bloka uz otru bez nepiecieÅ”amÄ«bas veikt resursietilpÄ«gas kopÄÅ”anas darbÄ«bas. JaunÄ versija arÄ« ļauj nodot apdarinÄtÄja rezultÄtu, izsaucot Isolate.exit(), lai pÄrsÅ«tÄ«tu datus uz vecÄku izolÄÅ”anas bloku bez kopÄÅ”anas darbÄ«bÄm. TurklÄt ir optimizÄts ziÅojumu pÄrraides mehÄnisms ā mazie un vidÄjie ziÅojumi tagad tiek apstrÄdÄti aptuveni 8 reizes ÄtrÄk. Objekti, kurus var nodot starp izolÄtiem, izmantojot SendPort.send() izsaukumu, ietver dažu veidu funkcijas, slÄgÅ”anu un steka trases.
- RÄ«kos, kas veido rÄdÄ«tÄjus uz atseviŔķÄm funkcijÄm citos objektos (norauÅ”ana), ir noÅemti ierobežojumi lÄ«dzÄ«gu rÄdÄ«tÄju veidoÅ”anai konstruktora kodÄ, kas var bÅ«t noderÄ«gi, veidojot saskarnes, kuru pamatÄ ir Flutter bibliotÄka. PiemÄram, lai izveidotu logrÄ«ku Kolonna, kurÄ ir iekļauti vairÄki teksta logrÄ«ki, varat izsaukt ".map()" un nodot norÄdes teksta objekta konstruktoram Text.new: class FruitWidget extends StatelessWidget { @override Widget build(BuildContext konteksts) { return Column( children: ['Apple', 'Orange'].map(Text.new).toList()); } }
- Ir paplaÅ”inÄtas iespÄjas, kas saistÄ«tas ar funkciju rÄdÄ«tÄju izmantoÅ”anu. Pievienota iespÄja izmantot vispÄrÄ«gas metodes un funkciju norÄdes, lai izveidotu nevispÄrÄju metodi un rÄdÄ«tÄju: T id (T vÄrtÄ«ba) => vÄrtÄ«ba; var intId = id ; // atļauts versijÄ 2.15, nevis "int Function(int) intId = id;" const fo = id; // rÄdÄ«tÄjs uz funkcijas id. const c1 = fo ;
- Dart:core bibliotÄkÄ ir uzlabots atbalsts enums, piemÄram, tagad varat izvadÄ«t virknes vÄrtÄ«bu no katras enum vÄrtÄ«bas, izmantojot metodi ".name", atlasÄ«t vÄrtÄ«bas pÄc nosaukuma vai saskaÅot vÄrtÄ«bu pÄrus: enum MyEnum { one , divi, trÄ«s } void main() { print(MyEnum.one.name); // tiks izdrukÄts "viens". print(MyEnum.values.byName('two') == MyEnum.two); // tiks izdrukÄts "true". galÄ«gÄ karte = MyEnum.values.asNameMap(); print(karte['trÄ«s'] == MansEnum.trÄ«s); // "patiess". }
- Ir ieviesta rÄdÄ«tÄju saspieÅ”anas tehnika, kas ļauj izmantot kompaktÄku rÄdÄ«tÄju attÄlojumu 64 bitu vidÄs, ja adresÄÅ”anai pietiek ar 32 bitu adreÅ”u telpu (tiek izmantota ne vairÄk kÄ 4 GB atmiÅa). Testi ir parÄdÄ«juÅ”i, ka Å”Äda optimizÄcija ļauj samazinÄt kaudzes izmÄru par aptuveni 10%. Flutter SDK jaunais režīms jau ir iespÄjots operÄtÄjsistÄmai Android pÄc noklusÄjuma, un nÄkotnÄ to ir paredzÄts iespÄjot operÄtÄjsistÄmai iOS.
- Dart SDK ietver atkļūdoÅ”anas un veiktspÄjas analÄ«zes rÄ«kus (DevTools), kas iepriekÅ” tika piegÄdÄti atseviÅ”Ä·Ä pakotnÄ.
- Komandai ādart pubā un pub.dev pakotÅu krÄtuvÄm ir pievienoti rÄ«ki, lai izsekotu nejauÅ”as konfidenciÄlas informÄcijas publicÄÅ”anai, piemÄram, pakotnÄ atstÄjot nepÄrtrauktas integrÄcijas sistÄmu un mÄkoÅa vides akreditÄcijas datus. Ja tiek atklÄtas Å”Ädas noplÅ«des, komandas ādart pub publishā izpilde tiks pÄrtraukta ar kļūdas ziÅojumu. Ja bija kļūdaini pozitÄ«vs rezultÄts, pÄrbaudi var apiet, izmantojot balto sarakstu.
- Pub.dev repozitorijai ir pievienota iespÄja atsaukt jau publicÄtu pakotnes versiju, piemÄram, ja tiek atklÄtas bÄ«stamas kļūdas vai ievainojamÄ«bas. IepriekÅ” Å”Ädiem labojumiem bija prakse publicÄt korektÄ«vo versiju, taÄu dažÄs situÄcijÄs ir nepiecieÅ”ams atcelt esoÅ”o laidienu un steidzami pÄrtraukt tÄ tÄlÄku izplatÄ«Å”anu (piemÄram, ja labojums vÄl nav gatavs vai ja tika izdots pilns laidiens kļūdas dÄļ publicÄta testa versijas vietÄ). PÄc atsaukÅ”anas pakotne vairs netiek identificÄta komandÄs āpub getā un āpub upgradeā, un sistÄmÄs, kurÄs tÄ jau ir instalÄta, nÄkamreiz, kad tiek izpildÄ«ts āpub getā, tiek izdots Ä«paÅ”s brÄ«dinÄjums.
- Pievienota aizsardzÄ«ba pret ievainojamÄ«bu (CVE-2021-22567), ko izraisa unikoda rakstzÄ«mju izmantoÅ”ana kodÄ, kas maina attÄloÅ”anas secÄ«bu.
- NovÄrsta ievainojamÄ«ba (CVE-2021-22568), kas ļauj uzdoties par citu pub.dev lietotÄju, publicÄjot pakotnes treÅ”Äs puses serverÄ«, kas pieÅem pub.dev oauth2 piekļuves pilnvaras. PiemÄram, ievainojamÄ«bu var izmantot, lai uzbruktu iekÅ”Äjiem un korporatÄ«vajiem pakotÅu serveriem. Å Ä« problÄma neietekmÄ izstrÄdÄtÄjus, kuri tikai mitina pakotnes vietnÄ pub.dev.
TajÄ paÅ”Ä laikÄ tika prezentÄts nozÄ«mÄ«gs lietotÄja interfeisa ietvara Flutter 2.8 laidiens, kas tiek uzskatÄ«ts par alternatÄ«vu React Native un ļauj, pamatojoties uz vienu kodu bÄzi, izlaist lietojumprogrammas operÄtÄjsistÄmÄm iOS, Android, Windows, macOS un Linux platformÄm, kÄ arÄ« izveidot lietojumprogrammas, kas darbojas pÄrlÅ«kprogrammÄs. PielÄgots apvalks Fuchsia mikrokodola operÄtÄjsistÄmai, ko izstrÄdÄjis Google, ir izveidots, pamatojoties uz Flutter. Tiek atzÄ«mÄts, ka pÄdÄjÄ pusgada laikÄ Google Play veikalÄ Flutter 2 aplikÄciju skaits pieaudzis no 200 tÅ«kstoÅ”iem lÄ«dz 375 tÅ«kstoÅ”iem, t.i. gandrÄ«z divas reizes.
GalvenÄ Flutter koda daļa ir ieviesta Dart valodÄ, un izpildlaika dzinÄjs lietojumprogrammu izpildei ir rakstÄ«ts C++ valodÄ. IzstrÄdÄjot lietojumprogrammas, papildus Flutter dzimtajai Dart valodai varat izmantot Dart Foreign Function saskarni, lai izsauktu C/C++ kodu. Augsta izpildes veiktspÄja tiek panÄkta, lietojumprogrammas kompilÄjot mÄrÄ·a platformu vietÄjÄ kodÄ. Å ajÄ gadÄ«jumÄ programma nav jÄpÄrkompilÄ pÄc katras izmaiÅas ā Dart nodroÅ”ina karstÄs pÄrlÄdÄÅ”anas režīmu, kas ļauj veikt izmaiÅas darbojoÅ”Ä lietojumprogrammÄ un nekavÄjoties novÄrtÄt rezultÄtu.
Starp izmaiÅÄm jaunajÄ Flutter laidienÄ tiek atzÄ«mÄta palaiÅ”anas Ätruma un atmiÅas patÄriÅa optimizÄcija mobilajÄs ierÄ«cÄs. Lietotnes ir vieglÄk savienot ar aizmugurpakalpojumiem, piemÄram, Firebase un Google Cloud. Ir stabilizÄti rÄ«ki integrÄcijai ar Google Ads. Ir ievÄrojami uzlabots atbalsts kamerÄm un tÄ«mekļa spraudÅiem. IzstrÄdes vienkÄrÅ”oÅ”anai ir piedÄvÄti jauni rÄ«ki, piemÄram, ir pievienots logrÄ«ks autentifikÄcijai, izmantojot Firebase. Flame dzinÄjs, kas paredzÄts 2D spÄļu izstrÄdei, izmantojot Flutter, ir atjauninÄts.
Avots: opennet.ru