K dispozícii je programovací jazyk Dart 2.15 a rámec Flutter 2.8

Google zverejnil vydanie programovacieho jazyka Dart 2.15, ktorý pokračuje vo vývoji radikálne prepracovanej vetvy Dart 2, ktorá sa od pôvodnej verzie jazyka Dart odlišuje použitím silného statického písania (typy sa dajú odvodiť automaticky, takže nie je potrebné špecifikovať typy, ale dynamické typovanie sa už nepoužíva a na začiatku sa vypočíta typ priradí premennej a následne sa aplikuje prísna kontrola typu).

Vlastnosti jazyka Dart:

  • Známa a ľahko osvojiteľná syntax, prirodzená pre programátorov JavaScript, C a Java.
  • Zabezpečuje rýchle spustenie a vysoký výkon pre všetky moderné webové prehliadače a rôzne typy prostredí, od prenosných zariadení až po výkonné servery.
  • Schopnosť definovať triedy a rozhrania, ktoré umožňujú zapuzdrenie a opätovné použitie existujúcich metód a údajov.
  • Určenie typov uľahčuje ladenie a identifikáciu chýb, robí kód prehľadnejším a čitateľnejším a zjednodušuje jeho úpravu a analýzu vývojármi tretích strán.
  • Medzi podporované typy patria: rôzne typy hashov, polia a zoznamy, fronty, číselné a reťazcové typy, typy na určenie dátumu a času, regulárne výrazy (RegExp). Je možné vytvárať vlastné typy.
  • Na organizáciu paralelného vykonávania sa navrhuje použiť triedy s atribútom isolate, ktorých kód sa vykonáva úplne v izolovanom priestore v oddelenej oblasti pamäte, pričom s hlavným procesom interaguje odosielaním správ.
  • Podpora používania knižníc, ktoré zjednodušujú podporu a ladenie veľkých webových projektov. Implementácie funkcií tretích strán môžu byť zahrnuté vo forme zdieľaných knižníc. Aplikácie je možné rozdeliť na časti a zveriť vývoj každej časti samostatnému tímu programátorov.
  • Sada hotových nástrojov na podporu vývoja v jazyku Dart, vrátane implementácie nástrojov dynamického vývoja a ladenia s opravou kódu za behu („edit-and-continue“).
  • Na zjednodušenie vývoja v jazyku Dart sa dodáva so súpravou SDK, správcom balíkov, analyzátorom statického kódu dart_analyzer, sadou knižníc, integrovaným vývojovým prostredím DartPad a zásuvnými modulmi s podporou Dart pre IntelliJ IDEA, WebStorm, Emacs, Sublime Text. 2 a Vim.
  • Ďalšie balíčky s knižnicami a utilitami sú distribuované cez pub repozitár, ktorý má okolo 22 tisíc balíčkov.

Hlavné zmeny vo vydaní Dart 2.15:

  • Poskytuje nástroje na rýchle paralelné vykonávanie úloh s izoláciou handlerov. Vo viacjadrových systémoch beží modul Dart predvolene aplikačný kód na jednom jadre CPU a ostatné jadrá používa na vykonávanie systémových úloh, ako sú asynchrónne I/O, zapisovanie do súborov alebo sieťové volania. Pre aplikácie, ktoré potrebujú vykonávať svoje obslužné programy paralelne, napríklad na vykreslenie animácie v rozhraní, je možné spustiť samostatné bloky kódu (izolovať), izolované od seba a spúšťané na iných jadrách CPU súčasne s hlavným vláknom aplikácie. . Na ochranu pred chybami, ktoré vznikajú pri súčasnom vykonávaní kódu pracujúceho s rovnakou sadou údajov, je zakázané zdieľanie meniteľných objektov v rôznych blokoch izolácie a na interakciu medzi obslužnými programami sa používa model odovzdávania správ.

    Dart 2.15 predstavuje nový koncept - izolované skupiny blokov (izolované skupiny), ktorý vám umožňuje organizovať zdieľaný prístup k rôznym interným dátovým štruktúram v izolovaných blokoch, ktoré sú súčasťou rovnakej skupiny, čo môže výrazne znížiť réžiu pri interakcii medzi obslužnými osobami v skupine. . Napríklad spustenie dodatočného izolovaného bloku v existujúcej skupine je 100-krát rýchlejšie a vyžaduje 10-100-krát menej pamäte ako spustenie samostatného izolovaného bloku, pretože nie je potrebné inicializovať dátové štruktúry programu.

    Napriek tomu, že izolovať bloky v skupine stále zakazujú zdieľaný prístup k meniteľným objektom, skupiny používajú zdieľanú haldovú pamäť, ktorá môže výrazne urýchliť prenos objektov z jedného bloku do druhého bez potreby vykonávať operácie s kopírovaním náročným na zdroje. Nová verzia tiež umožňuje odovzdať výsledok obsluhy pri volaní Isolate.exit() na prenos údajov do nadradeného bloku izolácie bez operácií kopírovania. Okrem toho bol optimalizovaný mechanizmus prenosu správ – malé a stredné správy sa teraz spracúvajú približne 8-krát rýchlejšie. Objekty, ktoré možno prenášať medzi izolátmi pomocou volania SendPort.send(), zahŕňajú niektoré typy funkcií, uzáverov a trasovania zásobníka.

  • V nástrojoch na vytváranie ukazovateľov na jednotlivé funkcie v iných objektoch (tear-off) boli odstránené obmedzenia na vytváranie podobných ukazovateľov v kóde konštruktora, čo môže byť užitočné pri budovaní rozhraní založených na knižnici Flutter. Ak chcete napríklad vytvoriť miniaplikáciu Column, ktorá obsahuje viacero miniaplikácií Text, môžete zavolať ".map()" a odovzdať ukazovatele do konštruktora Text.new objektu Text: class FruitWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Column( deti: ['Apple', 'Orange'].map(Text.new).toList()); } }
  • Rozšírili sa možnosti spojené s používaním ukazovateľov funkcií. Pridaná možnosť používať generické metódy a ukazovatele funkcií na vytvorenie negenerickej metódy a ukazovateľa: T id (hodnota T) => hodnota; var intId = id ; // povolené vo verzii 2.15 namiesto "int Function(int) intId = id;" const fo = id; // ukazovateľ na ID funkcie. const c1 = fo ;
  • Knižnica dart:core má vylepšenú podporu pre výčty, napríklad teraz môžete z každej výčtovej hodnoty vypísať hodnotu reťazca pomocou metódy „.name“, vybrať hodnoty podľa názvu alebo porovnať páry hodnôt: enum MyEnum { one , dva, tri } void main() { print(MyEnum.one.name); // "jeden" sa vytlačí. print(MyEnum.values.byName('dva') == MyEnum.dva); // "true" sa vytlačí. finálna mapa = MyEnum.values.asNameMap(); print(map['tri'] == MyEnum.tri); // "pravda". }
  • Bola implementovaná technika kompresie ukazovateľov, ktorá umožňuje použitie kompaktnejšej reprezentácie ukazovateľov v 64-bitovom prostredí, ak na adresovanie postačuje 32-bitový adresný priestor (nepoužíva sa viac ako 4 GB pamäte). Testy ukázali, že takáto optimalizácia umožňuje znížiť veľkosť haldy približne o 10 %. V súprave Flutter SDK je nový režim už v predvolenom nastavení povolený pre Android a plánuje sa jeho aktivácia pre iOS v budúcom vydaní.
  • Dart SDK obsahuje nástroje na ladenie a analýzu výkonu (DevTools), ktoré boli predtým dodávané v samostatnom balíku.
  • Do príkazu „dart pub“ a repozitárov balíkov pub.dev boli pridané nástroje na sledovanie náhodného zverejnenia dôverných informácií, napríklad ponechanie poverení pre systémy nepretržitej integrácie a cloudové prostredia vo vnútri balíka. Ak sa takéto úniky zistia, vykonávanie príkazu „dart pub publish“ sa preruší chybovým hlásením. Ak bol falošne pozitívny, je možné obísť kontrolu cez bielu listinu.
  • Do repozitára pub.dev bola pridaná možnosť odvolať už zverejnenú verziu balíka, napríklad v prípade zistenia nebezpečných chýb alebo zraniteľností. Predtým bolo pri takýchto opravách zvykom zverejniť opravnú verziu, ale v niektorých situáciách je potrebné zrušiť existujúce vydanie a urýchlene zastaviť jeho ďalšiu distribúciu (napríklad ak oprava ešte nie je pripravená alebo ak bolo úplné vydanie uverejnené omylom namiesto testovacej verzie). Po odvolaní už balík nie je identifikovaný v príkazoch „pub get“ a „pub upgrade“ a na systémoch, ktoré ho už nainštalovali, sa pri ďalšom spustení „pub get“ zobrazí špeciálne varovanie.
  • Pridaná ochrana proti zraniteľnosti (CVE-2021-22567) spôsobenej použitím znakov unicode v kóde, ktoré menia poradie zobrazenia.
  • Opravená chyba zabezpečenia (CVE-2021-22568), ktorá vám umožňuje vydávať sa za iného používateľa pub.dev pri zverejňovaní balíkov na serveri tretej strany, ktorý akceptuje prístupové tokeny pub.dev oauth2. Zraniteľnosť by sa napríklad mohla použiť na útok na interné a podnikové servery balíkov. Vývojárov, ktorí sú hostiteľmi balíkov iba na pub.dev, sa tento problém netýka.

Zároveň bolo predstavené významné vydanie frameworku používateľského rozhrania Flutter 2.8, ktorý je považovaný za alternatívu k React Native a umožňuje na základe jedinej kódovej základne vydávať aplikácie pre iOS, Android, Windows, macOS a platformy Linux, ako aj vytváranie aplikácií na spustenie v prehliadačoch. Vlastný shell pre operačný systém mikrokernel Fuchsia vyvinutý spoločnosťou Google je postavený na základe Flutter. Je potrebné poznamenať, že za posledných šesť mesiacov sa počet aplikácií Flutter 2 v obchode Google Play zvýšil z 200 tisíc na 375 tisíc, t.j. takmer dvakrát.

Hlavná časť kódu Flutter je implementovaná v jazyku Dart a runtime engine na spúšťanie aplikácií je napísaný v C++. Pri vývoji aplikácií môžete okrem Flutterovho natívneho jazyka Dart použiť rozhranie Dart Foreign Function na volanie kódu C/C++. Vysoký výkon pri vykonávaní sa dosahuje kompiláciou aplikácií do natívneho kódu pre cieľové platformy. V tomto prípade nie je potrebné program po každej zmene prekompilovať – Dart poskytuje režim horúceho opätovného načítania, ktorý umožňuje vykonávať zmeny v spustenej aplikácii a okamžite vyhodnotiť výsledok.

Medzi zmenami v novom vydaní Flutter je uvedená optimalizácia rýchlosti spúšťania a spotreby pamäte na mobilných zariadeniach. Je jednoduchšie pripojiť aplikácie k backendovým službám, ako sú Firebase a Google Cloud. Nástroje na integráciu s Google Ads boli stabilizované. Výrazne sa zlepšila podpora pre fotoaparáty a webové pluginy. Boli navrhnuté nové nástroje na zjednodušenie vývoja, napríklad bol pridaný widget na autentifikáciu pomocou Firebase. Engine Flame, určený na vývoj 2D hier pomocou Flutter, bol aktualizovaný.

Zdroj: opennet.ru

Pridať komentár