Kompania Google publikoi version e gjuhës së programimit Dart 2.14, duke vazhduar zhvillimin e degës së ridizajnuar të Dart 2, e cila ndryshon nga versioni origjinal i gjuhës Dart për shkak të përdorimit të tipizimit 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 tjetra tipi i llogaritur fillimisht është i ngjeshur për ndryshore dhe më pas aplikohet një kontroll i saktë 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 mjete shpërndahen përmes depot pub, e cila përmban më shumë se 20,000 paketa.
Ndryshimet kryesore në versionin Dart 2.14:
- ĂshtĂ« shtuar njĂ« operator i ri i lĂ«vizjes sĂ« trefishtĂ« (>>>) qĂ«, pĂ«r dallim nga operatori (>>), kryen njĂ« lĂ«vizje logjike pa pasur parasysh bitin nĂ«nshkues (lĂ«vizja bĂ«het pa ndarjen e numrave nĂ« pozitive dhe negative).
- ĂshtĂ« hequr kufizimi mbi argumentet e tipit, qĂ« nuk lejonin pĂ«rdorimin e tipeve tĂ« pĂ«rgjithshĂ«m si argumente me tip. PĂ«r shembull, tani mund tĂ« pĂ«rcaktoni: late List<T Function(T)> idFunctions; var callback = [(T value) => value]; late S Function<S extends T Function(T)>(S) f;
- Lejohet përcaktimi i argumenteve me tipe në anotacionet, si @Deprecated. Për shembull, tani mund të përcaktoni: @TypeHelper(42, "The meaning")
- 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 kur kaloni orët midis kohës verore dhe dimërore që s'është një orë e plotë (për shembull, në Australi përdoret një ndryshim prej 30 minutash). Në paketën ffi është shtuar mbështetja për mekanizmin e alokimit të memories në arenë, e cila liron automatikisht burimet. Në paketën ffigen është shtuar mundësia e gjenerimit të përcaktimeve typedef të tipeve Dart nga gjuha C.
- 250 paketet më të njohura nga repository pub.dev dhe 94% e të dhënave në top-1000 janë përkthyer për të përdorur modin e sigurt të përdorimit të vlerës "Null" (null safety), i cili ndihmon në shmangien e dështimeve që shkaktohen nga përpjekjet për të përdorur variabla që nuk janë të definuar dhe që janë caktuar në "Null". Ky mod paramendon që variablat nuk mund të kenë vlera të pandërshimta, nëse nuk u caktohet gjithmonë një vlerë null. Në këtë mod janë të përllogaritura me kujdes tipet e variablave, gjë që i lejon kompilatorit të zbatojë optimizime të tjera. Përputhshmëria e tipeve kontrollohet në fazën e kompilimit, për shembull, nëse përpiqeni të caktosh një vlerë "Null" një variabli me tipin që nuk përfshin një gjendje të pandërshimtë, si "int", do të gjenerohet një gabim.
- Janë propozuar grupe të unifikuara rregullash për analizuesin e kodit (linter), i cili siguruan mbështetje të përbashkët për verifikimin e ndjekjes së rekomandimeve për stilin e formësimit të kodit si për Dart ashtu edhe për framework-un Flutter. Për arsye historike, rregullat e formësimit të kodit për Flutter dhe Dart ndryshonin, për më tepër, për Dart ishin në përdorim dy grupe rregullash - ato pedante nga Google dhe rregullat nga komuniteti i zhvilluesve të Dart. Në Dart 2.14 është paraqitur një grup i ri i përbashkët rregullash për linter, i cili është vendosur të përdoret nga default në projektet e reja Dart dhe në Flutter SDK. Grupi përfshin rregulla bazë (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ë përdorimin e stilit të ri të kodimit, të bazuar në rekomandimet nga dokumentacioni i Dart.
- Në formatter janë bërë optimizime në formatimin e bllokëve të kodit kaskad, që lejojnë të rritet ndjeshëm performanca e formatimit dhe të shmangen keqkuptimet lidhur me përkatësinë e elementeve të shprehjes. Për shembull, thirrja "..doIt" në shprehjen "var result = errorState ? foo : bad..doIt()" i përket jo pjesës kushtetuese të bllokut "bad" por tërë shprehjes, prandaj në formatim tani ndahet: var result = errorState ? foo : bad ..doIt();
- Në SDK është shtuar mbështetje për procesorët Apple M1 (Silicon), duke përfshirë si mundësinë e funksionimit të Dart VM, utilitarëve dhe komponentëve të SDK në sisteme me procesor Apple Silicon, ashtu edhe mbështetje për kompilimin e skedarëve ekzekutivë për këto çipa.
- Ekipës "dart pub" i është shtuar mbështetje për një skedë ndihmëse të re " .pubignore", e cila lejon përcaktimin e një liste skedarësh që do të injorohen gjatë publikimit të paketës në repositorin pub.dev. Konfigurimet e përcaktuara nuk përputhen me listën e injorimit " .gitignore" (në disa raste, në pub.dev kërkohet që të mos dërgohen skedarë që nevojitet në Git, siç janë skedarët e brendshëm që përdoren gjatë zhvillimit).
- Punët për përmirësimin e performancës së ekipit "dart test" janë realizuar, i cili tani nuk kërkon ri-kompilim të testeve pas ndryshimit të pubspec, nëse numri i versionit nuk ka ndryshuar.
- Mbështetja për kompilimin në modalitetin e kompatibilitetit me ECMAScript 5 është ndërprerë (ndryshimi do të çojë në humbjen e kompatibilitetit me shfletuesin IE11).
- Disa utilitete si stagehand, dartfmt dhe dart2native janë shpallur si të vjetra, dhe janë zëvendësuar me komanda të ndërtuara, të thirrura përmes utilitetit dart.
- Mekanizmi i Zgjerimeve Native të VM-së është shpallur si i vjetruar. Për thirrjen e kodit të native nga kodi në gjuhën Dart rekomandohet përdorimi i ndërfaqes së re Dart FFI (Foreign Function Interface).
Një lëshim i rëndësishëm i kornizës për ndërtimin e ndërfaqeve të përdoruesit Flutter 2.5 është prezantuar, i cili konsiderohet si një alternativë për React Native dhe lejon që, përmes një bazë kodi të vetme, të lëshohen aplikacione për platformat iOS, Android, Windows, macOS dhe Linux, si dhe të krijohen aplikacione për t'u drejtuar në shfletues. Flutter ofron një ndërfaqe përdoruesi të ndërtuar në sistemin mikro-kernel Fuchsia, që është në zhvillim nga Google.
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 kryesore në Flutter 2.5:
- JanĂ« bĂ«rĂ« optimizime tĂ« mĂ«dha tĂ« performancĂ«s. NĂ« platformat iOS dhe macOS, Ă«shtĂ« realizuar parakompozimi i shaderave pĂ«r API-nĂ« grafike Metal. Eficienca nĂ« pĂ«rpunimin e ngjarjeve asinkrone Ă«shtĂ« pĂ«rmirĂ«suar. Problemi me vonesat gjatĂ« lirimit tĂ« memorie nga mbledhĂ«si i plehrave pĂ«r imazhet e papĂ«rdorura Ă«shtĂ« zgjidhur (p.sh., gjatĂ« riprodhimit tĂ« njĂ« GIF-i tĂ« animuar 20-sekondĂ«sh, numri i aktiviteteve tĂ« mbledhjes sĂ« plehrave Ă«shtĂ« reduktuar nga 400 nĂ« 4. Vonisat gjatĂ« transferimit tĂ« mesazheve midis Dart dhe Objective-C/Swift (iOS) ose Java/Kotlin (Android) janĂ« reduktuar deri nĂ« 50%. ĂshtĂ« shtuar mbĂ«shtetje pĂ«r ndĂ«rtimin native pĂ«r sistemet e bazuara nĂ« çipin Apple Silicon.

- PĂ«r platformĂ«n Android, Ă«shtĂ« vendosur mbĂ«shtetje pĂ«r funksionimin e aplikacioneve nĂ« ekran tĂ« plotĂ«. ĂshtĂ« vazhduar realizimi i konceptit tĂ« dizajnit "Material You", i cili paraqitet si njĂ« variant i Material Design-it tĂ« brezit tĂ« ardhshĂ«m. ĂshtĂ« shtuar njĂ« gjendje e re MaterialState.scrolledUnder, Ă«shtĂ« realizuar shfaqja dinamike e shiritave tĂ« rrotullimit gjatĂ« ndryshimit tĂ« madhĂ«sisĂ« dhe Ă«shtĂ« ofruar njĂ« ndĂ«rfaqe e re pĂ«r shfaqjen e banderolave me njoftime.
- Janë zgjeruar ndjeshëm mundësitë e plugin-it për punë me kamerën, ku janë shtuar mjete për menaxhimin e autofokuseve, ekspozitës, flash-it, zmadhen, zbutjen e zhurmave dhe rezolutën.
- Janë përmirësuar mjetet për zhvilluesit (DevTools), ku ka lindur një mod i rishikuar për inspektimin e widget-eve, si dhe janë ofruar mjete për identifikimin e vonesave gjatë përfaqësimit dhe për ndjekjen e kompilimit të shaders.

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


