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

Google zveřejnil vydání programovacího jazyka Dart 2.15, který pokračuje ve vývoji radikálně přepracované větve Dart 2, která se od původní verze jazyka Dart liší použitím silného statického psaní (typy lze odvodit automaticky, takže není nutné specifikovat typy, ale dynamické typování se již nepoužívá a zpočátku se počítá typ je přiřazen k proměnné a následně je aplikována přísná kontrola typu).

Vlastnosti jazyka Dart:

  • Známá a snadno naučitelná syntaxe, přirozená pro programátory JavaScript, C a Java.
  • Zajištění rychlého spouštění a vysokého výkonu pro všechny moderní webové prohlížeče a různé typy prostředí, od přenosných zařízení až po výkonné servery.
  • Schopnost definovat třídy a rozhraní, které umožňují zapouzdření a opětovné použití existujících metod a dat.
  • Specifikace typů usnadňuje ladění a identifikaci chyb, činí kód přehlednějším a čitelnějším a zjednodušuje jeho úpravy a analýzu vývojáři třetích stran.
  • Mezi podporované typy patří: různé typy hashů, pole a seznamy, fronty, číselné a řetězcové typy, typy pro určování data a času, regulární výrazy (RegExp). Je možné vytvářet vlastní typy.
  • Pro organizování paralelního provádění se navrhuje používat třídy s atributem isolate, jejichž kód je zcela spouštěn v izolovaném prostoru v oddělené oblasti paměti a interaguje s hlavním procesem odesíláním zpráv.
  • Podpora používání knihoven, které zjednodušují podporu a ladění velkých webových projektů. Implementace funkcí třetích stran mohou být zahrnuty ve formě sdílených knihoven. Aplikace lze rozdělit na části a svěřit vývoj každé části samostatnému týmu programátorů.
  • Sada hotových nástrojů pro podporu vývoje v jazyce Dart, včetně implementace nástrojů pro dynamický vývoj a ladění s opravami kódu za běhu („edit-and-continue“).
  • Pro zjednodušení vývoje v jazyce Dart je dodáván se sadou SDK, správcem balíčků, analyzátorem statického kódu dart_analyzer, sadou knihoven, integrovaným vývojovým prostředím DartPad a zásuvnými moduly s podporou Dart pro IntelliJ IDEA, WebStorm, Emacs, Sublime Text. 2 a Vim.
  • Další balíčky s knihovnami a utilitami jsou distribuovány prostřednictvím hospodského úložiště, které má asi 22 tisíc balíčků.

Hlavní změny ve vydání Dart 2.15:

  • Poskytuje nástroje pro rychlé paralelní provádění úloh s izolací handlerů. Na vícejádrových systémech běhový modul Dart ve výchozím nastavení spouští aplikační kód na jednom jádru CPU a používá další jádra k provádění systémových úloh, jako je asynchronní I/O, zápis do souborů nebo síťová volání. Pro aplikace, které potřebují spouštět své ovladače paralelně, například pro vykreslení animace v rozhraní, je možné spustit samostatné bloky kódu (izolovat), izolované od sebe a spouštěné na jiných jádrech CPU současně s hlavním vláknem aplikace. . Pro ochranu proti chybám, které vznikají při současném provádění kódu pracujícího se stejnou sadou dat, je zakázáno sdílení měnitelných objektů v různých blocích izolace a pro interakci mezi obslužnými rutinami se používá model předávání zpráv.

    Dart 2.15 zavádí nový koncept - izolované skupiny bloků (izolované skupiny), který umožňuje organizovat sdílený přístup k různým interním datovým strukturám v izolovaných blocích, které jsou součástí stejné skupiny, což může výrazně snížit režii při interakci mezi handlery ve skupině. . Například spuštění dalšího izolovaného bloku ve stávající skupině je 100krát rychlejší a vyžaduje 10–100krát méně paměti než spuštění samostatného izolovaného bloku, a to díky eliminaci potřeby inicializovat datové struktury programu.

    Navzdory skutečnosti, že izolovat bloky ve skupině stále zakazují sdílený přístup k proměnlivým objektům, skupiny používají sdílenou paměť haldy, která může výrazně urychlit přenos objektů z jednoho bloku do druhého, aniž by bylo nutné provádět operace kopírování náročné na zdroje. Nová verze také umožňuje předat výsledek handleru při volání Isolate.exit() k přenosu dat do nadřazeného bloku izolace bez operací kopírování. Kromě toho byl optimalizován mechanismus přenosu zpráv – malé a střední zprávy jsou nyní zpracovávány přibližně 8krát rychleji. Objekty, které lze předávat mezi izoláty pomocí volání SendPort.send(), zahrnují některé typy funkcí, uzávěrů a trasování zásobníku.

  • V nástrojích pro vytváření ukazatelů na jednotlivé funkce v jiných objektech (tear-off) byla odstraněna omezení pro vytváření podobných ukazatelů v kódu konstruktoru, což se může hodit při sestavování rozhraní založených na knihovně Flutter. Chcete-li například vytvořit widget Column, který obsahuje více widgetů Text, můžete zavolat „.map()“ a předat ukazatele konstruktoru Text.new objektu Text: class FruitWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Column( children: ['Apple', 'Orange'].map(Text.new).toList()); } }
  • Rozšířily se možnosti spojené s používáním ukazatelů funkcí. Přidána možnost používat obecné metody a ukazatele funkcí k vytvoření negenerické metody a ukazatele: T id (hodnota T) => hodnota; var intId = id ; // povoleno ve verzi 2.15 místo "int Function(int) intId = id;" const fo = id; // ukazatel na id funkce. const c1 = fo ;
  • Knihovna dart:core má vylepšenou podporu pro výčty, například nyní můžete z každé výčtové hodnoty vypsat hodnotu řetězce pomocí metody „.name“, vybrat hodnoty podle názvu nebo porovnat páry hodnot: enum MyEnum { jedna , dva, tři } void main() { print(MyEnum.one.name); // "jeden" bude vytištěn. print(MyEnum.values.byName('dva') == MyEnum.dva); // "true" bude vytištěno. konečná mapa = MyEnum.values.asNameMap(); print(map['three'] == MyEnum.three); // "skutečný". }
  • Byla implementována technika komprese ukazatelů, která umožňuje použití kompaktnější reprezentace ukazatelů v 64bitových prostředích, pokud je pro adresování dostatečný 32bitový adresní prostor (nevyužívá se více než 4 GB paměti). Testy ukázaly, že taková optimalizace umožňuje snížit velikost haldy přibližně o 10 %. V sadě Flutter SDK je nový režim již ve výchozím nastavení povolen pro Android a v budoucí verzi se plánuje jeho povolení pro iOS.
  • Dart SDK obsahuje nástroje pro ladění a analýzu výkonu (DevTools), které byly dříve dodávány v samostatném balíčku.
  • Do příkazu „dart pub“ a repozitářů balíčků pub.dev byly přidány nástroje pro sledování náhodného zveřejnění důvěrných informací, například ponechání přihlašovacích údajů pro nepřetržité integrační systémy a cloudová prostředí uvnitř balíčku. Pokud jsou takové úniky zjištěny, provádění příkazu „dart pub publish“ bude přerušeno chybovou zprávou. Pokud byl falešně pozitivní, je možné obejít kontrolu přes bílou listinu.
  • Do repozitáře pub.dev byla přidána možnost odvolat již publikovanou verzi balíčku, například pokud jsou objeveny nebezpečné chyby nebo zranitelnosti. Dříve pro takové opravy bylo zvykem publikovat opravnou verzi, ale v některých situacích je nutné stávající vydání zrušit a urychleně zastavit jeho další distribuci (například pokud oprava ještě není připravena nebo pokud bylo úplné vydání zveřejněno omylem místo testovací verze). Po odvolání již není balíček identifikován v příkazech „pub get“ a „pub upgrade“ a na systémech, které jej již nainstalovaly, se při příštím spuštění „pub get“ zobrazí zvláštní varování.
  • Přidána ochrana proti zranitelnosti (CVE-2021-22567) způsobené použitím znaků unicode v kódu, které mění pořadí zobrazení.
  • Opravena chyba zabezpečení (CVE-2021-22568), která vám umožňuje vydávat se za jiného uživatele pub.dev při publikování balíčků na server třetí strany, který přijímá přístupové tokeny pub.dev oauth2. Zranitelnost by mohla být například použita k útoku na interní a podnikové balíčkové servery. Vývojářů, kteří hostují pouze balíčky na pub.dev, se tento problém netýká.

Zároveň bylo představeno významné vydání frameworku uživatelského rozhraní Flutter 2.8, který je považován za alternativu k React Native a umožňuje na základě jednotné kódové základny vydávat aplikace pro iOS, Android, Windows, macOS a Linuxové platformy a také vytvářet aplikace pro běh v prohlížečích. Vlastní shell pro operační systém mikrokernelu Fuchsia vyvinutý společností Google je postaven na základě Flutter. Je třeba poznamenat, že za posledních šest měsíců se počet aplikací Flutter 2 v Obchodě Google Play zvýšil z 200 tisíc na 375 tisíc, tzn. téměř dvakrát.

Hlavní část kódu Flutter je implementována v jazyce Dart a runtime engine pro spouštění aplikací je napsán v C++. Při vývoji aplikací můžete kromě nativního jazyka Dart společnosti Flutter použít rozhraní Dart Foreign Function pro volání kódu C/C++. Vysokého výkonu při provádění je dosaženo kompilací aplikací do nativního kódu pro cílové platformy. V tomto případě není nutné program po každé změně překompilovat – Dart poskytuje režim horkého načítání, který umožňuje provádět změny v běžící aplikaci a okamžitě vyhodnotit výsledek.

Mezi změnami v nové verzi Flutter je uvedena optimalizace rychlosti spouštění a spotřeby paměti na mobilních zařízeních. Je snazší připojit aplikace k backendovým službám, jako je Firebase a Google Cloud. Nástroje pro integraci s Google Ads byly stabilizovány. Podpora fotoaparátů a webových pluginů byla výrazně vylepšena. Byly navrženy nové nástroje pro zjednodušení vývoje, například byl přidán widget pro ověřování pomocí Firebase. Engine Flame, určený pro vývoj 2D her pomocí Flutter, byl aktualizován.

Zdroj: opennet.ru

Přidat komentář