Dart 2.15 forritunarmál og Flutter 2.8 ramma í boði

Google hefur gefið út útgáfu á Dart 2.15 forritunarmálinu, sem heldur áfram þróun róttækrar endurhönnuðrar greinar Dart 2, sem er frábrugðin upprunalegu útgáfunni af Dart tungumálinu með því að nota sterka fasta vélritun (hægt er að álykta sjálfkrafa um tegundir, svo að tilgreina gerðir er ekki nauðsynlegt, en kraftmikil vélritun er ekki lengur notuð og upphaflega reiknuð er gerðinni úthlutað til breytunnar og ströngu tegundaeftirliti er síðan beitt).

Eiginleikar Dart tungumálsins:

  • Þekkt og auðvelt að læra setningafræði, eðlilegt fyrir JavaScript, C og Java forritara.
  • Tryggir hraða ræsingu og mikla afköst fyrir alla nútíma vefvafra og ýmiss konar umhverfi, allt frá flytjanlegum tækjum til öflugra netþjóna.
  • Hæfni til að skilgreina flokka og viðmót sem gera kleift að hjúpa og endurnýta núverandi aðferðir og gögn.
  • Með því að tilgreina gerðir er auðveldara að kemba og bera kennsl á villur, gera kóðann skýrari og læsilegri og einfalda breytingar hans og greiningu fyrir þriðja aðila.
  • Stuðlar gerðir eru: ýmsar gerðir af kjötkássa, fylki og listum, biðraðir, tölulegar og strengjagerðir, gerðir til að ákvarða dagsetningu og tíma, regluleg segð (RegExp). Það er hægt að búa til þínar eigin tegundir.
  • Til að skipuleggja samhliða framkvæmd er lagt til að nota flokka með einangrunareigindinni, en kóðinn sem er keyrður að öllu leyti í einangruðu rými á sérstöku minnissvæði og hefur samskipti við aðalferlið með því að senda skilaboð.
  • Stuðningur við notkun bókasöfna sem einfalda stuðning og villuleit stórra vefverkefna. Útfærslur aðgerða frá þriðja aðila geta verið innifalin í formi sameiginlegra bókasöfna. Hægt er að skipta umsóknum í hluta og fela sérstakt teymi forritara þróun hvers hluta.
  • Set af tilbúnum verkfærum til að styðja við þróun á Dart tungumálinu, þar á meðal innleiðingu kraftmikillar þróunar og villuleitarverkfæra með kóða leiðréttingu á flugi ("breyta-og-halda áfram").
  • Til að einfalda þróun á Dart tungumálinu kemur það með SDK, pakkastjórnunarpöbb, kyrrstöðukóðagreiningartæki dart_analyzer, safn af bókasöfnum, samþætt þróunarumhverfi DartPad og Dart-virkt viðbætur fyrir IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 og Vim.
  • Aukapökkum með bókasöfnum og tólum er dreift í gegnum kráargeymsluna, sem hefur um 22 þúsund pakka.

Helstu breytingar á Dart 2.15 útgáfu:

  • Býður upp á verkfæri fyrir hraðvirka samhliða framkvæmd verkefna með einangrun stjórnenda. Í fjölkjarna kerfum keyrir Dart keyrslutími sjálfgefið forritakóða á einum CPU kjarna og notar aðra kjarna til að framkvæma kerfisverkefni eins og ósamstillt I/O, skrifa í skrár eða hringja í netsímtöl. Fyrir forrit sem þurfa að keyra meðhöndlara sína samhliða, til dæmis til að birta hreyfimyndir í viðmótinu, er hægt að ræsa aðskilda kóðablokka (einangra), einangraða hver frá öðrum og keyrðir á öðrum örgjörvakjarna samtímis aðalforritsþræðinum . Til að verjast villum sem koma upp þegar kóðann er keyrður samtímis með sama gagnasetti er bönnuð samnýting breytilegra hluta í mismunandi einangruðum blokkum og líkan til að senda skilaboð er notað fyrir samskipti milli meðhöndlunaraðila.

    Dart 2.15 kynnir nýtt hugtak - einangraðir blokkarhópar (einangraðir hópar), sem gerir þér kleift að skipuleggja sameiginlegan aðgang að ýmsum innri gagnaskipulagi í einangruðum blokkum sem eru hluti af sama hópi, sem getur dregið verulega úr kostnaði við samskipti milli stjórnenda í hópi . Til dæmis er það 100 sinnum hraðar að ræsa viðbótar einangrunarblokk í núverandi hópi og krefst 10-100 sinnum minna minni en að ræsa sérstaka einangrunarblokk, vegna þess að þörf er á að frumstilla forritsgagnaskipulag er ekki lengur þörf.

    Þrátt fyrir þá staðreynd að einangraðir blokkir í hópi banna enn sameiginlegan aðgang að breytanlegum hlutum, nota hóparnir sameiginlegt hrúgaminni, sem getur flýtt verulega fyrir flutningi hluta frá einum blokk til annars án þess að þurfa að framkvæma auðlindafrekar afritunaraðgerðir. Nýja útgáfan gerir þér einnig kleift að senda niðurstöðu meðhöndlunar þegar hringt er í Isolate.exit() til að flytja gögn yfir í foreldraeinangrunarblokkina án þess að afrita aðgerðir. Að auki hefur skilaboðaflutningskerfið verið fínstillt - lítil og meðalstór skilaboð eru nú unnin um það bil 8 sinnum hraðar. Hlutir sem hægt er að fara á milli einangra með því að nota SendPort.send() símtalið innihalda nokkrar gerðir af aðgerðum, lokunum og staflasporum.

  • Í tólum til að búa til ábendingar að einstökum aðgerðum í öðrum hlutum (rífa af) hafa takmarkanir á því að búa til svipaða ábendingar í byggingarkóða verið fjarlægðar, sem getur verið gagnlegt þegar viðmót byggist á Flutter bókasafninu. Til dæmis, til að búa til dálkagræju sem inniheldur margar textagræjur, geturðu kallað ".map()" og sent ábendingar til Text.new smíði Text hlutarins: class FruitWidget stækkar StatelessWidget { @override Widget build(BuildContext context) { return Column( children: ['Apple', 'Orange'].map(Text.new).toList()); } }
  • Möguleikarnir sem tengjast notkun aðgerðabendinga hafa verið rýmkaðir. Bætti við möguleikanum á að nota almennar aðferðir og virknibendingar til að búa til óalmenna aðferð og bendil: T id (T gildi) => gildi; var intId = auðkenni ; // leyfilegt í útgáfu 2.15 í stað "int Function(int) intId = id;" const fo = auðkenni; // bendi á auðkenni aðgerða. const c1 = fo ;
  • Dart:core bókasafnið hefur bætt stuðning við enums, til dæmis geturðu nú gefið út strenggildi úr hverju enumgildi með því að nota ".name" aðferðina, valið gildi eftir nafni eða passa saman gildispör: enum MyEnum { one , tveir, þrír } void main() { print(MyEnum.one.name); // „einn“ verður prentaður. print(MyEnum.values.byName('two') == MyEnum.two); // "true" verður prentað. lokakort = MyEnum.values.asNameMap(); print(kort['þrír'] == MyEnum.three); // "satt". }
  • Bendiþjöppunartækni hefur verið innleidd sem gerir kleift að nota þéttari framsetningu ábendinga í 64-bita umhverfi ef 32-bita vistfangarými nægir til að takast á við (ekki meira en 4 GB af minni er notað). Prófanir hafa sýnt að slík hagræðing gerir það mögulegt að minnka haugstærðina um það bil 10%. Í Flutter SDK er nýja stillingin nú þegar virkjuð fyrir Android sjálfgefið og fyrirhugað er að vera virkjaður fyrir iOS í framtíðarútgáfu.
  • Dart SDK inniheldur verkfæri fyrir villuleit og frammistöðugreiningu (DevTools), sem áður voru til staðar í sérstökum pakka.
  • Verkfærum hefur verið bætt við „dart pub“ skipunina og pub.dev pakkageymslurnar til að fylgjast með birtingu trúnaðarupplýsinga fyrir slysni, til dæmis, skilja eftir skilríki fyrir samfelld samþættingarkerfi og skýjaumhverfi inni í pakkanum. Ef slíkur leki uppgötvast verður framkvæmd „dart pub publish“ skipunarinnar rofin með villuboðum. Ef það var rangt jákvætt er hægt að fara framhjá ávísuninni í gegnum hvítan lista.
  • Möguleikinn á að afturkalla þegar birta útgáfu af pakka hefur verið bætt við pub.dev geymsluna, til dæmis ef hættulegar villur eða veikleikar uppgötvast. Áður, fyrir slíkar leiðréttingar, var venjan að birta leiðréttingarútgáfu, en í sumum tilfellum er nauðsynlegt að hætta við núverandi útgáfu og hætta brýn frekari dreifingu hennar (til dæmis ef leiðréttingin er ekki enn tilbúin eða ef full útgáfa var birt fyrir mistök í stað prófunarútgáfu). Eftir afturköllun er pakkinn ekki lengur auðkenndur í „pub get“ og „pub upgrade“ skipunum og á kerfum sem þegar hafa sett hann upp er sérstök viðvörun gefin út næst þegar „pub get“ er keyrt.
  • Bætt við vörn gegn varnarleysi (CVE-2021-22567) sem stafar af notkun unicode stafi í kóðanum sem breyta birtingarröðinni.
  • Lagað varnarleysi (CVE-2021-22568) sem gerir þér kleift að líkja eftir öðrum pub.dev notanda þegar þú birtir pakka á þriðju aðila miðlara sem tekur við pub.dev oauth2 aðgangslyktunum. Til dæmis gæti varnarleysið verið notað til að ráðast á innri og fyrirtækjapakkaþjóna. Hönnuðir sem hýsa aðeins pakka á pub.dev verða ekki fyrir áhrifum af þessu vandamáli.

Á sama tíma var kynnt umtalsverð útgáfa af notendaviðmótsramma Flutter 2.8, sem er talinn valkostur við React Native og gerir, byggt á einum kóðagrunni, kleift að gefa út forrit fyrir iOS, Android, Windows, macOS og Linux palla, auk þess að búa til forrit til að keyra í vöfrum. Sérsniðin skel fyrir Fuchsia örkjarna stýrikerfið þróað af Google er byggt á Flutter. Tekið er fram að á síðasta hálfu ári hefur Flutter 2 forritum í Google Play Store fjölgað úr 200 þúsund í 375 þúsund, þ.e. næstum tvisvar.

Meginhluti Flutter kóðans er útfærður á Dart tungumálinu og keyrsluvélin til að keyra forrit er skrifuð í C++. Þegar þú þróar forrit, til viðbótar við móðurmál Flutter Dart, geturðu notað Dart Foreign Function viðmótið til að hringja í C/C++ kóða. Hár framkvæmdarárangur næst með því að setja saman forrit í innfæddan kóða fyrir markvettvanga. Í þessu tilviki þarf ekki að setja forritið saman aftur eftir hverja breytingu - Dart býður upp á heita endurhleðsluham sem gerir þér kleift að gera breytingar á keyrandi forriti og meta niðurstöðuna strax.

Meðal breytinga í nýju útgáfu Flutter er hagræðing á sjósetningarhraða og minnisnotkun á farsímum. Það er auðveldara að tengja öpp við bakendaþjónustu eins og Firebase og Google Cloud. Verkfæri fyrir samþættingu við Google Ads hafa verið stöðug. Stuðningur við myndavélar og vefviðbætur hefur verið bætt verulega. Ný verkfæri hafa verið lögð til til að einfalda þróun, til dæmis hefur græju verið bætt við til auðkenningar með Firebase. Flame vélin, hönnuð til að þróa 2D leiki með Flutter, hefur verið uppfærð.

Heimild: opennet.ru

Bæta við athugasemd