Elérhető a Dart 2.15 programozási nyelv és a Flutter 2.8 keretrendszer

A Google közzétette a Dart 2.15 programozási nyelv kiadását, amely folytatja a jelentősen átdolgozott Dart 2 ág fejlesztését, amely eltér az eredeti Dart nyelvverziótól, mivel erős statikus típust használ (a típusok automatikusan kiadhatók, így a típusok megadása nem kötelező, de a dinamikus típusokat már nem alkalmazzák, és az eredetileg kiszámított típust a változóhoz rögzítik, ami később szigorú típusellenőrzést tesz lehetővé).

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.
  • Kiegészítő csomagok könyvtárakkal és segédprogramokkal a pub tárolón keresztül érhetők el, amely körülbelül 22 ezer csomagot tartalmaz.

A Dart 2.15 verzió legfontosabb változásai:

  • Eszközök állnak rendelkezésre a feladatok gyors párhuzamos végrehajtásához a kezelők elszigetelésével. Többmagos rendszereken a Dart runtime alapértelmezés szerint egy CPU-magán hajtja végre az alkalmazás kódját, míg a többi magot rendszerszintű feladatok, mint például aszinkron IO, fájlírás vagy hálózati hívások végrehajtására vonják be. Azokhoz az alkalmazásokhoz, amelyeknek párhuzamosan kell feldolgozniuk a kezelőiket, például az UI animációk megrajzolásához, lehetőség van külön kódblokkok (isolate) futtatására, amelyek egymástól elkülönítve és az alkalmazás fő szálával párhuzamosan más CPU-magokon futnak. A különböző isolate-blokkokban egyetlen adathalmazon végzett párhuzamos kódvégrehajtás által okozott hibák elkerülése érdekében megtiltják a módosítható objektumok megosztását, és a kezelők közötti kommunikáció üzenetküldési modellel történik.

    A Dart 2.15 új koncepciót javasol — az elszigetelt blokkok csoportjait (isolate groups), amely lehetővé teszi a megosztott hozzáférést a különböző belső adatstruktúrákhoz az egy csoportba tartozó isolate-blokkokban, így jelentősen csökkentheti a költségeket a csoporton belüli kezelők közötti interakció során. Például egy meglévő csoportban történő további isolate-blokk indítása 100-szor gyorsabb, és 10-100-szor kevesebb memóriát igényel, mint egy elkülönített isolate-blokk indításánál, mivel megszünteti a program adatstruktúrájának inicializálásának szükségességét.

    Bár az isolate-blokkokban továbbra is tilos a megosztott hozzáférés a módosítható objektumokhoz, a csoportok közös heap-memóriát használnak, ami jelentősen felgyorsítja az objektumok átvitelét az egyik blokkból a másikba, anélkül, hogy erőforrás-igényes másolási műveleteket kellene végrehajtani. Az új verzióban hozzáférést kaptunk az Isolate.exit() hívásakor a kezelő által végzett munka eredményének átvitelére, így adatokat küldhetünk a szülő isolate-blokkba másolás nélkül. Ezen kívül optimalizálták az üzenetátviteli mechanizmust — a kis- és közepes üzenetek most körülbelül nyolcszor gyorsabban dolgozhatók fel. Az SendPort.send() hívásával átadható objektumok közé beletartoznak bizonyos típusú funkciók, zárványok és a verem nyomozása.

  • A különböző objektumokban lévő egyedi funkciókra mutató mutatók létrehozásának (tear-off) eszközeinél eltörölték a megkötéseket a konstruktorok kódjában történő ilyen mutatók létrehozására, ami hasznos lehet Flutter könyvtár alapú interfészek felépítésekor. Például, a Column widget létrehozásához, amely több Text widgetet tartalmaz, meghívhatjuk a „.map()”-ot, és átadhatjuk a mutatókat a Text.constructor-hoz a Text objektumban: class FruitWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Column( children: [‘Apple’, ‘Orange’].map(Text.new).toList()); } }
  • Bővítették a funkciómutatók használatával kapcsolatos lehetőségeket. Hozzáadták a lehetőséget, hogy generikus (generic) módszereket és funkciómutatókat használjunk nem generikus módszer és mutató létrehozására: T id(T value) => value; var intId = id; // engedélyezve van a 2.15-ös verzióban a „int Function(int) intId = id;” helyett const fo = id; // a funkció mutatója id.
  • A dart:core könyvtárban javították az enumerációk (enum) támogatását, például mostantól minden enum értékből ki lehet nyerni a sztring értéket a „.name” módszer segítségével, lehetőség van az értékek kiválasztására név alapján vagy értékpárok egyeztetésére: enum MyEnum { one, two, three } void main() { print(MyEnum.one.name); // ki fogja írni, hogy „one”. print(MyEnum.values.byName(‘two’) == MyEnum.two); // ki fogja írni, hogy „true”. final map = MyEnum.values.asNameMap(); print(map[‘three’] == MyEnum.three); // „true”. }
  • Megvalósult egy mutatókompressziós technika, amely lehetővé teszi a mutatók kompaktabb reprezentációját 64 bites környezetekben, ha a címzéshez elegendő a 32 bites címzési tér (legfeljebb 4 GB memória használatával). A tesztek azt mutatták, hogy az ilyen optimalizálás körülbelül 10%-kal csökkenti a heap méretét. A Flutter SDK-ban az új mód alapértelmezetten aktiválva van Androidra, és a jövőbeli kiadásban tervezik az iOS-en való aktiválását is.
  • A Dart SDK részét képezik a hibakereső és teljesítmény-elemző eszközök (DevTools), amelyek korábban külön csomagban voltak elérhetők.
  • A «dart pub» parancsba és a pub.dev csomagtárba beépítették az eszközöket, amelyek nyomon követik a véletlenszerű nyilvánosságra hozatalát érzékeny információknak, például a folyamatos integrációs rendszerek és felhőalapú környezetek belső csomagjaiban hagyott hitelesítő adatoknak. Ha hasonló szivárgásokat észlelnek, a «dart pub publish» parancs végrehajtása hibajelzéssel megszakad. Hamis riasztás esetén a vizsgálat megkerülésére is lehetőség van, fehérlista útján.
  • A pub.dev csomagtárba hozzáadták a már kiadott csomagverzió visszahívásának lehetőségét, például ha veszélyes hibákat vagy sebezhetőségeket észlelnek. Korábban az ilyen javításokhoz a következő hibajavító verzió közzététele volt a szokásos gyakorlat, de egyes helyzetekben éppen a kiadás visszavonására és sürgős leállítására van szükség (például ha a javítások még nem készültek el, vagy ha tévedésből a végleges verziót tették közzé tesztverzió helyett). A visszahívás után a csomag nem lesz elérhető a «pub get» és «pub upgrade» parancsokban, és a már telepítetteken a következő «pub get» végrehajtása esetén egy külön figyelmeztetés jelenik meg.
  • Hozzáadták a unicode-karakterek alkalmazásából adódó sebezhetőség (CVE-2021-22567) elleni védelmet, amely megváltoztatja a megjelenítés sorrendjét a kódban.
  • Javították a sebezhetőséget (CVE-2021-22568), amely lehetővé tette, hogy valaki más felhasználónak adja ki magát a pub.dev-en, amikor csomagokat publikáltak egy harmadik fél szerverén, amely oauth2-hozzáférési tokeneket fogad el a pub.dev-től. Például a sebezhetőség felhasználható lehet a belső és vállalati csomagkiszolgálók ellen indított támadásokra. Azokat a fejlesztőket, akik csomagokat kizárólag a pub.dev-en tesznek közzé, nem érinti a probléma.

Egyszerre megjelent a Flutter 2.8 felhasználói felület-keretrendszer jelentős kiadása, amely a React Native alternatívájaként szolgál, és lehetővé teszi, hogy egyetlen kódbázisból alkalmazásokat indítsanak iOS, Android, Windows, macOS és Linux platformokra, valamint böngészőkben futtatható alkalmazásokat hozzanak létre. A Flutter alapját képezi a Google által fejlesztett mikrokernel operációs rendszer, a Fuchsia felhasználói felületének. Megjegyzendő, hogy az utolsó hat hónap során a Flutter 2-re épülő alkalmazások száma a Google Play Áruházban 200 ezerből 375 ezerre nőtt, vagyis majdnem megduplázódott.

A Flutter 2.5-ös verziójának főbb változásai:

A Flutter legújabb kiadásában az indítási sebesség és a memóriafogyasztás optimalizálását emelik ki a mobil eszközökön. Egyszerűsödött az alkalmazások csatlakoztatása a háttérszolgáltatásokhoz, mint például a Firebase és a Google Cloud. Stabilizálták a Google Ads integrációs eszközeit. Jelentősen javították a kamerák és a webpluginek támogatását. Új eszközöket javasoltak a fejlesztés egyszerűsítésére, például hozzáadtak egy Firebase hitelesítési widgetet. Frissült a Flame motor, amely a Flutter használatával fejlesztett 2D játékok számára készült.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster