Dart 2.14 nyelv és Flutter 2.5 keretrendszer elérhető

A Google közzétette a Dart 2.14 programozási nyelv kiadását, amely a Dart 2 gyökeresen újratervezett ágának fejlesztését folytatja, amely a Dart nyelv eredeti verziójától erős statikus gépelés használatával tér el (a típusok automatikusan következtethetők, így típusok megadása nem szükséges, de a dinamikus gépelés már nem használatos, és kezdetben a típus hozzá van rendelve a változóhoz, majd szigorú típusellenőrzést alkalmaznak).

A Dart nyelv jellemzői:

  • Ismerős és könnyen megtanulható szintaxis, természetes a JavaScript, C és Java programozók számára.
  • Gyors indítás és nagy teljesítmény biztosítása minden modern webböngésző és különféle környezet számára, a hordozható eszközöktől a nagy teljesítményű szerverekig.
  • Osztályok és interfészek meghatározásának képessége, amelyek lehetővé teszik a meglévő módszerek és adatok beágyazását és újrafelhasználását.
  • A típusok megadása megkönnyíti a hibakeresést és a hibák azonosítását, világosabbá és olvashatóbbá teszi a kódot, valamint leegyszerűsíti a külső fejlesztők általi módosítását és elemzését.
  • A támogatott típusok a következők: különböző típusú hash-ek, tömbök és listák, sorok, numerikus és karakterlánc-típusok, dátum és idő meghatározására szolgáló típusok, reguláris kifejezések (RegExp). Lehetőség van saját típusok létrehozására.
  • A párhuzamos végrehajtás megszervezéséhez javasolt az isolate attribútummal rendelkező osztályok használata, amelyek kódja teljes egészében izolált térben, külön memóriaterületen fut le, üzenetek küldésével kölcsönhatásba lépve a fő folyamattal.
  • A nagy webes projektek támogatását és hibakeresését leegyszerűsítő könyvtárak használatának támogatása. A funkciók harmadik féltől származó implementációi megosztott könyvtárak formájában is szerepelhetnek. Az alkalmazások részekre bonthatók, és az egyes részek fejlesztését külön programozói csapatra bízhatjuk.
  • Kész eszközök készlete a Dart nyelvű fejlesztés támogatására, beleértve a dinamikus fejlesztő és hibakereső eszközök megvalósítását menet közbeni kódjavítással ("szerkesztés és folytatás").
  • A Dart nyelv fejlesztésének leegyszerűsítése érdekében SDK-t, csomagkezelő pubot, dart_analyzer statikus kódelemzőt, könyvtárkészletet, DartPad integrált fejlesztői környezetet és Dart-kompatibilis beépülő modulokat tartalmaz az IntelliJ IDEA, WebStorm, Emacs, Sublime Text számára. 2 és Vim.
  • A több mint 20 ezer csomagot tartalmazó pub repository-n keresztül további, könyvtárakat és segédprogramokat tartalmazó csomagok kerülnek terjesztésre.

Főbb változások a Dart 2.14 kiadásában:

  • Bekerült egy új tripla shift operátor (>>>), amely a “>>” operátortól eltérően nem aritmetikai, hanem logikai eltolást hajt végre, amely az előjelbit figyelembevétele nélkül működik (az eltolás osztás nélkül történik pozitív és negatív számok).
  • Eltávolította a típusargumentumokra vonatkozó korlátozást, amely megakadályozta az általános függvénytípusok típusargumentumként való használatát. Például most megadhatja: késői lista (T)>idFunctions; var callback = [ (T érték) => érték]; késői S funkció (T)>(S) f;
  • Típusú argumentumok megadásának engedélyezése a megjegyzésekben, például @Deprecated. Például most megadhatja: @TypeHelper (42, "A jelentés")
  • A statikus hash, hashAll és hashAllUnordered metódusokat hozzáadtuk az Object osztály szabványos könyvtárához (core). A DateTime osztály javította a helyi idő kezelését az egy órával nem osztható nyári és téli időszámítás között (például Ausztráliában 30 perces eltolást használnak). Az ffi csomag támogatja az aréna memóriakiosztási mechanizmust, amely automatikusan felszabadítja az erőforrásokat. Az ffigen csomag hozzáadta a Dart típusok typedef definícióinak C nyelvből történő generálására.
  • A pub.dev tárolóból a 250 legnépszerűbb csomag és a top 94 1000%-a „null biztonsági” módra vált, amely elkerüli a nem definiált és „Null” értékre állított változók használatának kísérletei által okozott összeomlásokat. "" A mód azt jelenti, hogy a változóknak nem lehet null értéke, hacsak nincs hozzájuk rendelve kifejezetten null érték. A mód szigorúan tiszteletben tartja a változó típusokat, ami lehetővé teszi a fordító számára, hogy további optimalizálásokat alkalmazzon. A típusmegfelelőséget a rendszer a fordításkor ellenőrzi, például ha olyan típusú változóhoz próbál „Null” értéket rendelni, amely nem utal meghatározatlan állapotra, például „int”, hibaüzenet jelenik meg.
  • A kódelemző (linter) egységes szabálykészletét javasoljuk, amely egyidejűleg támogatja a Dart és a Flutter keretrendszer kódstílus-irányelvei betartásának ellenőrzését. Történelmi okokból a Flutter és a Dart kódolási szabályai eltérőek voltak, ráadásul a Dart esetében két szabálykészlet volt használatban – a Google pedáns szabályai és a Dart fejlesztői közösség szabályai. A Dart 2.14 új közös szabálykészletet vezet be a linterhez, amelyet alapértelmezés szerint az új Dart projektekben és a Flutter SDK-ban használnak. A készlet tartalmazza az alapvető szabályokat (lints/core.yaml csomag), az ajánlott további szabályokat (lints/recommended.yaml) és a Flutter-specifikus ajánlásokat (flutter_lints/flutter.yaml). A pedáns szabályok használóinak azt tanácsoljuk, hogy váltsanak át egy új kódolási stílusra a Dart dokumentáció ajánlásai alapján.
  • A formázóban optimalizálták a lépcsőzetes kódblokkok formázását, ami jelentősen javíthatja a formázási teljesítményt, és elkerülheti a kifejezési elemek tulajdonjogának félreérthető értelmezését. Például a "..doIt" meghívása a "var result = errorState? foo : bad..doIt()” nem a „bad” blokk feltételes részére vonatkozik, hanem a teljes kifejezésre, így formázáskor most el van választva: var result = errorState ? foo : rossz ..doIt();
  • Az Apple M1 (Silicon) processzorok támogatása hozzáadásra került az SDK-hoz, ami magában foglalja mind a Dart VM, a segédprogramok és az SDK-komponensek futtatásának lehetőségét az Apple Silicon processzorral rendelkező rendszereken, mind a futtatható fájlok fordításának támogatását ezekhez a chipekhez.
  • A „dart pub” parancs egy új „.pubignore” szolgáltatásfájl támogatását adta, amely lehetővé teszi azon fájlok listájának meghatározását, amelyek kihagyásra kerülnek, amikor egy csomagot közzétesznek a pub.dev tárolóban. Ezek a beállítások nem zavarják a „.gitignore” figyelmen kívül hagyó listát (bizonyos helyzetekben a pub.dev el akarja kerülni a Gitben szükséges fájlok, például a fejlesztés során használt belső szkriptek átvitelét).
  • Dolgoztunk a „dart test” parancs teljesítményének javításán, amely immár nem igényli a tesztek újrafordítását a pubspec megváltoztatása után, ha a verziószám nem változott.
  • Az ECMAScript 5 kompatibilitási módban történő fordítás támogatása megszűnt (a változás az IE11 böngészővel való kompatibilitás elvesztését eredményezi).
  • A stagehand, a dartfmt és a dart2native egyes segédprogramokat elavulttá nyilvánították, helyükre a dart segédprogramon keresztül meghívott beépített parancsok léptek.
  • A VM Native Extensions mechanizmus elavult. A natív kód Dart kódból való hívásához javasolt az új Dart FFI (Foreign Function Interface) használata.

Ezzel egy időben bemutatták a felhasználói felület keretrendszerének jelentős kiadását, a Flutter 2.5-öt, amely a React Native alternatívájaként tekinthető, és egyetlen kódbázis alapján lehetővé teszi alkalmazások kiadását iOS, Android, Windows, macOS és Linux platformokra, valamint böngészőkben futtatható alkalmazások létrehozására. A Google által kifejlesztett Fuchsia mikrokernel operációs rendszer egyedi shellje a Flutter alapján épül fel.

A Flutter kód fő része Dart nyelven van implementálva, az alkalmazások futtatására szolgáló futásidejű motor pedig C++ nyelven íródott. Alkalmazások fejlesztése során a Flutter natív Dart nyelvén kívül a Dart Foreign Function felületet is használhatjuk C/C++ kódok hívására. Nagy végrehajtási teljesítmény érhető el, ha az alkalmazásokat a célplatformok natív kódjára fordítják. Ebben az esetben a programot nem kell minden változtatás után újrafordítani - a Dart egy forró újratöltési módot biztosít, amely lehetővé teszi, hogy módosítsa a futó alkalmazást, és azonnal kiértékelje az eredményt.

A Flutter 2.5 főbb változásai:

  • Jelentős teljesítményoptimalizálást hajtott végre. iOS és macOS platformokon a Metal grafikus API árnyékolóinak előzetes összeállítása megtörtént. Az aszinkron események feldolgozásának hatékonyabbá tétele. Megoldott a késéssel kapcsolatos probléma, amikor a szemétgyűjtő visszanyeri a memóriát a nem használt képekből (például egy 20 másodperces animált GIF lejátszásakor a szemétgyűjtési műveletek száma 400-ról 4-re csökkent. Késések az üzenetek továbbításakor a Dart és az Objective- között A C/Swift 50%-ra csökkent (iOS) vagy Java/Kotlin (Android). Natív összeépítési támogatás hozzáadva az Apple Silicon chipen alapuló rendszerekhez.
    Dart 2.14 nyelv és Flutter 2.5 keretrendszer elérhető
  • Az Android platformon létrejött az alkalmazások teljes képernyős módban történő futtatásának támogatása. Folytatódott a következő generációs Material Design opcióként bemutatott „Material You” tervezési koncepció megvalósítása. Hozzáadott egy új MaterialState.scrolledUnder állapotot, megvalósította a görgetősávok dinamikus megjelenítését az átméretezéskor, és új felületet javasolt az értesítési szalaghirdetések megjelenítéséhez.
  • A kamera beépülő modul képességei jelentősen bővültek, az autofókusz, az expozíció, a vaku, a zoom, a zajcsökkentés és a felbontás vezérlésére szolgáló eszközökkel bővült.
  • A fejlesztői eszközöket (DevTools) továbbfejlesztették, hogy frissített widget-ellenőrzési módot, valamint a renderelési késések azonosítására és a shader-összeállítás nyomon követésére szolgáló eszközöket tartalmazzák.
    Dart 2.14 nyelv és Flutter 2.5 keretrendszer elérhető
  • Továbbfejlesztett bővítmények a Visual Studio Code és az IntelliJ/Android Studio számára.

Forrás: opennet.ru

Hozzászólás