Gjuhë programimi Dart 2.15 dhe framework Flutter 2.8 janë në dispozicion

Kompania Google publikoi versionin e gjuhës së programimit Dart 2.15, duke vazhduar zhvillimin e një dege të rëndësishme të rishikuar të Dart 2, e cila dallon nga versioni origjinal i gjuhës Dart me përdorimin e tipizimit të fortë statik (tipet mund të inferohen automatikisht, kështu që deklarimi i tipave nuk është obligativ, por tipizimi dinamik nuk përdoret më dhe tipi i inferuar qëndron i ngjitur me variablën dhe më pas zbatohet një kontroll i fortë i tipit).

Veçoritë e gjuhës Dart:

  • SintaksĂ« e njohur dhe e thjeshtĂ« pĂ«r t'u mĂ«suar, e natyrshme pĂ«r programuesit nĂ« JavaScript, C dhe Java.
  • Sigurimi i njĂ« fillimi tĂ« shpejtĂ« dhe performance tĂ« lartĂ« pĂ«r tĂ« gjitha shfletuesit modernĂ« dhe llojet e ndryshme tĂ« mjediseve, nga pajisjet portative deri te ato tĂ« fuqishme. serverĂ«sh.
  • MundĂ«sia pĂ«r tĂ« pĂ«rcaktuar klasa dhe interface, duke lejuar pĂ«rdorimin e inkapsulimit dhe ripĂ«rdorimin e metodave dhe tĂ« dhĂ«nave ekzistuese.
  • ShĂ«nimi i tipave lejon thjeshtimin e procesit tĂ« debugimit dhe identifikimit tĂ« gabimeve, e bĂ«n kodin mĂ« tĂ« qartĂ« dhe mĂ« tĂ« lexueshĂ«m, e lehtĂ«son pĂ«rmirĂ«simin dhe analizĂ«n nga zhvilluesit e jashtĂ«m.
  • Mes tipeve tĂ« mbĂ«shtetur janĂ«: llojet e ndryshme tĂ« hash-eve, masivave dhe listave, radhĂ«t, llojet numerike dhe string, tipet pĂ«r pĂ«rcaktimin e datĂ«s dhe orĂ«s, shprehjet e rregullta (RegExp). Ka mundĂ«sinĂ« e krijimit tĂ« tipave tĂ« vet.
  • PĂ«r organizimin e ekzekutimit paralel, propozohet pĂ«rdorimi i klasave me atributin isolate, kodi i tĂ« cilĂ«ve ekzekutohet plotĂ«sisht nĂ« njĂ« hapĂ«sirĂ« tĂ« izoluar nĂ« njĂ« zonĂ« tĂ« veçantĂ« tĂ« memories, duke bashkĂ«punuar me procesin kryesor nĂ«pĂ«rmjet dĂ«rgimit tĂ« mesazheve.
  • MbĂ«shtetje pĂ«r pĂ«rdorimin e bibliotekave qĂ« thjeshtojnĂ« mbĂ«shtetje dhe debugimin e projekteve tĂ« mĂ«dha web. Implementimet e jashtme tĂ« funksioneve mund tĂ« lidhen si biblioteka tĂ« ndara. Aplikacionet mund tĂ« ndahen nĂ« pjesĂ« dhe t'i besohet zhvillimi i secilĂ«s pjesĂ« njĂ« ekipi tĂ« veçantĂ« programuesish.
  • NjĂ« grup mjetesh tĂ« gatshme pĂ«r mbĂ«shtetje tĂ« zhvillimit nĂ« gjuhĂ«n Dart, duke pĂ«rfshirĂ« implementimin e mjeteve tĂ« zhvillimit dinamik dhe debugimit me korrigjimin e kodit nĂ« flukso («edit-and-continue»).
  • PĂ«r lehtĂ«simin e zhvillimit nĂ« gjuhĂ«n Dart, ofrohet SDK, menaxheri i paketave pub, analizatori statik i kodit dart_analyzer, njĂ« grup bibliotekash, ambienti i integruar i zhvillimit DartPad dhe shtesat me mbĂ«shtetje pĂ«r Dart pĂ«r IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 dhe Vim.
  • Paketa shtesĂ« me biblioteka dhe utilitete shpĂ«rndahen pĂ«rmes depozitĂ«s pub, e cila ka rreth 22 mijĂ« paketa.

Ndryshimet kryesore në lëshimin Dart 2.15:

  • JanĂ« ofruar mjete pĂ«r ekzekutimin e shpejtĂ« paralele tĂ« detyrave me izolimin e pĂ«rpunuesve. NĂ« sistemet me shumĂ« bashkĂ«pronarĂ«, runtime i Dart pĂ«r (default) ekzekuton kodin e aplikacionit nĂ« njĂ« bĂ«rthamĂ« CPU, ndĂ«rsa bĂ«rthama tĂ« tjera angazhohen pĂ«r tĂ« kryer detyra sistemore, tĂ« tilla si hyrje/dalje asinkrone, shkrimi nĂ« skedarĂ« ose realizimi i thirrjeve rrjetit. PĂ«r aplikacionet qĂ« duhet tĂ« ekzekutojnĂ« pĂ«rpunues tĂ« tyre paralelisht, si pĂ«r shembull pĂ«r vizatimin e animacioneve nĂ« ndĂ«rfaqe, Ă«shtĂ« parashikuar mundĂ«sia e nisjes sĂ« blloqeve tĂ« veçanta tĂ« kodit (isolate), tĂ« izoluara nga njĂ«ra-tjetra dhe tĂ« ekzekutuara nĂ« bĂ«rthama tĂ« tjera CPU paralelisht me rrjedhĂ«n kryesore tĂ« aplikacionit. PĂ«r tĂ« mbrojtur nga gabimet qĂ« ndodhin gjatĂ« ekzekutimit tĂ« pĂ«rbashkĂ«t tĂ« kodit qĂ« punon me njĂ« grup tĂ« dhĂ«nash, ndalohet ndarja e objekteve tĂ« modifikueshme nĂ« blloqet e ndryshme isolate, ndĂ«rsa pĂ«r ndĂ«rveprimin midis pĂ«rpunuesve pĂ«rdoret njĂ« model i bazuar nĂ« transmetimin e mesazheve.

    NĂ« Dart 2.15, Ă«shtĂ« propozuar njĂ« koncept i ri — grupet e blloqeve izoluese (isolate groups), duke lejuar organizimin e qasjes sĂ« pĂ«rbashkĂ«t nĂ« struktura tĂ« ndryshme tĂ« dhĂ«nash tĂ« brendshme nĂ« blloqet izoluese qĂ« kontribuojnĂ« nĂ« njĂ« grup, çka lejon njĂ« ulje tĂ« konsiderueshme tĂ« kostove pĂ«r ndĂ«rveprimin e pĂ«rpunuesve nĂ« grup. PĂ«r shembull, nisja e njĂ« blloku tĂ« shtuar isolate nĂ« njĂ« grup ekzistues kryhet 100 herĂ« mĂ« shpejt dhe kĂ«rkon 10-100 herĂ« mĂ« pak memorie, pĂ«r shkak tĂ« eliminimit tĂ« nevojĂ«s pĂ«r inicializimin e strukturave tĂ« dhĂ«nash tĂ« programit.

    MegjithĂ«se ndalimi i ndarjes sĂ« objekteve tĂ« modifikueshme vazhdon tĂ« jetĂ« nĂ« izolatet e grupeve, grupet pĂ«rdorin njĂ« memorie heap tĂ« pĂ«rbashkĂ«t, e cila lejon qĂ« transmetimi i objekteve nga njĂ« bllok nĂ« tjetrin tĂ« bĂ«het dukshĂ«m mĂ« shpejt pa nevojĂ«n e operacioneve tĂ« shpenzueshme tĂ« kopjimit. NĂ« versionin e ri gjithashtu lejohet kalimi i rezultateve tĂ« funksionit gjatĂ« thirrjes sĂ« Isolate.exit() pĂ«r tĂ« kaluar tĂ« dhĂ«na nĂ« bllokun prind tĂ« izolates pa operacione kopjimi. PĂ«rveç kĂ«saj, Ă«shtĂ« optimizuar mekanizmi pĂ«r transmetimin e mesazheve — mesazhet e vogla dhe tĂ« mesme tani procesohen rreth 8 herĂ« mĂ« shpejt. NĂ« grupin e objekteve qĂ« mund tĂ« transmetohen mes bllokesh aislates pĂ«rmes thirrjes SendPort.send(), pĂ«rfshihen disa lloje funksionesh, mbyllje dhe gjurmime tĂ« stack-ut.

  • NĂ« mjete pĂ«r tĂ« krijuar tregues pĂ«r funksione tĂ« veçanta nĂ« objekte tĂ« tjera (tear-off) janĂ« hequr kufizimet pĂ«r krijimin e treguesve tĂ« tillĂ« nĂ« kodin e ndĂ«rtuesve, çka mund tĂ« jetĂ« e dobishme pĂ«r ndĂ«rtimin e ndĂ«rfaqeve mbi bazĂ«n e bibliotekĂ«s Flutter. PĂ«r shembull, pĂ«r tĂ« krijuar njĂ« widget Column, duke pĂ«rfshirĂ« disa widgets Text, mund tĂ« thĂ«rrisni " .map()" dhe tĂ« kaloni treguesit nĂ« ndĂ«rtuesin Text.new tĂ« objektit Text: class FruitWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Column( children: [‘Apple’, ‘Orange’].map(Text.new).toList()); } }
  • JanĂ« zgjeruar mundĂ«sitĂ« lidhur me pĂ«rdorimin e treguesve tĂ« funksioneve. ËshtĂ« shtuar mundĂ«sia pĂ«r tĂ« aplikuar metoda tĂ« pĂ«rgjithshme (generic) dhe tregues funksionesh pĂ«r krijimin e njĂ« metode dhe treguesi jo-gjenerik: T id<T>(T value) => value; var intId = id<int>; // e lejuar nĂ« versionin 2.15 nĂ« vend tĂ« „int Function(int) intId = id;” const fo = id; // tregues pĂ«r funksionin id. const c1 = fo<int>;
  • NĂ« bibliotekĂ«n dart:core Ă«shtĂ« pĂ«rmirĂ«suar mbĂ«shtetje pĂ«r enumeracionet (enum), pĂ«r shembull, tani Ă«shtĂ« e mundur tĂ« nxjerrĂ«sh vlerĂ«n string nga çdo vlerĂ« enum pĂ«rmes metodĂ«s " .name ", tĂ« kryesh filtrimin e vlerave sipas emrit ose tĂ« realizosh pĂ«rputhjen e çiftit tĂ« vlerave: enum MyEnum { one, two, three } void main() { print(MyEnum.one.name); // do tĂ« printohet "one". print(MyEnum.values.byName(‘two’) == MyEnum.two); // do tĂ« printohet "true". final map = MyEnum.values.asNameMap(); print(map[‘three’] == MyEnum.three); // "true". }
  • Eshte implementuar teknika e kompresimit tĂ« treguesve, duke lejuar pĂ«rfaqĂ«simin mĂ« tĂ« kompakt tĂ« treguesve nĂ« mjedise 64-bit, nĂ«se pĂ«r adresimin mjafton hapĂ«sira adresuese 32-bit (nuk pĂ«rdoren mĂ« shumĂ« se 4 GB memorie). Testet tregojnĂ« se njĂ« optimizim i tillĂ« mund tĂ« reduktojĂ« madhĂ«sinĂ« e grumbullit me rreth 10%. NĂ« Flutter SDK, modaliteti i ri Ă«shtĂ« aktivizuar si parazgjedhje pĂ«r Android dhe nĂ« versionin e ardhshĂ«m planifikohet tĂ« aktivizohet edhe pĂ«r iOS.
  • Dart SDK tani pĂ«rfshin mjete pĂ«r debuggim dhe analizĂ«n e performancĂ«s (DevTools), tĂ« cilat mĂ« parĂ« ishin ofruar nĂ« njĂ« paketĂ« tĂ« veçantĂ«.
  • NĂ« komandĂ«n 'dart pub' dhe nĂ« repozitoritĂ« e pakove pub.dev janĂ« shtuar mjete pĂ«r ndjekjen e publikimit tĂ« rastĂ«sishĂ«m tĂ« informacionit konfidencial, pĂ«r shembull, lĂ«nia brenda paketĂ«s e kredencialeve pĂ«r sistemet e integrimit tĂ« vazhdueshĂ«m dhe mjediset cloud. NĂ« rastin e zbulimit tĂ« rrjedhjeve tĂ« tilla, ekzekutimi i komandĂ«s 'dart pub publish' do tĂ« ndalohet me njĂ« mesazh gabimi. NĂ«se ka ndodhur njĂ« falsifikim, ofrohet mundĂ«sia e kalimit tĂ« kontrollit pĂ«rmes njĂ« liste tĂ« bardhĂ«.
  • NĂ« repozitorin pub.dev Ă«shtĂ« shtuar mundĂ«sia pĂ«r tĂ« anuluar njĂ« version tĂ« publikuar tashmĂ« tĂ« paketĂ«s, pĂ«r shembull, nĂ« rastin e zbulimit tĂ« gabimeve tĂ« rrezikshme ose dobĂ«sive. MĂ« parĂ«, pĂ«r kĂ«to korrigjime praktikoheshin publikimi i njĂ« versioni tjetĂ«r tĂ« korrigjuar, por nĂ« disa situata kĂ«rkohet pikĂ«risht anulimi i njĂ« publikimi tĂ« bĂ«rĂ« dhe ndalimi urgjent i shpĂ«rndarjes sĂ« tij tĂ« mĂ«tejshme (p.sh., nĂ«se korrigjimi ende nuk Ă«shtĂ« gati ose nĂ«se gabimisht Ă«shtĂ« publikuar njĂ« version i plotĂ« nĂ« vend tĂ« atij pĂ«r testim). Pas anulimit, paketa nuk identifikohet mĂ« nĂ« komandat 'pub get' dhe 'pub upgrade', dhe nĂ« sistemet qĂ« kanĂ« vendosur atĂ« do tĂ« jepet njĂ« paralajmĂ«rim tĂ« veçantĂ« gjatĂ« ekzekutimit tĂ« ardhshĂ«m tĂ« 'pub get'.
  • Ă«shtĂ« shtuar mbrojtja nga dobĂ«sia (CVE-2021-22567), e cila shkaktohet nga pĂ«rdorimi nĂ« kod tĂ« simboleve unicode qĂ« ndryshojnĂ« renditjen e shfaqjes.
  • Ă«shtĂ« eliminuar dobĂ«sia (CVE-2021-22568) qĂ« lejonte njĂ« pĂ«rdorues tĂ« paraqitet si njĂ« pĂ«rdorues tjetĂ«r nĂ« pub.dev gjatĂ« publikimit tĂ« pakove nĂ« njĂ« server tĂ« tretĂ« qĂ« pranon tokenet oauth2 tĂ« aksesit pub.dev. PĂ«r shembull, dobĂ«sia mund tĂ« pĂ«rdoret pĂ«r sulme nĂ« serverĂ«t e brendshĂ«m dhe korporativĂ« tĂ« pakove. Problemi nuk prek zhvilluesit qĂ« publikojnĂ« pakot vetĂ«m nĂ« pub.dev.

Një lëshim i rëndësishëm i strukturës së ndërtimit të ndërfaqeve të përdoruesit Flutter 2.8 është paraqitur, i cili konsiderohet si një alternativë ndaj React Native dhe lejon që me një bazë kodimi të prodhohen aplikacione për platformat iOS, Android, Windows, macOS dhe Linux, si dhe të krijohen aplikacione për të funksionuar në shfletues. Flutter është bazuar në ndërfaqen e përdoruesit të sistemit operativ mikro-kernel Fuchsia, i zhvilluar nga Google. Vërehet se gjatë gjashtë muajve të fundit, numri i aplikacioneve në Flutter 2 në Google Play Store është rritur nga 200 mijë në 375 mijë, pra, pothuajse dyfish.

Pjesa kryesore e kodit tĂ« Flutter Ă«shtĂ« realizuar nĂ« gjuhĂ«n Dart, ndĂ«rsa motori runtime pĂ«r ekzekutimin e aplikacioneve Ă«shtĂ« shkruar nĂ« C++. GjatĂ« zhvillimit tĂ« aplikacioneve, pĂ«rveç gjuhĂ«s natyrale pĂ«r Flutter, Dart, mund tĂ« pĂ«rdoret ndĂ«rfaqja Dart Foreign Function pĂ«r tĂ« calls kodin nĂ« C/C++. Performanca e lartĂ« e ekzekutimit arrihet falĂ« kompilimit tĂ« aplikacioneve nĂ« kodin machine pĂ«r platformat e synuara. NĂ« tĂ« njĂ«jtĂ«n kohĂ«, programi nuk ka nevojĂ« tĂ« riprogramohet pas çdo ndryshimi — Dart ofron modalitetin e rifreskimit tĂ« nxehtĂ«, i cili lejon tĂ« bĂ«hen ndryshime nĂ« aplikacionin qĂ« Ă«shtĂ« duke punuar dhe menjĂ«herĂ« tĂ« vlerĂ«sohet rezultati.

Ndryshimet nĂ« lĂ«shimin e ri tĂ« Flutter shĂ«nojnĂ« optimizimin e shpejtĂ«sisĂ« sĂ« nisjes dhe konsumit tĂ« memories nĂ« pajisjet mobile. E lehtĂ«son lidhjen e aplikacioneve me shĂ«rbimet backend, siç janĂ« Firebase dhe Google Cloud. Stabilizohen mjetet pĂ«r integrimin me Google Ads. ËshtĂ« pĂ«rmirĂ«suar ndjeshĂ«m mbĂ«shtetja pĂ«r kamerat dhe web-pluginet. JanĂ« ofruar mjete tĂ« reja pĂ«r tĂ« lehtĂ«suar zhvillimin, pĂ«r shembull, Ă«shtĂ« shtuar njĂ« widget pĂ«r autentifikimin duke pĂ«rdorur Firebase. ËshtĂ« pĂ«rditĂ«suar motori Flame, i cili Ă«shtĂ« i destinuar pĂ«r zhvillimin e lojrave 2D me Flutter.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster