A Google publikálta a Dart 2.14 programozási nyelv kiadását, amely tovább fejlesztette a radikálisan átdolgozott Dart 2 ágat, amely eltér az eredeti Dart nyelvtől, mivel erős statikus típust alkalmaz (a típusok automatikusan kiérhetők, ezért a típusok megadása nem kötelező, de a dinamikus típust már nem használják, és az eredetileg számított típus rögzítve van a változón, és a jövőben szigorú típuskontrollt alkalmaznak).
A Dart nyelv jellemzői:
- Ismerős és könnyen megtanulható szintaxis, amely természetes a JavaScript, C és Java programozók számára.
- Gyors indítást és magas teljesítményt biztosít minden modern webböngésző és különböző környezetek számára, a hordozható eszközöktől a hatékony rendszerekig. szerverek.
- Lehetőség osztályok és interfészek meghatározására, lehetővé téve az enkapszulációt és a meglévő módszerek és adatok újrahasználatát.
- A típusok megadása leegyszerűsíti a hibakeresést és az elhárítást, világosabbá és olvashatóbbá teszi a kódot, valamint megkönnyíti annak későbbi módosítását és harmadik fél általi elemzését.
- A támogatott típusok közé tartoznak: különféle hash típusok, tömbök és listák, sorok, numerikus és karakteres típusok, dátum- és időtípusok, reguláris kifejezések (RegExp). Lehetőség van saját típusok létrehozására is.
- A párhuzamos végrehajtás szervezésére izolátum attribútummal rendelkező osztályokat ajánlott használni, amelyek kódja teljesen elkülönített térben fut egy másik memóriaterületen, az alapfolyamathoz üzenetek küldésével kommunikálva.
- Támogatja a könyvtárak használatát, amelyek megkönnyítik a nagyobb webes projektek karbantartását és hibakeresését. Harmadik féltől származó funkciók külső könyvtárként csatlakoztathatók. Az alkalmazásokat részekre lehet bontani, és a fejlesztést minden egyes részhez külön programozói csapatra lehet bízni.
- Kész eszközök készlete a Dart nyelv fejlesztésének támogatására, beleértve a dinamikus fejlesztési és hibakeresési eszközök végrehajtását, amelyek lehetővé teszik a kód élő javítását („edit-and-continue”).
- A Dart programozási nyelv fejlesztésének megkönnyítésére SDK, a pub csomagmenedzser, a dart_analyzer statikus kódellenőrző, a DartPad integrált fejlesztői környezet és a Dart-ot támogató pluginok érhetők el IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 és Vim számára.
- További könyvtárak és segédprogramok csomagjait a pub tárolón keresztül terjesztik, amely több mint 20 ezer csomagot számlál.
A Dart 2.14 kiadásának főbb változásai:
- Új háromszoros eltolási operátor (>>>) került bevezetésre, amely a '>>' operátorral ellentétben nem aritmetikai, hanem logikai eltolást hajt végre, amely a jelzőbit figyelembevétele nélkül működik (eltolás történik a pozitív és negatív számok megkülönböztetése nélkül).
- Eltüntetésre került a típusargumentumokra vonatkozó korlátozás, amely megakadályozta a generikus típusú függvények használatát mint típus argumentumot. Például most megadható: late List<T Function<T>(T)> idFunctions; var callback = [<T>(T value) => value]; late S Function<S extends T Function<T>(T)>(S) f;
- Lehetővé vált a típusokkal rendelkező argumentumok megadása az annotációkban, például a @Deprecated esetében. Például most megadható: @TypeHelper<int>(42, 'A jelentés')
- A standard könyvtárba (core) az Object osztályban statikus hash, hashAll és hashAllUnordered metódusokat adtak hozzá. A DateTime osztályban javították a helyi idő kezelést nyári és téli időszámítás közötti áttéréskor, ha az eltérés nem egy órára kerekített (például Ausztráliában 30 perces eltérést alkalmaznak). Az ffi csomaghoz hozzáadták az arena memóriaallokációs mechanizmus támogatását, amely automatikusan felszabadítja az erőforrásokat. Az ffigen csomaghoz a Dart típusok typedef-definícióinak generálására került lehetőség a C nyelvből.
- A 250 legnépszerűbb csomagból a pub.dev tárolójában és a 94%-a a top-1000-ből már átállt a "Null" érték használatának biztonságos módjára (null safety), amely elkerüli a változók használatából eredő összeomlásokat, amelyeknek az értéke nincs meghatározva, és "Null"-ra van beállítva. Ez a mód azt jelenti, hogy a változóknak nem lehetnek meghatározatlan értékeik, hacsak kifejezetten nem rendelnek hozzá null értéket. A mód szigorúan figyelembe veszi a változók típusait, lehetővé téve a fordító számára további optimalizálások alkalmazását. A típusok megfelelőségét a fordítási szakaszban ellenőrzik, például, ha próbálkozunk null értéket rendelni egy olyan típusú változóhoz, amely nem engedélyez meghatározatlan állapotot, mint például az "int", akkor hibaüzenetet kapunk.
- Feljegyeztek egységes szabálykészleteket a kód analizátorhoz (linter), amelyek egyszerre biztosítják a Dart és a Flutter keretrendszer kódformázási ajánlásainak betartását. Történeti okok miatt a Flutter és Dart kódformázási szabályai eltértek egymástól, emellett a Dart esetében két szabálykészlet volt elterjedt — a Google pedáns szabályai és a Dart fejlesztői közösség szabályai. A Dart 2.14-ben egy új közös szabálykészlet jelent meg a linter számára, amelyet új Dart projektekben és a Flutter SDK-ban alapértelmezés szerint alkalmaznak. A készlet alapvető szabályokat tartalmaz (lints/core.yaml), ajánlott kiegészítő szabályokat (lints/recommended.yaml), és Flutter-specifikus ajánlásokat (flutter_lints/flutter.yaml). A pedáns szabályokat használó felhasználóknak azt javasolják, hogy váltsanak az új kódolási stílusra, amely a Dart dokumentációjából származó ajánlások alapján készült.
- A formatterben optimalizálásokat hajtottak végre a kód kaszkádos blokkjainak formázásán, lehetővé téve a formázás teljesítményének jelentős növelését és a kifejezések elemeinek hovatartozásának egyértelműsítését. Például, a "..doIt" hívás a "var result = errorState ? foo : bad..doIt()" kifejezésben nem a "bad" blokknak a feltételes részét érinti, hanem az egész kifejezést, ezért a formázás során mostantól az alábbi módon kerül elválasztásra: var result = errorState ? foo : bad ..doIt();
- Az SDK támogatást kapott az Apple M1 (Silicon) processzorokhoz, amely magában foglalja a Dart VM, segédprogramok és SDK komponensek futtatásának lehetőségét Apple Silicon processzorral rendelkező rendszereken, valamint a végrehajtható fájlok lefordításának támogatását a megadott chipekre.
- A „dart pub” parancs keretében hozzáadták az új „.pubignore” segédfájl támogatását, amely lehetővé teszi a csomagok publikálásakor a kihagyandó fájlok listájának meghatározását a pub.dev tárolóban. A megadott beállítások nem ütköznek a „.gitignore” figyelmen kívül hagyási listájával (bizonyos esetekben a pub.dev megköveteli a Git által használt fájlok, például a fejlesztés során használt belső szkriptek át nem adását).
- Teljesítményjavítást végeztek a „dart test” csapatában, amely most már nem igényel újra fordítást a tesztek után, ha a pubspec verziószáma nem változott.
- A kompatibilitási módú fordítás támogatása megszűnt az ECMAScript 5-tel (ez a változás a böngészőkkel való kompatibilitás elvesztéséhez vezet). A stagehand, dartfmt és dart2native különböző segédprogramok elavultnak nyilvánítva, helyettük beépített parancsokat vezettek be, amelyek a dart utilitáson keresztül hívhatók meg.
- A VM Native Extensions mechanizmusát elavultnak nyilvánították. A natív kód Dart nyelvű kódból való meghívásához javasolt az új Dart FFI (Foreign Function Interface) interfész használata.
- Egyszerre jelentős megjelenés történt a Flutter 2.5 felhasználói felület keretrendszerében, amely a React Native alternatívájaként van számon tartva, és lehetővé teszi, hogy egyetlen kódbázisból alkalmazásokat indítsanak iOS, Android, Windows, macOS és Linux platformokon, valamint böngészőkben futó alkalmazásokat hozzanak létre. A Flutter segítségével készült a Google által fejlesztett mikrokernel operációs rendszer, a Fuchsia felhasználói felülete.
A Flutter kódjának fő része Dart nyelven valósult meg, míg az alkalmazások futtatásához szükséges runtime motor C++-ban íródott. Az alkalmazások fejlesztése során a Flutter natív nyelve, a Dart mellett használható a Dart Foreign Function interfész is C/C++ kódok hívására. A magas teljesítmény elérése érdekében az alkalmazásokat gépi kódba fordítják a célplatformokhoz. Eközben a programot nem szükséges újrafordítani minden változtatás után – a Dart lehetőséget biztosít a hot reload módra, amely lehetővé teszi a működő alkalmazásban végzett módosítások azonnali értékelését.
A Flutter 2.5-ös verziójának főbb változásai:
A Flutter 2.5-ös verziójának főbb változásai:
- Jelentős teljesítményoptimalizálások történtek. Az iOS és macOS platformokon megvalósították a Metal grafikus API előkompilálását. Növelték az aszinkron események feldolgozásának hatékonyságát. Megoldották a memória késleltetési problémáját a nem használt képek törlésénél, így a 20 másodperces animált GIF lejátszása során a szemétgyűjtési műveletek száma 400-ról 4-ra csökkent. A Dart és az Objective-C/Swift (iOS) vagy Java/Kotlin (Android) közötti üzenetküldési késleltetések akár 50%-kal csökkentek. Bevezették a natív build támogatását az Apple Silicon chip alapú rendszerekhez.

- Az Android platformon megszületett a teljes képernyős alkalmazásmód támogatása. Folytatódik a "Material You" dizájn koncepciójának megvalósítása, amely a következő generációs Material Design lehetőségét jelenti. Új állapotot kaptunk, a MaterialState.scrolledUnder-t, megvalósították a görgetősávok dinamikus megjelenítését méretváltozáskor, és új interfészt ajánlottak a figyelmeztető bannerek megjelenítésére.
- Jelentősen kibővült a kamera használatához kapcsolódó plugin lehetőségei, amelyek most már tartalmazzák az automatikus élességállítás, expozíció, vaku, zoom, zajcsökkentés és felbontás kezelésének eszközeit.
- Fejlesztették a fejlesztői eszközöket (DevTools), amelyek most egy frissített widget-inspektáló móddal és olyan eszközökkel rendelkeznek, amelyek a rajzolási késleltetéseket és a shaderek fordításának nyomon követését segítik.

- Javították a Visual Studio Code és IntelliJ/Android Studio pluginokat.
Forrás: opennet.ru


