Saadaval on programmeerimiskeel Dart 2.15 ja raamistiku Flutter 2.8

Google tegi avalikuks Dart 2.15 programmeerimiskeele versiooni, jĂ€tkates Dart 2 oluliselt ĂŒmberkujundatud haru arendamist, mis erineb originaalsest Dart keele versioonist kiire staatilise tĂŒĂŒbistatistika rakendamise poolest (tĂŒĂŒpe saab automaatselt tuletada, seetĂ”ttu ei ole tĂŒĂŒpide mÀÀramine kohustuslik, Kuid dĂŒnaamilist tĂŒĂŒbistatistikast ei kasutata enam, ja algselt tuletatud tĂŒĂŒp kinnitatakse muutuja kĂŒlge ning seda kontrollitakse rangelt hiljem).

Darti keele omadused:

  • HarjumuspĂ€rane ja lihtne Ă”ppida sĂŒntaks, mis on loomulik JavaScripti, C ja Java programmeerijatele.
  • Kiire kĂ€ivitamise ja kĂ”rge jĂ”udluse tagamine kĂ”igis kaasaegsetes veebibrauserites ja erinevates keskkondades, alates kaasaskantavatest seadmetest kuni vĂ”imsate. serverid.
  • Klasside ja liideste mÀÀratlemise vĂ”imalus, mis vĂ”imaldab kasutada kapseldamist ja olemasolevaid meetodeid ning andmete taaskasutamist.
  • TĂŒĂŒpide mÀÀramine lihtsustab tĂ”rkeotsingut ja vigade tuvastamist, muudab koodi selgemaks ja arusaadavamaks, lihtsustab selle tĂ€iustamist ja kolmandate osapoolte arendajate analĂŒĂŒsi.
  • Toetatavate tĂŒĂŒpide hulka kuuluvad erinevad hash'id, massiivide ja nimekirjade tĂŒĂŒbid, jĂ€rjekorrad, numbrilised ja stringi tĂŒĂŒbid, kuupĂ€eva jaotuse ning aja mÀÀramiseks mĂ”eldud tĂŒĂŒbid, regulaaravaldised (RegExp). On vĂ”imalik luua oma tĂŒĂŒpe.
  • Paralleelse tĂ€itmise korraldamiseks soovitatakse kasutada klasse, mille atribuut on isolate, mille kood tĂ€idetakse tĂ€ielikult isoleeritud ruumis, eraldi mĂ€lu piirkonnas, suheldes peaprotsessiga sĂ”numite saatmise kaudu.
  • Raamatukogude toetamine, mis lihtsustab suurte veebiprojektide hooldust ja tĂ”rkeotsingut. Kolmandate osapoolte rakendused saab lisada jagatud raamatukogudena. Rakendusi saab jagada osadeks ja igale osale vĂ”ib mÀÀrata eraldi programmeerijate meeskonna arendamise.
  • Valmiste tööriistade komplekt Darti keeles arenduse toetamiseks, sealhulgas dĂŒnaamilise arenduse ja tĂ”rkeotsingu vahendite rakendamine jooksva koodi parandamisega («edit-and-continue»).
  • Darti keele arendamise lihtsustamiseks on saadaval SDK, pakihaldur pub, staatiline koodianalĂŒsaator dart_analyzer, raamatukogude komplekt, integreeritud arenduskeskkond DartPad ja Darti toetavad pistikprogrammid IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 ja Vim.
  • Lisa ja utiliidid sisaldavad tĂ€iendavad paketid, mis jagatakse pub-repos, kus on ligikaudu 22 000 paketti.

Dart 2.15 versiooni peamised muudatused:

  • Esitatud on vahendid ĂŒlesannete kiireks paralleelseks tĂ€itmiseks eraldatud töötlusprotsessoritega. Mitme sĂŒdamikuga sĂŒsteemides Dart runtime kĂ€ivitab vaikimisi rakenduse koodi ĂŒhel CPU sĂŒdamikul, samas kui teised sĂŒdamikud tĂ€idavad sĂŒsteemiĂŒlesandeid, nagu asĂŒnkroonne sisend/vĂ€ljund, failide kirjutamine vĂ”i vĂ”rgukutsed. Rakendustel, mis peavad oma töötlejat paralleelselt tĂ€itma, nĂ€iteks liidese animatsiooni joonistamise ajal, on vĂ”imalus kĂ€ivitada eraldi koodiblokke (isolate), mis on ĂŒksteisest eraldatud ja mille tĂ€itmine toimub teistel CPU sĂŒdamikel samaaegselt rakenduse pĂ”hivooga. Vigade eest kaitsmiseks, mis tekivad sama andmehulgaga töötava koodi samaaegsel tĂ€itmisel erinevates isolate-blokides, on muutuvate objektide jagamine erinevates isolate-blokides keelatud, ning töötlejate vaheliseks suhtluseks kasutatakse sĂ”numite edastamise mudelit.

    Dart 2.15 toob vĂ€lja uue kontseptsiooni — isoleeritud plokkide rĂŒhmad (isolate groups), mis vĂ”imaldab korraldada ĂŒhiskasutust erinevatele sisemistele andmestruktuuridele rĂŒhma kuuluvates isolate-blokides, mis vĂ€hendab mĂ€rkimisvÀÀrselt töötlejate vahelise suhtluse ĂŒle pea. NĂ€iteks kĂ€ivitamine tĂ€iendavast isolate-blokist olemasolevas grupis on 100 korda kiirem ja vajab 10-100 korda vĂ€hem mĂ€lu kui eraldiseisva isolate-bloki kĂ€ivitamine, kuna vĂ€heneb programmi andmestruktuuride algatamise vajadus.

    Kuigi isolate-blokkides grupis on endiselt keelatud jagada muudetavaid objekte, kasutatakse gruppides ĂŒhiseid heap-mĂ€lu, mis vĂ”imaldab oluliselt kiirendada objektide edastamist ĂŒhest blokist teise ilma ressursimahukate kopeerimisoperatsioonide vajaduseta. Uues versioonis on samuti lubatud edastada kĂ€sitleja töö tulemused, kui kutsuda Isolate.exit(), et edastada andmeid vanemasse isolate-blokki ilma kopeerimisoperatsioonideta. Lisaks on optimeeritud sĂ”numite edastamise mehhanismi — vĂ€ikesed ja keskmised sĂ”numid töödeldakse nĂŒĂŒd ligikaudu 8 korda kiiremini. Isolate-blokkide vahel edastatavate objektide hulka, kasutades SendPort.send() kutsumist, on lisatud mĂ”ned funktsioonide tĂŒĂŒbid, sulgud ja virna jĂ€lgimine.

  • Funktsioonide ĂŒksikute objektide viitamiseks (tear-off) konstruktori koodis loobumine piirangutest vĂ”imaldab selliste viidete loomist, mis vĂ”ib olla kasulik Flutteri teegi pĂ”hjal liideste loomisel. NĂ€iteks, et luua Column-widget, mis sisaldab mitmeid Text-widget'e, saate kutsuda „.map()” ja edastada viidatud Text.new konstruktorile: class FruitWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Column( children: [‘Apple’, ‘Orange’].map(Text.new).toList()); }}
  • Funktsiooniviidete kasutamise vĂ”imalusi on laiendatud. Lisatud vĂ”imalus rakendada ĂŒldiseid (generic) meetodeid ja funktsiooniviiteid mitte-generic meetodi ja viidendi loomiseks: T id(T value) => value; var intId = id; // lubatud versioonis 2.15, mitte „int Function(int) intId = id;” const fo = id; // funktsiooniviide id. const c1 = fo;
  • Raamatukogus dart:core on paranenud enumide (loendite) tugi, nĂ€iteks nĂŒĂŒd on vĂ”imalik iga enum'i vÀÀrtuse stringi vÀÀrtust vĂ€lja printida meetodi „.name” abil, teha vÀÀrtuste valikut nime alusel vĂ”i teostada vÀÀrtuste paaride vastavust: enum MyEnum { one, two, three } void main() { print(MyEnum.one.name); // vĂ€ljastatakse „one”. print(MyEnum.values.byName(‘two’) == MyEnum.two); // vĂ€ljastatakse „true”. final map = MyEnum.values.asNameMap(); print(map[‘three’] == MyEnum.three); // „true”. }
  • Tehnika nĂ€idikute tihendamiseks on rakendatud, vĂ”imaldades 64-bitistes keskkondades kasutada kompaktsemat nĂ€idikute esitamist, kui 32-bitine aadressiruumi on piisav (kasutatakse mitte rohkem kui 4 GB mĂ€lu). Testid on nĂ€idanud, et selline optimeerimine vĂ”imaldab vĂ€hendada kuhja suurust ligikaudu 10%. Flutter SDK-s on vaikimisi uus reĆŸiim juba aktiveeritud Androidi jaoks ja jĂ€rgmises vĂ€ljaandes on plaanis see sisse lĂŒlitada iOS-i jaoks.
  • Dart SDK-s on lisatud tööriistad tĂ”rkeotsimiseks ja jĂ”udluse analĂŒĂŒsimiseks (DevTools), mis varem olid saadaval eraldi paketina.
  • Dart pub meeskonda ja pakettide repoteid pub.dev on lisatud tööriistad juhuslike konfidentsiaalse teabe avaldamiste jĂ€lgimiseks, nĂ€iteks pideva integratsiooni sĂŒsteemide ja pilvesituatsioonide jaoks mĂ”eldud sisselogimisandmete jĂ€tmine paketti. Kui sarnased lekked tuvastatakse, katkestatakse kĂ€sk 'dart pub publish' veateatega. ValehĂ€irete korral on olemas vĂ”imalus kontrolli ĂŒmbersĂ”iduks valge nimekirja kaudu.
  • pub.dev repoteisse on lisatud vĂ”imalus juba avaldatud paketi versiooni tagasivĂ”tmiseks, nĂ€iteks ohtlike vigade vĂ”i haavatavuste avastamise korral. Varem praktiseeriti sarnaste paranduste tegemiseks korrigeerivat versiooni jĂ€rgimist, kuid mĂ”nel juhul on vajalik juba toimunud vĂ€ljaande tĂŒhistamine ja selle edasise leviku kiire katkestamine (nĂ€iteks kui parandused ei ole veel valmis vĂ”i kui tĂ€isversioon avaldati ekslikult testversiooni asemel). PĂ€rast tagasivĂ”tmist lakka pakett olemast saadaval kĂ€skudes 'pub get' ja 'pub upgrade', ning juba installitud sĂŒsteemides kuvatakse jĂ€rgmise 'pub get' kĂ€ivitamisel eriline hoiatusteade.
  • Lisatud kaitse haavatavuse (CVE-2021-22567) vastu, mis on pĂ”hjustatud unicode-mĂ€rkide kasutamisest koodis, mis muudavad kuvamist.
  • Eemaldatud haavatavus (CVE-2021-22568), mis vĂ”imaldab end pub.dev'ile pakettide avaldamisel teiste kasutajatena esitada, kui kasutada kolmanda osapoole serverit, mis aktsepteerib pub.dev oauth2 juurdepÀÀsutokenite puhul. NĂ€iteks vĂ”ib haavatavust kasutada rĂŒnnakuks sisemistele ja ettevĂ”tte pakettide serveritele. Arendajad, kes avaldavad pakette ainult pub.dev-is, ei puutu probleemi.

Samal ajal esitleti olulist kasutajaliidese raamistikku Flutter 2.8, mida peetakse alternatiiviks React Native'ile ja mis vĂ”imaldab ĂŒhe koodibaasi pĂ”hjal luua rakendusi iOS, Android, Windows, macOS ja Linux platvormidele, samuti rakendusi, mis kĂ€ivituvad brauserites. Flutteri pĂ”hjal on loodud Google'is arendatava mikrokerne operatsioonisĂŒsteemi Fuchsia kasutajaliides. MĂ€rgitakse, et viimase kuue kuu jooksul on Flutter 2 rakenduste arv Google Play poes kasvanud 200 000-lt 375 000-ni, st peaaegu kahekordistunud.

Enamik Flutteri koodist on kirjutatud keeles Dart, samas kui rakenduste tĂ€itmiseks mĂ”eldud runtime-mootor on kirjutatud C++. Rakenduste arendamisel, peale Flutteri pĂ”hikeele Dart, on vĂ”imalik kasutada Dart Foreign Function liidest C/C++ koodi kutsumiseks. KĂ”rge jĂ”udlus saavutatakse rakenduste kompileerimise kaudu sihtplatvormidele masinkoodiks. Selle kĂ€igus ei pea programmi iga muudatuse jĂ€rel uuesti kompileerima — Dart pakub kuumlaadimist, mis vĂ”imaldab muuta töötavat rakendust ja kohe tulemusi hinnata.

Uue Flutteri versiooni muudatustest on vĂ€lja toodud kĂ€ivitamise ja mĂ€lutarbimise optimeerimine mobiilseadmetes. Rakenduste ĂŒhendamine tagarakkude teenustega, nagu Firebase ja Google Cloud, on lihtsustatud. Google Adsi integreerimise tööriistad on stabiilSEM; suurenenud. Oluliselt on paranenud kaamerate ja veebipluginite tugi. Pakutakse uusi vahendeid arendamise lihtsustamiseks, nĂ€iteks on lisatud Firebase'i autentimise vidin. Uuendatud on mĂ€ngumootor Flame, mis on mĂ”eldud 2D-mĂ€ngude arendamiseks Flutteri abil.

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster