Pieejama Dart 2.15 programmēŔanas valoda un Flutter 2.8 ietvars

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

Pievieno komentāru