Gjuhët e programimit Dart 2.15 dhe framework-u Flutter 2.8 janë të disponueshme

Kompania Google publikoi një version të ri të gjuhës programimit Dart 2.15, duke vazhduar zhvillimin e degës së rigjeneruar radikalisht të Dart 2, e cila ndryshon nga versioni origjinal i gjuhës Dart duke aplikuar tipizim të fortë statik (tipet mund të nxirren automatikisht, prandaj përcaktimi i tipeve nuk është i detyrueshëm, por tipizimi dinamik nuk përdoret më dhe tipi i nxjerrë fillimisht mbahet prej variablit dhe përdoret më pas një kontroll i rreptë i tipit).

Karakteristikat e gjuhës Dart:

  • SintaksĂ« e njohur dhe e thjeshtĂ« pĂ«r t'u mĂ«suar, natyrale pĂ«r programuesit nĂ« JavaScript, C dhe Java.
  • Sigurimi i nisjes sĂ« shpejtĂ« dhe performancĂ«s sĂ« lartĂ« pĂ«r tĂ« gjithĂ« shfletuesit modernĂ« dhe llojet e ndryshme tĂ« ambientit, nga pajisjet portative deri te ato tĂ« fuqishme. servera.
  • MundĂ«sia pĂ«r tĂ« pĂ«rcaktuar klasa dhe interface, duke lejuar pĂ«rdorimin e kapsulimit dhe rikthimin e metodave dhe tĂ« dhĂ«nave ekzistuese.
  • PĂ«rcaktimi i tipeve ndihmon nĂ« lehtĂ«simin e debugging-ut dhe identifikimin e gabimeve, e bĂ«n kodin mĂ« tĂ« qartĂ« dhe mĂ« tĂ« lexueshĂ«m, e lehtĂ«son pĂ«rmirĂ«simin dhe analizĂ«n nga zhvillues tĂ« tjerĂ«.
  • Mes tipeve tĂ« mbĂ«shtetura janĂ«: lloje tĂ« ndryshme hash-e, arrays dhe lista, radhĂ«, tipet numerike dhe string, tipet pĂ«r pĂ«rcaktimin e datĂ«s dhe orĂ«s, shprehjet e rregullta (RegExp). Ka mundĂ«si pĂ«r tĂ« krijuar llojet e tua.
  • PĂ«r organizimin e ekzekutimit paralel, propozohet pĂ«rdorimi i klasave me atributin isolate, ku kodi ekzekutohet plotĂ«sisht nĂ« njĂ« hapĂ«sirĂ« tĂ« izoluar nĂ« njĂ« zonĂ« tĂ« veçantĂ« memorie, duke ndĂ«rvepruar me procesin kryesor pĂ«rmes dĂ«rgimit tĂ« mesazheve.
  • MbĂ«shtetje pĂ«r pĂ«rdorimin e biblioteka qĂ« lehtĂ«sojnĂ« mbĂ«shtetje dhe debugging tĂ« projekteve tĂ« mĂ«dha web. Zhvillime tĂ« jashtme funksionesh mund tĂ« lidhen si biblioteka tĂ« ndara. Aplikacionet mund tĂ« copĂ«tohen nĂ« pjesĂ« dhe caktimi i zhvillimit tĂ« çdo pjese mund t'i jepet njĂ« ekipi tĂ« veçantĂ« programuesish.
  • NjĂ« grup mjetesh tĂ« gatshme pĂ«r mbĂ«shtetje zhvillimi nĂ« gjuhĂ«n Dart, duke pĂ«rfshirĂ« implementimin e mjeteve pĂ«r zhvillim dinamik dhe debugging me korrigjimin e kodit nĂ« fluks (‘edit-and-continue’).
  • PĂ«r lehtĂ«simin e zhvillimit nĂ« gjuhĂ«n Dart vjen njĂ« SDK, njĂ« menaxher paketash pub, njĂ« analizues statik kodi dart_analyzer, njĂ« grup bibliotekash, mjedisi i integruar i zhvillimit DartPad dhe plugin-e qĂ« mbĂ«shtesin Dart pĂ«r IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 dhe Vim.
  • Paketa shtesĂ« me biblioteka dhe mjete shpĂ«rndahen pĂ«rmes depozitĂ«s pub, e cila ka rreth 22 mijĂ« paketa.

Ndryshimet kryesore në lëshimin e Dart 2.15:

  • JanĂ« ofruar mjete pĂ«r ekzekutimin e shpejtĂ« tĂ« detyrave me izolim tĂ« trajtuesve. NĂ« sistemet me shumĂ« bĂ«rthama, runtime i Dart nĂ« parazgjedhje ekzekuton kodin e aplikacionit nĂ« njĂ« bĂ«rthamĂ« CPU, ndĂ«rsa bĂ«rthamat e tjera angazhohen pĂ«r tĂ« pĂ«rfunduar detyra sistemore si hyrje/dalje asinkrone, shkrimi nĂ« skedarĂ« apo thirrje nĂ« rrjet. PĂ«r aplikacionet qĂ« nevojiten tĂ« ekzekutojnĂ« pĂ«rpunuesit e tyre nĂ« paralel, pĂ«r shembull, pĂ«r vizatimin e animacioneve nĂ« ndĂ«rfaqe, Ă«shtĂ« e mundur tĂ« iniciohet bllok i veçantĂ« kodi (isolate), tĂ« izoluara nga njĂ«ra-tjetra dhe qĂ« ekzekutohen nĂ« bĂ«rthama tĂ« tjera CPU, nĂ« mĂ«nyrĂ« tĂ« njĂ«kohshme me rrjedhĂ«n kryesore tĂ« aplikacionit. PĂ«r tĂ« mbrojtur nga gabimet qĂ« ndodhin nga ekzekutimi nĂ« mĂ«nyrĂ« njĂ«kohĂ«she tĂ« kodit qĂ« punon me njĂ« grup tĂ« dhĂ«nash, nĂ« blloqet isolate ndalohet ndarja e objekteve tĂ« ndryshueshme, dhe pĂ«r ndĂ«rveprimin mes pĂ«rpunuesve zbatohet njĂ« model i bazuar nĂ« dĂ«rgimin e mesazheve.

    NĂ« Dart 2.15 Ă«shtĂ« propozuar njĂ« koncept i ri — grupe tĂ« blloqeve tĂ« izoluara (isolate groups), duke lejuar organizimin e aksesit tĂ« pĂ«rbashkĂ«t nĂ« strukturat e ndryshme tĂ« dhĂ«nash brenda blloqeve isolate qĂ« pĂ«rbĂ«jnĂ« njĂ« grup, çka ndihmon nĂ« uljen e kostove tĂ« ndĂ«rveprimit tĂ« pĂ«rpunuesve nĂ« grup. PĂ«r shembull, iniciimi i njĂ« blloku tĂ« shtuar isolate nĂ« njĂ« grup ekzistues Ă«shtĂ« 100 herĂ« mĂ« i shpejtĂ« dhe kĂ«rkon 10-100 herĂ« mĂ« pak memorie se sa iniciimi i njĂ« blloku isolate tĂ« izoluar, pĂ«r shkak tĂ« pĂ«rjashtimit tĂ« nevojĂ«s pĂ«r inicializimin e strukturave tĂ« dhĂ«nash tĂ« programit.

    MegjithĂ«se ndarjet nĂ« grupe ende ndalojnĂ« ndarjen e objekteve tĂ« ndryshueshme, grupet pĂ«rdorin njĂ« memorie heap tĂ« pĂ«rbashkĂ«t, e cila lejon pĂ«rshpejtimin e ndarjes sĂ« objekteve nga njĂ« ndarje nĂ« tjetrĂ«n pa nevojĂ«n pĂ«r operacione tĂ« kĂ«rkuar, tĂ« tilla si kopjimi. NĂ« versionin e ri gjithashtu lejohet kalimi i rezultatit tĂ« punĂ«s sĂ« menaxherit kur thirret Isolate.exit() pĂ«r tĂ« kaluar tĂ« dhĂ«na nĂ« ndarjen prind pa operacione kopjimi. PĂ«r mĂ« tepĂ«r, Ă«shtĂ« optimizuar mekanizmi i kalimit tĂ« mesazheve — mesazhet e vogla dhe tĂ« mesme tani pĂ«rpunohen rreth 8 herĂ« mĂ« shpejt. NdĂ«r objektet qĂ« mund tĂ« kalohen midis ndarjeve pĂ«rmes thirrjes SendPort.send(), janĂ« pĂ«rfshirĂ« disa lloje funksionesh, mbyllje dhe gjurmimi i grumbujve.

  • NĂ« mjetet pĂ«r krijimin e referencave nĂ« funksione tĂ« veçanta nĂ« objekte tĂ« tjera (tear-off) janĂ« hequr kufizimet pĂ«r krijimin e referencave tĂ« tilla nĂ« kodin e konstruktorĂ«ve, qĂ« mund tĂ« jetĂ« e dobishme kur ndĂ«rtojmĂ« ndĂ«rfaqe duke pĂ«rdorur bibliotekĂ«n Flutter. PĂ«r shembull, pĂ«r tĂ« krijuar njĂ« widget Column, qĂ« pĂ«rfshin disa widget Text, mund tĂ« thirret “.map()” dhe tĂ« kalohen referencat nĂ« konstruktorin 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Ă« qĂ« lidhen me pĂ«rdorimin e referencave nĂ« funksione. ËshtĂ« shtuar mundĂ«sia e pĂ«rdorimit tĂ« metodave tĂ« pĂ«rgjithshme (generic) dhe referencave tĂ« funksioneve pĂ«r krijimin e njĂ« metode dhe reference qĂ« nuk janĂ« tĂ« pĂ«rgjithshme: T id<T>(T value) => value; var intId = id<int>; // lejohet nĂ« versionin 2.15 nĂ« vend tĂ« “int Function(int) intId = id;” const fo = id; // referencĂ« nĂ« funksionin id. const c1 = fo<int>;
  • NĂ« bibliotekĂ«n dart:core Ă«shtĂ« pĂ«rmirĂ«suar mbĂ«shtetja pĂ«r enumeratat (enum), pĂ«r shembull tani mund tĂ« merret vlera string nga çdo vlerĂ« enum pĂ«rmes metodĂ«s “.name”, tĂ« bĂ«het seleksionimi i vlerave sipas emrit ose tĂ« bĂ«het kĂ«rcim i çiftĂ«ve 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”. }
  • ËshtĂ« zbatuar njĂ« teknikĂ« e kompresimit tĂ« referencave, e cila lejon pĂ«rdorimin e njĂ« paraqitjeje mĂ« kompakte tĂ« referencave nĂ« mjediset 64-bit, nĂ«se pĂ«r adresimin e mjafton hapĂ«sira adresore 32-bit (nuk pĂ«rdoret mĂ« shumĂ« se 4 GB memorie). Testet treguan se kjo optimizim mund tĂ« zvogĂ«lojĂ« madhĂ«sinĂ« e heaps rreth 10%. NĂ« Flutter SDK, pĂ«r default, mĂ«nyra e re Ă«shtĂ« aktivizuar pĂ«r Android, dhe nĂ« versionin e ardhshĂ«m planifikohet tĂ« aktivizohet pĂ«r iOS.
  • NĂ« paketĂ«n Dart SDK janĂ« pĂ«rfshirĂ« mjete pĂ«r debugin dhe analizĂ«n e performancĂ«s (DevTools), qĂ« mĂ« parĂ« ishin ofruar nĂ« njĂ« paketĂ« tĂ« veçantĂ«.
  • NĂ« komandĂ«n “dart pub” dhe repositoriumet e paketave pub.dev janĂ« shtuar mjete pĂ«r tĂ« ndjekur publikimin aksidental tĂ« informacionit konfidencial, pĂ«r shembull, tĂ« lĂ«nies brenda paketĂ«s tĂ« kredencialeve pĂ«r sistemet e integrimit tĂ« vazhdueshĂ«m dhe mjediset nĂ« cloud. NĂ« rast se zbulohet ndonjĂ« rrjedhje e tillĂ«, ekzekutimi i komandĂ«s “dart pub publish” do tĂ« ndalet me njĂ« mesazh gabimi. NĂ« rast se ka ndodhur njĂ« zbulim i rremĂ«, Ă«shtĂ« dhĂ«nĂ« mundĂ«sia e kalimit tĂ« kontrolleve pĂ«rmes njĂ« liste tĂ« bardhĂ«.
  • NĂ« repositorin pub.dev Ă«shtĂ« shtuar mundĂ«sia pĂ«r tĂ« revokuar njĂ« version tĂ« publikuar tĂ« paketĂ«s, pĂ«r shembull, nĂ« rast se zbulohet ndonjĂ« gabim tĂ« rrezikshĂ«m ose vulnerabilitetesh. MĂ« parĂ« pĂ«r kĂ«to korrigjime ishte praktikuar publikimi i njĂ« versioni tĂ« korrigjuar nĂ« vazhdim, por nĂ« disa raste Ă«shtĂ« e nevojshme tĂ« revokohet njĂ« botim dhe tĂ« ndalohet shpĂ«rndarja e tij mĂ« tej (pĂ«r shembull, nĂ«se korrigjimet nuk janĂ« ende tĂ« gatshme ose nĂ«se pĂ«r njĂ« rast Ă«shtĂ« publikuar gabimisht njĂ« version i plotĂ« nĂ« vend tĂ« atij provues). Pas revokimit, paketa nuk do tĂ« identifikohet nĂ« komandat “pub get” dhe “pub upgrade”, dhe nĂ« sistemet qĂ« tashmĂ« e kanĂ« instaluar atĂ«, gjatĂ« ekzekutimit tĂ« ardhshĂ«m “pub get” do tĂ« jepet njĂ« paralajmĂ«rim i veçantĂ«.
  • ËshtĂ« shtuar mbrojtja nga vulnerabiliteti (CVE-2021-22567) qĂ« shkaktohet nga pĂ«rdorimi i karaktereve unicode nĂ« kod qĂ« ndryshojnĂ« rendin e shfaqjes.
  • ËshtĂ« eliminuar vulnerabiliteti (CVE-2021-22568) qĂ« lejon tĂ« identifikohesh si njĂ« pĂ«rdorues tjetĂ«r pub.dev gjatĂ« publikimit tĂ« paketeve nĂ« njĂ« server tĂ« jashtĂ«m qĂ« pranon tokenet oauth2 tĂ« aksesit pĂ«r pub.dev. PĂ«r shembull, vulnerabiliteti mund tĂ« pĂ«rdoret pĂ«r tĂ« sulmuar serverĂ«t e paketeve tĂ« brendshme dhe korporative. Problemi nuk i prek zhvilluesit qĂ« publikojnĂ« paketa vetĂ«m nĂ« pub.dev.

Një version i rëndësishëm i kornizës së ndërtimit të ndërfaqeve të përdoruesit Flutter 2.8 është publikuar, i cili konsiderohet si një alternativë për React Native dhe lejon krijimin e aplikacioneve për platforma si iOS, Android, Windows, macOS dhe Linux nga një bazë e vetme kodimi, si dhe ndihmon në zhvillimin e aplikacioneve për shfletuesit. Një ndërfaqe përdoruesi ka qenë e ndërtuar mbi Flutter për mikro-platformën operuese Fuchsia që po zhvillohet nga Google. Kohët e fundit është raportuar se numri i aplikacioneve në Flutter 2 në Google Play Store është rritur nga 200 mijë në 375 mijë, që do të thotë se ka shënuar pothuajse dyfishim.

Pjesa kryesore e kodit Flutter Ă«shtĂ« realizuar nĂ« gjuhĂ«n Dart, ndĂ«rsa motori runtime pĂ«r ekzekutimin e aplikacioneve Ă«shtĂ« shkruar nĂ« C++. NĂ« zhvillimin e aplikacioneve, pĂ«rveç gjuhĂ«s Dart, qĂ« Ă«shtĂ« natyrale pĂ«r Flutter, mund tĂ« pĂ«rdoret ndĂ«rfaqja Dart Foreign Function pĂ«r tĂ« thirrur kod nĂ« C/C++. Performanca e lartĂ« e ekzekutimit arrihet pĂ«rmes kompilimit tĂ« aplikacioneve nĂ« kod makinor pĂ«r platformat e synuara. NĂ« tĂ« njĂ«jtĂ«n kohĂ«, programi nuk ka nevojĂ« tĂ« rikompilohet pas çdo ndryshimi — Dart ofron njĂ« mod tĂ« ngarkesĂ«s sĂ« nxehtĂ«, qĂ« lejon tĂ« bĂ«hen ndryshime nĂ« aplikacionin nĂ« punĂ« dhe tĂ« vlerĂ«sohet menjĂ«herĂ« rezultati.

Ndër ndryshimet e reja në versionin e ri të Flutter është optimizimi i shpejtësisë së nisjes dhe konsumit të memories në pajisjet mobile. Lidhja e aplikacioneve me shërbimet backend, si Firebase dhe Google Cloud, është lehtësuar. Mjetet për integrim me Google Ads janë stabilizuar. Mbështetje për kamerat dhe pluginët web është përmirësuar ndjeshëm. Janë ofruar mjete të reja për lehtësimin e zhvillimit, për shembull, është shtuar një widget për autentifikimin duke përdorur Firebase. Motori Flame, i cili është i dedikuar për zhvillimin e lojrave 2D duke përdorur Flutter, është përmirësuar.

Burimi: opennet.ru

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