Na voljo sta programski jezik Dart 2.15 in okvir Flutter 2.8

Google je objavil izdajo programskega jezika Dart 2.15, ki nadaljuje razvoj radikalno prenovljene veje Dart 2, ki se od prvotne različice jezika Dart razlikuje po uporabi močnega statičnega tipkanja (vrste je mogoče sklepati samodejno, tako da določanje tipov ni potrebno, vendar se dinamično tipkanje ne uporablja več in prvotno izračunani tip je dodeljen spremenljivki, nato pa se uporabi strogo preverjanje tipa).

Lastnosti jezika Dart:

  • Poznana sintaksa, ki jo je enostavno naučiti, je naravna za programerje JavaScript, C in Java.
  • Zagotavljanje hitrega zagona in visoke zmogljivosti za vse sodobne spletne brskalnike in različne vrste okolij, od prenosnih naprav do zmogljivih strežnikov.
  • Sposobnost definiranja razredov in vmesnikov, ki omogočajo enkapsulacijo in ponovno uporabo obstoječih metod in podatkov.
  • Določanje vrst olajša odpravljanje napak in prepoznavanje napak, naredi kodo jasnejšo in berljivejšo ter poenostavi njeno spreminjanje in analizo s strani razvijalcev tretjih oseb.
  • Podprti tipi vključujejo: različne tipe zgoščenih vrednosti, nizov in seznamov, čakalne vrste, številske in nizovne tipe, tipe za določanje datuma in časa, regularne izraze (RegExp). Možno je ustvariti lastne vrste.
  • Za organizacijo vzporednega izvajanja je predlagana uporaba razredov z atributom izolacije, katerih koda se v celoti izvaja v izoliranem prostoru v ločenem pomnilniškem območju, ki komunicira z glavnim procesom s pošiljanjem sporočil.
  • Podpora za uporabo knjižnic, ki poenostavijo podporo in razhroščevanje velikih spletnih projektov. Izvedbe funkcij tretjih oseb se lahko vključijo v obliki deljenih knjižnic. Aplikacije lahko razdelimo na dele in razvoj vsakega dela zaupamo ločeni ekipi programerjev.
  • Nabor že pripravljenih orodij za podporo razvoju v jeziku Dart, vključno z implementacijo dinamičnega razvoja in orodij za odpravljanje napak s sprotnim popravkom kode (»uredi in nadaljuj«).
  • Za poenostavitev razvoja v jeziku Dart prihaja s SDK-jem, pubom za upravljanje paketov, analizatorjem statične kode dart_analyzer, nizom knjižnic, integriranim razvojnim okoljem DartPad in vtičniki, ki podpirajo Dart, za IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 in Vim.
  • Dodatni paketi s knjižnicami in pripomočki se distribuirajo prek repozitorija pub, ki ima približno 22 tisoč paketov.

Večje spremembe v izdaji Dart 2.15:

  • Zagotavlja orodja za hitro vzporedno izvajanje nalog z izolacijo upravljavcev. V večjedrnih sistemih izvajalno okolje Dart privzeto izvaja kodo aplikacije na enem jedru CPU in uporablja druga jedra za izvajanje sistemskih nalog, kot so asinhroni V/I, pisanje v datoteke ali omrežni klici. Za aplikacije, ki morajo izvajati svoje upravljalnike vzporedno, na primer za upodabljanje animacije v vmesniku, je mogoče zagnati ločene bloke kode (izolirati), ki so ločeni drug od drugega in se izvajajo na drugih jedrih CPU hkrati z glavno nitjo aplikacije . Za zaščito pred napakami, ki nastanejo pri hkratnem izvajanju kode, ki dela z istim naborom podatkov, je prepovedana skupna raba spremenljivih objektov v različnih izoliranih blokih, za interakcijo med upravljalci pa se uporablja model posredovanja sporočil.

    Dart 2.15 uvaja nov koncept - skupine izoliranih blokov (izolirane skupine), ki vam omogoča organiziranje skupnega dostopa do različnih notranjih podatkovnih struktur v izoliranih blokih, ki so del iste skupine, kar lahko znatno zmanjša stroške pri interakciji med upravljavci v skupini . Na primer, zagon dodatnega izoliranega bloka v obstoječi skupini je 100-krat hitrejši in zahteva 10–100-krat manj pomnilnika kot zagon ločenega izoliranega bloka zaradi odprave potrebe po inicializaciji podatkovnih struktur programa.

    Kljub dejstvu, da izolirani bloki v skupini še vedno prepovedujejo skupni dostop do spremenljivih objektov, skupine uporabljajo skupni pomnilnik kopice, ki lahko znatno pospeši prenos objektov iz enega bloka v drugega brez potrebe po izvajanju operacij kopiranja, ki zahtevajo veliko virov. Nova različica omogoča tudi posredovanje rezultata obdelovalnika pri klicu Isolate.exit() za prenos podatkov v nadrejeni blok izolacije brez operacij kopiranja. Poleg tega je optimiziran mehanizem prenosa sporočil - mala in srednja sporočila se zdaj obdelajo približno 8-krat hitreje. Objekti, ki jih je mogoče posredovati med izolati s klicem SendPort.send(), vključujejo nekatere vrste funkcij, zapiranj in sledi skladov.

  • V orodjih za ustvarjanje kazalcev na posamezne funkcije v drugih objektih (tear-off) so bile odstranjene omejitve za ustvarjanje podobnih kazalcev v kodi konstruktorja, kar je lahko uporabno pri gradnji vmesnikov na osnovi knjižnice Flutter. Na primer, če želite ustvariti gradnik Stolpec, ki vključuje več pripomočkov za besedilo, lahko pokličete ".map()" in posredujete kazalce na konstruktor Text.new predmeta besedilo: class FruitWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Column( children: ['Apple', 'Orange'].map(Text.new).toList()); }}
  • Razširjene so bile možnosti, povezane z uporabo funkcijskih kazalcev. Dodana možnost uporabe generičnih metod in funkcijskih kazalcev za ustvarjanje negenerične metode in kazalca: T id (T vrednost) => vrednost; var intId = id ; // dovoljeno v različici 2.15 namesto "int Function(int) intId = id;" const fo = id; // kazalec na id funkcije. const c1 = fo ;
  • Knjižnica dart:core ima izboljšano podporo za enume, na primer, zdaj lahko iz vsake enum vrednosti izpišete vrednost niza z uporabo metode ".name", izberete vrednosti po imenu ali ujemate pare vrednosti: enum MyEnum { one , dva, tri } void main() { print(MyEnum.one.name); // "ena" bo natisnjena. print(MyEnum.values.byName('two') == MyEnum.two); // "true" bo natisnjen. končni zemljevid = MyEnum.values.asNameMap(); print(map['three'] == MyEnum.three); // "prav". }
  • Implementirana je tehnika stiskanja kazalcev, ki omogoča uporabo bolj kompaktne predstavitve kazalcev v 64-bitnih okoljih, če za naslavljanje zadostuje 32-bitni naslovni prostor (uporablja se ne več kot 4 GB pomnilnika). Testi so pokazali, da taka optimizacija omogoča zmanjšanje velikosti kopice za približno 10 %. V kompletu za razvoj programske opreme Flutter je novi način že privzeto omogočen za Android, v prihodnji izdaji pa naj bi bil omogočen za iOS.
  • Dart SDK vključuje orodja za odpravljanje napak in analizo delovanja (DevTools), ki so bila prej dobavljena v ločenem paketu.
  • Ukazu »dart pub« in repozitorijem paketov pub.dev so bila dodana orodja za sledenje nenamerne objave zaupnih informacij, na primer puščanje poverilnic za sisteme neprekinjene integracije in okolja v oblaku znotraj paketa. Če so zaznana taka puščanja, bo izvedba ukaza »dart pub publish« prekinjena s sporočilom o napaki. Če je bil lažno pozitiven, je mogoče preverjanje zaobiti prek belega seznama.
  • V repozitorij pub.dev je bila dodana možnost preklica že objavljene različice paketa, na primer, če so odkrite nevarne napake ali ranljivosti. Prej je za takšne popravke veljala praksa, da se objavi popravljalna različica, v nekaterih situacijah pa je treba preklicati obstoječo izdajo in nujno ustaviti njeno nadaljnjo distribucijo (na primer, če popravek še ni pripravljen ali če je bila izdana popolna izdaja). objavljen pomotoma namesto testne različice). Po preklicu se paket ne identificira več v ukazih “pub get” in “pub upgrade”, na sistemih, ki so ga že namestili, pa se ob naslednji izvedbi “pub get” izda posebno opozorilo.
  • Dodana zaščita pred ranljivostjo (CVE-2021-22567), ki jo povzroča uporaba znakov unicode v kodi, ki spreminjajo vrstni red prikaza.
  • Odpravljena je ranljivost (CVE-2021-22568), ki vam omogoča, da se lažno predstavljate kot drug uporabnik pub.dev, ko objavljate pakete na strežniku tretje osebe, ki sprejema žetone dostopa pub.dev oauth2. Ranljivost bi lahko na primer uporabili za napad na notranje in korporativne paketne strežnike. Ta težava ne vpliva na razvijalce, ki samo gostijo pakete na pub.dev.

Hkrati je bila predstavljena pomembna izdaja ogrodja uporabniškega vmesnika Flutter 2.8, ki velja za alternativo React Native in omogoča na osnovi enotne kodne baze izdajo aplikacij za iOS, Android, Windows, macOS in platforme Linux, kot tudi ustvarjanje aplikacij za izvajanje v brskalnikih. Lupina po meri za operacijski sistem z mikrojedri Fuchsia, ki jo je razvil Google, je zgrajena na osnovi Flutterja. Opozoriti je treba, da se je v zadnjih šestih mesecih število aplikacij Flutter 2 v trgovini Google Play povečalo z 200 tisoč na 375 tisoč, tj. skoraj dvakrat.

Glavni del kode Flutter je implementiran v jeziku Dart, izvajalni mehanizem za izvajanje aplikacij pa je napisan v C++. Pri razvoju aplikacij lahko poleg Flutterjevega izvornega jezika Dart uporabite vmesnik Dart Foreign Function za klic kode C/C++. Visoka zmogljivost izvajanja je dosežena s prevajanjem aplikacij v izvorno kodo za ciljne platforme. V tem primeru programa po vsaki spremembi ni treba znova prevesti - Dart ponuja način vročega ponovnega nalaganja, ki vam omogoča spreminjanje delujoče aplikacije in takojšnjo oceno rezultata.

Med spremembami v novi izdaji Flutterja je opaziti optimizacijo hitrosti zagona in porabe pomnilnika na mobilnih napravah. Aplikacije je lažje povezati z zalednimi storitvami, kot sta Firebase in Google Cloud. Orodja za integracijo z Google Ads so stabilizirana. Podpora za kamere in spletne vtičnike je bila bistveno izboljšana. Predlagana so bila nova orodja za poenostavitev razvoja, na primer dodan je bil gradnik za preverjanje pristnosti z uporabo Firebase. Motor Flame, zasnovan za razvoj 2D iger z uporabo Flutterja, je bil posodobljen.

Vir: opennet.ru

Dodaj komentar