Limba Dart 2.14 și cadrul Flutter 2.5 sunt disponibile

Google a publicat lansarea limbajului de programare Dart 2.14, care continuă dezvoltarea unei ramuri radical reproiectate a lui Dart 2, care diferă de versiunea originală a limbajului Dart prin utilizarea tastării statice puternice (tipurile pot fi deduse automat, deci specificarea tipurilor nu este necesară, dar tastarea dinamică nu mai este utilizată și inițial calculat tipul este atribuit variabilei și se aplică ulterior verificarea strictă a tipului).

Caracteristici ale limbajului Dart:

  • Sintaxă familiară și ușor de învățat, naturală pentru programatorii JavaScript, C și Java.
  • Asigurând lansare rapidă și performanță ridicată pentru toate browserele web moderne și diverse tipuri de medii, de la dispozitive portabile până la servere puternice.
  • Abilitatea de a defini clase și interfețe care permit încapsularea și reutilizarea metodelor și datelor existente.
  • Specificarea tipurilor facilitează depanarea și identificarea erorilor, face codul mai clar și mai lizibil și simplifică modificarea și analiza acestuia de către dezvoltatorii terți.
  • Tipurile acceptate includ: diferite tipuri de hash-uri, matrice și liste, cozi, tipuri numerice și de șir, tipuri pentru determinarea datei și orei, expresii regulate (RegExp). Este posibil să vă creați propriile tipuri.
  • Pentru a organiza execuția paralelă, se propune utilizarea unor clase cu atributul izolat, al căror cod este executat în întregime în spațiu izolat într-o zonă de memorie separată, interacționând cu procesul principal prin trimiterea de mesaje.
  • Suport pentru utilizarea bibliotecilor care simplifică suportul și depanarea proiectelor web mari. Implementările de la terțe părți ale funcțiilor pot fi incluse sub formă de biblioteci partajate. Aplicațiile pot fi împărțite în părți și încredințează dezvoltarea fiecărei părți unei echipe separate de programatori.
  • Un set de instrumente gata făcute pentru a sprijini dezvoltarea în limbajul Dart, inclusiv implementarea de dezvoltare dinamică și instrumente de depanare cu corecție de cod din mers („edit-and-continue”).
  • Pentru a simplifica dezvoltarea în limbajul Dart, vine cu un SDK, un manager de pachete pub, un analizor de cod static dart_analyzer, un set de biblioteci, un mediu de dezvoltare integrat DartPad și pluginuri activate pentru Dart pentru IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 și Vim.
  • Pachete suplimentare cu biblioteci și utilități sunt distribuite prin depozitul pub, care are peste 20 de mii de pachete.

Schimbări majore în versiunea Dart 2.14:

  • S-a adăugat un nou operator de triplă schimbare (>>>), care, spre deosebire de operatorul „>>”, efectuează nu o aritmetică, ci o deplasare logică care funcționează fără a ține cont de bitul de semn (deplasarea se realizează fără a se împărți în numere pozitive și negative).
  • S-a eliminat restricția privind argumentele de tip care împiedica utilizarea tipurilor de funcții generice ca argument de tip. De exemplu, acum puteți specifica: late List (T)>idFunctions; var apel invers = [ (valoarea T) => valoare]; late S Funcția (T)>(S) f;
  • Permiteți specificarea argumentelor cu tipuri în adnotări precum @Deprecated. De exemplu, acum puteți specifica: @TypeHelper (42, „Semnificația”)
  • Metodele statice hash, hashAll și hashAllUnordered au fost adăugate la biblioteca standard (core) din clasa Object. Clasa DateTime a îmbunătățit gestionarea orei locale la conversia ceasurilor între ora de vară și cea de iarnă, care nu sunt divizibile cu o oră (de exemplu, în Australia este utilizat un offset de 30 de minute). Pachetul ffi a adăugat suport pentru mecanismul de alocare a memoriei arena, care eliberează automat resurse. Pachetul ffigen a adăugat capacitatea de a genera definiții typedef ale tipurilor Dart din limbajul C.
  • Cele 250 de pachete cele mai populare din depozitul pub.dev și 94% din primele 1000 au fost trecute la utilizarea modului „siguranță nulă”, care va evita blocările cauzate de încercările de a utiliza variabile a căror valoare este nedefinită și setată la „Null”. ” ” Modul implică faptul că variabilele nu pot avea valori nule decât dacă li se atribuie în mod explicit valoarea nulă. Modul respectă cu strictețe tipurile de variabile, ceea ce permite compilatorului să aplice optimizări suplimentare. Conformitatea tipului este verificată în momentul compilării, de exemplu, dacă încercați să atribuiți valoarea „Null” unei variabile cu un tip care nu implică o stare nedefinită, cum ar fi „int”, va fi afișată o eroare.
  • Sunt propuse seturi unificate de reguli pentru analizatorul de cod (linter), oferind suport simultan pentru verificarea conformității cu ghidurile de stil de cod pentru Dart și cadrul Flutter. Din motive istorice, regulile de codificare pentru Flutter și Dart au fost diferite, în plus, pentru Dart au existat două seturi de reguli în uz - unele pedante de la Google și reguli de la comunitatea de dezvoltatori Dart. Dart 2.14 introduce un nou set comun de reguli pentru linter, care este decis să fie utilizat implicit în noile proiecte Dart și în SDK-ul Flutter. Setul include reguli de bază (pachetul lints/core.yaml), reguli suplimentare recomandate (lints/recommended.yaml) și recomandări specifice Flutter (flutter_lints/flutter.yaml). Utilizatorii regulilor pedante sunt sfătuiți să treacă la utilizarea unui nou stil de codare bazat pe recomandările din documentația Dart.
  • În formatator, s-au făcut optimizări la formatarea blocurilor de cod în cascadă, ceea ce poate îmbunătăți semnificativ performanța de formatare și poate evita interpretarea ambiguă a proprietății elementelor de expresie. De exemplu, apelând „..doIt” în expresia „var result = errorState ? foo : bad..doIt()” nu se referă la partea condiționată a blocului „bad”, ci întreaga expresie, deci la formatare este acum separată: var result = errorState ? foo : bad ..doIt();
  • Suport pentru procesoarele Apple M1 (Silicon) a fost adăugat la SDK, ceea ce implică atât capacitatea de a rula Dart VM, utilități și componente SDK pe sisteme cu un procesor Apple Silicon, cât și suport pentru compilarea fișierelor executabile pentru aceste cipuri.
  • Comanda „dart pub” a adăugat suport pentru un nou fișier de serviciu „.pubignore”, care vă permite să definiți o listă de fișiere care vor fi omise la publicarea unui pachet în depozitul pub.dev. Aceste setări nu interferează cu lista de ignorare „.gitignore” (în unele situații, pub.dev poate dori să evite transferul fișierelor care sunt necesare în Git, de exemplu, scripturile interne utilizate în timpul dezvoltării).
  • S-a lucrat pentru a îmbunătăți performanța comenzii „dart test”, care acum nu necesită recompilarea testelor după schimbarea pubspec dacă numărul versiunii nu s-a schimbat.
  • Suportul pentru compilare în modul de compatibilitate ECMAScript 5 a fost întrerupt (modificarea va duce la pierderea compatibilității cu browserul IE11).
  • Utilitarele individuale stagehand, dartfmt și dart2native au fost declarate învechite, înlocuite cu comenzi încorporate numite prin utilitarul dart.
  • Mecanismul VM Native Extensions a fost depreciat. Pentru a apela codul nativ din codul Dart, se recomandă utilizarea noului Dart FFI (Foreign Function Interface).

În același timp, a fost prezentată o versiune semnificativă a cadrului de interfață utilizator Flutter 2.5, care este considerată o alternativă la React Native și permite, pe baza unei singure baze de cod, să lanseze aplicații pentru iOS, Android, Windows, macOS și Linux platforme, precum și să creeze aplicații pentru a rula în browsere. Un shell personalizat pentru sistemul de operare Fuchsia microkernel dezvoltat de Google este construit pe baza Flutter.

Partea principală a codului Flutter este implementată în limbajul Dart, iar motorul de rulare pentru executarea aplicațiilor este scris în C++. Când dezvoltați aplicații, pe lângă limbajul nativ Dart al lui Flutter, puteți utiliza interfața Dart Foreign Function pentru a apela codul C/C++. Performanța de execuție ridicată este obținută prin compilarea aplicațiilor în codul nativ pentru platformele țintă. În acest caz, programul nu trebuie să fie recompilat după fiecare modificare - Dart oferă un mod de reîncărcare la cald care vă permite să faceți modificări unei aplicații care rulează și să evaluați imediat rezultatul.

Schimbări majore în Flutter 2.5:

  • A realizat optimizări semnificative de performanță. Pe platformele iOS și macOS, a fost implementată precompilarea de shadere pentru API-ul Metal graphics. Eficiență îmbunătățită a procesării evenimentelor asincrone. S-a rezolvat o problemă cu întârzierile când colectorul de gunoi recuperează memoria din imaginile neutilizate (de exemplu, în timpul redării unui GIF animat de 20 de secunde, numărul operațiunilor de colectare a gunoiului a fost redus de la 400 la 4. Întârzieri la trecerea mesajelor între Dart și Objective- C/Swift au fost reduse la 50% (iOS) sau Java/Kotlin (Android) S-a adăugat suport nativ de construcție pentru sistemele bazate pe cipul Apple Silicon.
    Limba Dart 2.14 și cadrul Flutter 2.5 sunt disponibile
  • Pentru platforma Android, a fost stabilit suport pentru rularea aplicațiilor în modul ecran complet. Implementarea conceptului de design „Material You”, prezentat ca o opțiune de Material Design de ultimă generație, a continuat. A adăugat o nouă stare MaterialState.scrolledUnder, a implementat afișarea dinamică a barelor de defilare la redimensionare și a propus o nouă interfață pentru afișarea bannerelor de notificare.
  • Capacitățile plug-in-ului camerei au fost extinse semnificativ, adăugând instrumente pentru controlul focalizării automate, expunerii, blițului, zoomului, reducerii zgomotului și rezoluției.
  • Instrumentele pentru dezvoltatori (DevTools) au fost îmbunătățite pentru a include un mod de inspecție widget actualizat, precum și instrumente pentru identificarea întârzierilor de randare și urmărirea compilației shader-ului.
    Limba Dart 2.14 și cadrul Flutter 2.5 sunt disponibile
  • Pluginuri îmbunătățite pentru Visual Studio Code și IntelliJ/Android Studio.

Sursa: opennet.ru

Adauga un comentariu