Kompania Google publikoi versionin e ri të gjuhës së programimit Dart 2.14, e cila vazhdon zhvillimin e degës së rishikuar të Dart 2, e cila ndryshon nga varianti origjinal i gjuhës Dart me implementimin e tipizimit të fortë statik (tipet mund të nxirren automatikisht, prandaj tregimi i tipeve nuk është i detyrueshëm, por tipizimi dinamik nuk përdoret më dhe tipi fillestar i llogaritur lidhet me variablin dhe më pas aplikohet një kontroll rigoroz 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.
- Pakete shtesë me biblioteka dhe mjete shpërndahen përmes repozitorit pub, i cili përmban më shumë se 20 mijë paketa.
Ndryshimet kryesore në lëshimin e Dart 2.14:
- Shtohet operatori i ri i zgjatimit të trefishtë (>>>), i cili, ndryshe nga operatori «>>», kryen një zgjatim logjik dhe jo aritmetik, duke funksionuar pa marrë parasysh bitin nënshkrues (zgjatimi bëhet pa ndarjen në numra pozitivë dhe negativë).
- U hiqet kufizimi mbi argumentet e tipeve, i cili nuk lejonte përdorimin e tipeve të përgjithshëm të funksioneve si argument me tip. Për shembull, tani mund të tregoni: late List<T Function(T)> idFunctions; var callback = [(T value) => value]; late S Function<S extends T Function(T)>(S) f;
- Lejohet tregimi i argumenteve me tipe në annotacione si @Deprecated. Për shembull, tani mund të tregoni: @TypeHelper(42, «Kuptimi»)
- Në bibliotekën standarde (core), në klasën Object janë shtuar metodat statike hash, hashAll dhe hashAllUnordered. Në klasën DateTime është përmirësuar trajtimi i kohës lokale gjatë kalimit të orëve ndërmjet verës dhe dimrit që nuk janë shumë herë një orë (p.sh., në Australi përdoret tërheqja prej 30 minutash). Në paketën ffi është shtuar mbështetje për mekanizmin e alokimit të memories arena, e cila çliron automatikisht burimet. Në paketën ffigen është shtuar mundësia e gjenerimit të definimeve të typedef-eve të tipeve Dart nga gjuha C.
- 250 paketat mĂ« tĂ« njohura nga repozitori pub.dev dhe 94% e top-1000 janĂ« transformuar pĂ«r tĂ« pĂ«rdorur modalitetin e sigurt pĂ«r vlerĂ«n 'Null' (sigurisht), i cili do tâi ndihmojĂ« tĂ« shmangin krasitjet qĂ« shkaktohen nga pĂ«rpjekja pĂ«r tĂ« pĂ«rdorur variablat, vlera e tĂ« cilĂ«ve nuk Ă«shtĂ« e pĂ«rcaktuar dhe Ă«shtĂ« vendosur nĂ« 'Null'. Modaliteti parashikon qĂ« variablat nuk mund tĂ« kenĂ« vlera tĂ« papĂ«rcaktuara, nĂ«se atyre nuk u jepet shprehimisht vlera null. NĂ« modalitetin e rreptĂ«, janĂ« tĂ« dhĂ«na llogaritĂ«se tĂ« tipit, qĂ« lejon kompiluesin tĂ« aplikojĂ« optimizime tĂ« tjera. PĂ«rputhshmĂ«ria e tipeve kontrollohet nĂ« fazĂ«n e kompilimit, p.sh., nĂ« rastin e njĂ« pĂ«rpjekjeje pĂ«r tĂ« caktuar vlerĂ«n 'Null' njĂ« varianti me tip tĂ« cilin nuk e parashikon njĂ« qĂ«ndrim tĂ« papĂ«rcaktuar, si 'int', do tĂ« del njĂ« gabim.
- JanĂ« propozuar grupe tĂ« unifikuara rregullash pĂ«r analizuesin e kodit (linter), tĂ« cilat sigurojnĂ« mbĂ«shtetje tĂ« njĂ«kohshme pĂ«r kontrollin e pĂ«rputhshmĂ«risĂ« sĂ« rekomandimeve pĂ«r stilin e kodit pĂ«r Dart dhe framework-un Flutter. PĂ«r arsye historike, rregullat e stilit tĂ« kodit pĂ«r Flutter dhe Dart kanĂ« qenĂ« tĂ« ndryshme, pĂ«r mĂ« tepĂ«r pĂ«r Dart ishin nĂ« pĂ«rdorim dy grupe rregullash â ato pedante nga Google dhe rregullat e komunitetit tĂ« zhvilluesve Dart. NĂ« Dart 2.14 Ă«shtĂ« paraqitur njĂ« grup i ri i zakonshĂ«m rregullash pĂ«r linter-in, i cili Ă«shtĂ« vendosur tĂ« aplikohet si standard nĂ« projektet e reja Dart dhe nĂ« Flutter SDK. Grupi pĂ«rfshin rregulla tĂ« bazuara (paketi lints/core.yaml), rregulla shtesĂ« tĂ« rekomanduara (lints/recommended.yaml) dhe rekomandime specifike pĂ«r Flutter (flutter_lints/flutter.yaml). PĂ«rdoruesve tĂ« rregullave pedante u rekomandohet tĂ« kalojnĂ« nĂ« stilin e ri tĂ« kodimit, tĂ« bazuar nĂ« rekomandimet e dokumentacionit Dart.
- Në formatter janë bërë optimizime në formatimin e blloqeve të kodit të kaskadës, duke lejuar një përmirësim të dukshëm të performancës së formatimit dhe duke shmangur interpretimin e paqartë të përkatësisë së elementeve të shprehjes. Për shembull, thirrja «..doIt» në shprehjen «var result = errorState ? foo : bad..doIt()» i referohet jo pjesës kushtore të bllokut «bad» por gjithë shprehjes, prandaj gjatë formatimit tani ndahen: var result = errorState ? foo : bad ..doIt();
- Në SDK është shtuar mbështetje për procesorët Apple M1 (Silicon), duke përfshirë mundësinë e ekzekutimit të Dart VM, mjeteve dhe komponenteve të SDK në sisteme me procesor Apple Silicon, si dhe mbështetje për kompilimin e skedave ekzekutiv për këto çipe.
- Në komandën «dart pub» është shtuar mbështetje për skedarin e ri shërbim «.pubignore», i cili lejon përcaktimin e një listen të skedarëve që do të injorohen gjatë publikimit të paketës në repozitorin pub.dev. Cilësimet e caktuara nuk përputhen me listën e injorimit «.gitignore» (në disa raste në pub.dev kërkohet që të mos dërgohen skedarë që janë të nevojshëm në Git, për shembull, skenaret e brendshme të përdorura gjatë zhvillimit).
- ĂshtĂ« bĂ«rĂ« punĂ« pĂ«r tĂ« rritur performancĂ«n e ekipit "dart test", i cili tani nuk kĂ«rkon kompilim tĂ« pĂ«rsĂ«ritur tĂ« testeve pas ndryshimit tĂ« pubspec, nĂ«se numri i versionit nuk Ă«shtĂ« ndryshuar.
- ĂshtĂ« ndĂ«rprerĂ« mbĂ«shtetja pĂ«r kompilim nĂ« modin pĂ«rshtatshmĂ«risĂ« me ECMAScript 5 (ndryshimi do tĂ« çojĂ« nĂ« humbjen e mbĂ«shtetjes pĂ«r shfletuesin IE11).
- Janë shpallur të vjetra disa utilitete të veçanta stagehand, dartfmt dhe dart2native, të cilat janë zëvendësuar nga komanda të ndërtuara, të thirrura përmes utilitetit dart.
- ĂshtĂ« kaluar nĂ« kategorinĂ« e vjetra mekanizmi VM Native Extensions. PĂ«r thirrjen e kodit natyror nga kodi nĂ« gjuhĂ«n Dart rekomandohet pĂ«rdorimi i interfesĂ«s sĂ« re Dart FFI (Foreign Function Interface).
Njëherësh është prezantuar një version i rëndësishëm i kornizës për ndërtimin e ndërfaqeve të përdoruesit Flutter 2.5, i cili konsiderohet si një alternativë për React Native dhe lejon lëshimin e aplikacioneve për platformat iOS, Android, Windows, macOS dhe Linux nga një bazë e vetme koduese, si dhe krijimin e aplikacioneve për të drejtuar në shfletues. Flutter është baza për ndërfaqen e përdoruesit të sistemit operativ mikro-fshikë i zhvilluar nga Google, Fuchsia.
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.
Ndryshimet kryesore në Flutter 2.5:
- JanĂ« bĂ«rĂ« optimizime tĂ« rĂ«ndĂ«sishme tĂ« performancĂ«s. NĂ« platformat iOS dhe macOS Ă«shtĂ« realizuar para-kompilimi i shenjuesve pĂ«r API-nĂ« grafike Metal. ĂshtĂ« rritur efikasiteti i pĂ«rpunimit tĂ« ngjarjeve asinkrone. ĂshtĂ« zgjidhur problemi me vonesat gjatĂ« lirimit tĂ« memories nga mbledhĂ«si i plehĂ«rave pĂ«r imazhet e pakĂ«naqura (p.sh., gjatĂ« riprodhimit tĂ« njĂ« GIF-i animuar tĂ« gjatĂ« 20 sekondash, numri i operacioneve tĂ« mbledhjes sĂ« plehĂ«rave Ă«shtĂ« zvogĂ«luar nga 400 nĂ« 4. DĂ«mtohen vonesat me deri nĂ« 50% gjatĂ« transmetimit tĂ« mesazheve midis Dart dhe Objective-C/Swift (iOS) ose Java/Kotlin (Android). ĂshtĂ« shtuar mbĂ«shtetja pĂ«r ndĂ«rtimin natyror pĂ«r sistemet e bazuara nĂ« çipin Apple Silicon.

- PĂ«r platformĂ«n Android Ă«shtĂ« krijuar mbĂ«shtetje pĂ«r funksionimin e aplikacioneve nĂ« modalitetin me ekran tĂ« plotĂ«. ĂshtĂ« vazhduar realizimi i konceptit tĂ« dizajnit "Material You", i paraqitur si njĂ« variant i Material Design-it tĂ« ardhshĂ«m. ĂshtĂ« shtuar njĂ« gjendje e re MaterialState.scrolledUnder, Ă«shtĂ« realizuar njĂ« shfaqje dinamike e shiritave tĂ« rrotullimit gjatĂ« ndryshimit tĂ« madhĂ«sisĂ« dhe Ă«shtĂ« propozuar njĂ« ndĂ«rfaqe e re pĂ«r shfaqjen e bllokimeve me njoftime.
- Janë zgjeruar ndjeshëm mundësitë e plugin-it për punën me kamerën, të cilat tani përfshijnë mjete për menaxhimin e fokusit automatik, ekspozitës, flakës, zmadhuarjes, zbutjes së zhurmave dhe rezolutës.
- Janë përmirësuar mjetet për zhvilluesit (DevTools), të cilat tani kanë një modalitet të përditësuar inspektimi i widget-eve, si dhe janë dhënë mjete për identifikimin e vonesave gjatë vizatimit dhe ndjekjes së kompilimit të shenjuesve.

- Janë përmirësuar plugin-et për Visual Studio Code dhe IntelliJ/Android Studio.
Burimi: opennet.ru


