Saadaval on programmeerimiskeel Dart 2.15 ja Flutter 2.8 raamistik

Google avaldas programmeerimiskeele Dart 2.15 väljalase, mis jätkab Dart 2 radikaalselt ümberkujundatud haru arendamist, mis erineb Dart keele algversioonist tugeva staatilise tippimise kasutamise poolest (tüüpe saab järeldada automaatselt, nii et tüüpide määramine pole vajalik, kuid dünaamilist tippimist enam ei kasutata ja algselt arvutatakse tüüp muutujale ja seejärel rakendatakse ranget tüübikontrolli).

Dart keele omadused:

  • Tuttav ja hõlpsasti õpitav süntaks, mis on loomulik JavaScripti, C ja Java programmeerijatele.
  • Kiire käivitamise ja suure jõudluse tagamine kõikidele kaasaegsetele veebibrauseritele ja erinevat tüüpi keskkondadele, alates kaasaskantavatest seadmetest kuni võimsate serveriteni.
  • Võimalus määratleda klasse ja liideseid, mis võimaldavad olemasolevate meetodite ja andmete kapseldamist ja taaskasutamist.
  • Tüüpide määramine muudab silumise ja vigade tuvastamise lihtsamaks, muudab koodi selgemaks ja loetavamaks ning lihtsustab selle muutmist ja analüüsi kolmandate osapoolte arendajate poolt.
  • Toetatud tüübid hõlmavad järgmist: erinevat tüüpi räsid, massiivid ja loendid, järjekorrad, numbri- ja stringitüübid, kuupäeva ja kellaaja määramise tüübid, regulaaravaldised (RegExp). Võimalik luua oma tüüpe.
  • Paralleelse täitmise korraldamiseks tehakse ettepanek kasutada isolaatribuudiga klasse, mille kood täidetakse täielikult isoleeritud ruumis eraldi mälualal, suheldes põhiprotsessiga sõnumite saatmise teel.
  • Suurte veebiprojektide toetamist ja silumist lihtsustavate teekide kasutamise tugi. Funktsioonide kolmanda osapoole juurutused saab kaasata jagatud teekide kujul. Rakendusi saab jagada osadeks ja usaldada iga osa arendamise eraldi programmeerijate meeskonnale.
  • Valmis tööriistade komplekt Dart-keele arenduse toetamiseks, sealhulgas dünaamiliste arendus- ja silumistööriistade rakendamine koos koodiparandusega (“redigeeri ja jätka”).
  • Dart-keele arendamise lihtsustamiseks on sellega kaasas SDK, paketihalduri pubi, staatiline koodianalüsaator dart_analyzer, teekide komplekt, integreeritud arenduskeskkond DartPad ja Dart-toega pistikprogrammid IntelliJ IDEA, WebStormi, Emacsi, Sublime Text jaoks. 2 ja Vim.
  • Täiendavaid pakette koos teekide ja utiliitidega levitatakse pubihoidla kaudu, milles on umbes 22 tuhat paketti.

Peamised muudatused Dart 2.15 versioonis:

  • Pakub tööriistu ülesannete kiireks paralleelseks täitmiseks koos töötlejate isoleerimisega. Mitmetuumalistes süsteemides käitab Darti käitusaeg vaikimisi rakenduse koodi ühes CPU tuumas ja kasutab teisi tuumasid süsteemiülesannete täitmiseks, nagu asünkroonne sisend/väljund, failidesse kirjutamine või võrgukõnede tegemine. Rakenduste puhul, mis peavad oma töötlejaid paralleelselt käivitama, näiteks liideses animatsiooni renderdamiseks, on võimalik käivitada eraldi koodiplokid (isoleerida), mis on üksteisest isoleeritud ja käivitatakse teistel protsessori tuumadel samaaegselt peamise rakenduse lõimega. . Et kaitsta vigade eest, mis tekivad sama andmekogumiga töötava koodi samaaegsel täitmisel, on erinevates isolatsiooniplokkides muudetavate objektide jagamine keelatud ning töötlejate vaheliseks suhtluseks kasutatakse sõnumi edastamise mudelit.

    Dart 2.15 tutvustab uut kontseptsiooni - isoleeritud plokkide rühmad (isolatsioonirühmad), mis võimaldab korraldada jagatud juurdepääsu erinevatele sisemistele andmestruktuuridele samasse rühma kuuluvates isolatsiooniplokkides, mis võib grupis käitlejate vahel suhtlemisel oluliselt vähendada üldkulusid. . Näiteks täiendava isolatsiooniploki käivitamine olemasolevas rühmas on 100 korda kiirem ja nõuab 10-100 korda vähem mälu kui eraldi isolatsiooniploki käivitamine, kuna puudub vajadus programmi andmestruktuuride lähtestamise järele.

    Vaatamata asjaolule, et grupis olevad isoleerimisplokid keelavad endiselt jagatud juurdepääsu muutuvatele objektidele, kasutavad rühmad ühismälu, mis võib oluliselt kiirendada objektide ülekandmist ühest plokist teise, ilma et oleks vaja teha ressursimahukaid kopeerimisoperatsioone. Uus versioon võimaldab edastada ka töötleja tulemust Isolate.exit() kutsumisel, et andmeid kopeerimistoiminguteta isoleerida lähteplokile üle kanda. Lisaks on optimeeritud sõnumiedastusmehhanismi – väikeseid ja keskmise suurusega sõnumeid töödeldakse nüüd ligikaudu 8 korda kiiremini. Objektid, mida saab SendPort.send() kutse abil isolaatide vahel edastada, hõlmavad teatud tüüpi funktsioone, sulgemisi ja virna jälgi.

  • Teiste objektide üksikute funktsioonide osutajate loomise tööriistades (rebimine) on eemaldatud konstruktorikoodis sarnaste osutite loomise piirangud, mis võivad olla kasulikud Flutteri teegil põhinevate liideste ehitamisel. Näiteks mitut tekstividinat sisaldava veeruvidina loomiseks võite kutsuda ".map()" ja suunata viiteid objekti Text.new konstruktorile: class FruitWidget extends StatelessWidget { @override Widget build(BuildContext kontekstis) { return Column(lapsed: ['Apple', 'Orange'].map(Tekst.uus).toList()); } }
  • Laiendatud on funktsiooniosutite kasutamisega kaasnevaid võimalusi. Lisatud on võimalus kasutada üldisi meetodeid ja funktsiooninäitajaid, et luua mitteüldine meetod ja osuti: T id (T väärtus) => väärtus; var intId = id ; // lubatud versioonis 2.15 asemel "int Function(int) intId = id;" const fo = id; // osuti funktsiooni ID-le. const c1 = fo ;
  • Dart:core teek on täiustanud enumite tuge, näiteks saate nüüd igast loendi väärtusest väljastada stringi väärtuse, kasutades meetodit ".name", valida väärtusi nime järgi või sobitada väärtuste paare: enum MyEnum { one , kaks, kolm } void main() { print(MyEnum.one.name); // "üks" trükitakse. print(MyEnum.values.byName('two') == MinuEnum.kaks); // "tõene" trükitakse. lõplik kaart = MyEnum.values.asNameMap(); print(kaart['kolm'] == MinuEnum.kolm); // "tõsi". }
  • Rakendatud on osuti tihendamise tehnika, mis võimaldab 64-bitistes keskkondades kasutada osutite kompaktsemat esitust, kui adresseerimiseks piisab 32-bitisest aadressiruumist (mälu ei kasutata rohkem kui 4 GB). Testid on näidanud, et selline optimeerimine võimaldab vähendada hunniku suurust ligikaudu 10%. Flutteri SDK-s on uus režiim Androidi jaoks juba vaikimisi lubatud ja plaanitakse tulevases versioonis lubada ka iOS-i jaoks.
  • Dart SDK sisaldab tööriistu silumiseks ja jõudlusanalüüsiks (DevTools), mis olid varem eraldi paketis.
  • Käsule „dart pub” ja paketi pub.dev hoidlatele on lisatud tööriistu, et jälgida konfidentsiaalse teabe juhuslikku avaldamist, jättes näiteks pideva integratsioonisüsteemide ja pilvekeskkondade mandaadid paketti sisse. Kui sellised lekked avastatakse, katkestatakse käsu “dart pub publish” täitmine veateate saatel. Kui oli valepositiivne tulemus, on võimalik kontrollist valge nimekirja kaudu mööda minna.
  • Pub.dev hoidlasse on lisatud võimalus tühistada paketi juba avaldatud versioon, näiteks ohtlike vigade või haavatavuste avastamisel. Varem oli selliste paranduste puhul tavaks avaldada parandusversioon, kuid mõnes olukorras on vaja olemasolev väljalase tühistada ja selle edasine levitamine kiiresti peatada (näiteks kui parandus pole veel valmis või kui ilmus täielik versioon avaldatud kogemata testversiooni asemel). Pärast tühistamist ei tuvastata paketti enam käskudes "pub get" ja "pub upgrade" ning süsteemides, mis on selle juba installinud, antakse järgmisel "pub get" käivitamisel erihoiatus.
  • Lisatud kaitse haavatavuse (CVE-2021-22567) eest, mis on põhjustatud kuvamisjärjekorda muutvate unicode-märkide kasutamisest koodis.
  • Parandatud haavatavus (CVE-2021-22568), mis võimaldab teil esineda teise pub.dev kasutajana, kui avaldate pakette kolmanda osapoole serveris, mis aktsepteerib pub.dev oauth2 juurdepääsulubasid. Näiteks võib haavatavust kasutada sisemiste ja ettevõtte pakettserverite ründamiseks. See probleem ei puuduta arendajaid, kes hostivad ainult pakette saidil pub.dev.

Samal ajal esitleti kasutajaliidese raamistiku Flutter 2.8 olulist väljalaset, mida peetakse React Native'i alternatiiviks ja mis võimaldab ühe koodibaasi alusel väljastada rakendusi iOS, Android, Windows, macOS ja Linuxi platvormidele, samuti luua brauserites töötamiseks rakendusi. Google'i poolt välja töötatud Fuchsia mikrokerneli operatsioonisüsteemi kohandatud kest on üles ehitatud Flutteri baasil. Märgitakse, et viimase poole aastaga on Google Play poes Flutter 2 rakenduste arv kasvanud 200 tuhandelt 375 tuhandeni, s.o. peaaegu kaks korda.

Põhiosa Flutteri koodist on realiseeritud Dart keeles ja rakenduste käivitamise mootor on kirjutatud C++ keeles. Rakenduste arendamisel saate C/C++ koodi kutsumiseks kasutada lisaks Flutteri emakeelsele Dart-keelele Dart Foreign Functioni liidest. Kõrge täitmise jõudlus saavutatakse rakenduste kompileerimisega sihtplatvormide natiivseks koodiks. Sellisel juhul ei pea programmi pärast iga muudatust uuesti kompileerima – Dart pakub kuuma taaslaadimisrežiimi, mis võimaldab teha muudatusi töötavas rakenduses ja koheselt hinnata tulemust.

Flutteri uue versiooni muudatuste hulgas märgitakse mobiilseadmete käivituskiiruse ja mälutarbimise optimeerimist. Rakendusi on lihtsam ühendada taustateenustega, nagu Firebase ja Google Cloud. Google Adsiga integreerimise tööriistad on stabiliseeritud. Kaamerate ja veebipluginate tugi on oluliselt paranenud. Arenduse lihtsustamiseks on välja pakutud uusi tööriistu, näiteks Firebase'i abil autentimiseks on lisatud vidin. Uuendatud on Flame'i mootorit, mis on mõeldud 2D-mängude arendamiseks Flutteri abil.

Allikas: opennet.ru

Lisa kommentaar