Lingua di prugrammazione Dart 2.15 è framework Flutter 2.8 dispunibule

Google hà publicatu a liberazione di a lingua di prugrammazione Dart 2.15, chì cuntinueghja u sviluppu di un ramu radicalmente riprogettatu di Dart 2, chì difiere da a versione originale di a lingua Dart per l'usu di una forte tipografia statica (i tipi ponu esse inferiti automaticamente, cusì a specificazione di i tipi ùn hè micca necessariu, ma a digitazione dinamica ùn hè più utilizata è inizialmente calculata u tipu hè assignatu à a variàbile è u cuntrollu di tipu strettu hè sussegwentemente applicatu).

Caratteristiche di a lingua Dart:

  • Sintassi familiare è faciule d'amparà, naturali per i programatori JavaScript, C è Java.
  • Assicurendu un lanciu rapidu è un altu rendimentu per tutti i navigatori web muderni è diversi tipi di ambienti, da i dispositi portatili à i servitori putenti.
  • A capacità di definisce classi è interfacce chì permettenu l'incapsulazione è a reutilizazione di metudi è dati esistenti.
  • A specificazione di i tipi facilita a debug è l'identificazione di l'errori, rende u codice più chjaru è più leggibile, è simplifica a so mudificazione è l'analisi da i sviluppatori di terzu.
  • Tipi supportati includenu: vari tipi di hash, array è listi, file, tipi numerichi è di stringa, tipi per a determinazione di data è ora, espressioni regulare (RegExp). Hè pussibule di creà i vostri tipi.
  • Per urganizà l'esekzione parallela, hè pruposta d'utilizà classi cù l'attributu isolatu, u codice di quale hè eseguitu interamente in un spaziu isolatu in una zona di memoria separata, interagisce cù u prucessu principale mandendu missaghji.
  • Supportu per l'usu di biblioteche chì simplificà u supportu è u debugging di grandi prughjetti web. L'implementazioni di e funzioni di terze parti ponu esse incluse in forma di biblioteche spartute. L'applicazioni ponu esse divise in parte è affidate u sviluppu di ogni parte à una squadra separata di programatori.
  • Un inseme di strumenti pronti per sustene u sviluppu in a lingua Dart, cumprese l'implementazione di u sviluppu dinamicu è l'arnesi di debugging cù a correzione di codice à a mosca ("edit-and-continue").
  • Per simplificà u sviluppu in a lingua Dart, vene cun un SDK, un pub di gestore di pacchetti, un analizzatore di codice staticu dart_analyzer, un inseme di biblioteche, un ambiente di sviluppu integratu DartPad è plugins abilitati per Dart per IntelliJ IDEA, WebStorm, Emacs, Sublime Text. 2 è Vim.
  • Pacchetti supplementari cù biblioteche è utilità sò distribuiti attraversu u repository pub, chì hà circa 22 mila pacchetti.

Cambiamenti principali in a versione di Dart 2.15:

  • Fornisce strumenti per l'esecuzione rapida parallela di e attività cù l'isolazione di i gestori. In i sistemi multi-core, u runtime di Dart per difettu esegue u codice di l'applicazione nantu à un core CPU è usa altri core per eseguisce e funzioni di u sistema cum'è l'I/O asincronu, scrive à i fugliali, o fà chjamate di rete. Per l'applicazioni chì anu bisognu di eseguisce i so gestori in parallelu, per esempiu, per rende l'animazione in l'interfaccia, hè pussibule lancià blocchi separati di codice (isolate), isolati l'un l'altru è eseguiti in altri core di CPU simultaneamente cù u filu di l'applicazione principale. . Per prutezzione di l'errori chì si sviluppanu quandu l'esekzione simultanea di codice chì travaglia cù u listessu settore di dati, a spartera di l'uggetti mutabili in diversi blocchi isolati hè pruibita, è un mudellu di passaghju di messagi hè utilizatu per l'interazzione trà i gestori.

    Dart 2.15 introduce un novu cuncettu - gruppi di blocchi isolati (gruppi isolati), chì vi permette di urganizà l'accessu cumunu à diverse strutture di dati interni in blocchi isolati chì facenu parte di u stessu gruppu, chì ponu riduce significativamente l'overhead quandu interagisce trà i gestori in un gruppu. . Per esempiu, lanciari un bloccu isolatu supplementu in un gruppu esistenti hè 100 volte più veloce è richiede 10-100 volte menu di memoria di lancià un bloccu isolatu separatu, per via di l'eliminazione di a necessità di inizializà strutture di dati di prugramma.

    Malgradu u fattu chì i blocchi isolati in un gruppu pruibiscenu ancu l'accessu spartutu à l'uggetti mutabili, i gruppi utilizanu una memoria di cumunu cumunu, chì pò accelerà significativamente u trasferimentu di l'uggetti da un bloccu à l'altru senza a necessità di fà operazioni di copia intensiva di risorse. A nova versione permette ancu di passà u risultatu di u gestore quandu chjamate Isolate.exit () per trasfiriri dati à u bloccu isolatu parent senza operazioni di copia. Inoltre, u mecanismu di trasmissione di u messagiu hè statu ottimizatu - i missaghji chjuchi è mediani sò avà trattati circa 8 volte più veloce. L'uggetti chì ponu esse passati trà isolati cù a chjama SendPort.send() includenu certi tipi di funzioni, chjusi è traccia di stack.

  • In l'arnesi per creà punters à e funzioni individuali in altri oggetti (strappa), sò stati eliminati e restrizioni à creà punters simili in u codice constructore, chì ponu esse utili à custruisce interfacce basate nantu à a libreria Flutter. Per esempiu, per creà un widget Column chì includenu parechji widgets Testu, pudete chjamà ".map ()" è passà punters à u custruttore Text.new di l'ughjettu Text: class FruitWidget estende StatessWidget { @override Widget build (BuildContext context) { return Column ( figlioli: ['Apple', 'Orange'].map (Text.new).toList ()); } }
  • E pussibulità assuciate cù l'usu di punters di funzione sò state allargate. Aggiunta l'abilità d'utilizà metudi generichi è punters di funzione per creà un metudu è un punteru non genericu: T id (Valore T) => valore; var intId = id ; // permessu in a versione 2.15 invece di "int Function(int) intId = id;" const fo = id; // puntatore à a funzione id. const c1 = fo ;
  • A biblioteca di dart:core hà migliuratu u supportu per l'enums, per esempiu, pudete avà uscite un valore di stringa da ogni valore enum usendu u metudu ".name", selezziunà i valori per nome, o currisponde à coppie di valori: enum MyEnum { one , dui, trè } void main() { print (MyEnum.one.name); // "unu" serà stampatu. print(MyEnum.values.byName('dui') == MyEnum.two); // "true" serà stampatu. mappa finale = MyEnum.values.asNameMap (); stampa (mappa ['trè'] == MyEnum.three); // "veru". }
  • Una tecnica di cumpressione di puntatore hè stata implementata chì permette l'usu di una rapprisintazioni più compacta di puntatori in ambienti di 64-bit se un spaziu di indirizzu di 32-bit hè abbastanza per l'indirizzu (micca più di 4 GB di memoria hè utilizata). I testi anu dimustratu chì una tale ottimisazione permette di riduce a dimensione di u munzeddu di circa 10%. In u Flutter SDK, u novu modu hè digià attivatu per Android per automaticamente, è hè previstu per esse attivatu per iOS in una futura versione.
  • U Dart SDK include strumenti per debugging è analisi di rendiment (DevTools), chì sò stati furniti prima in un pacchettu separatu.
  • Strumenti sò stati aghjuntu à u cumandimu "dart pub" è i repositori di pacchetti pub.dev per seguità a publicazione accidintali di l'infurmazioni cunfidenziale, per esempiu, lascendu credenziali per sistemi di integrazione cuntinuu è ambienti di nuvola in u pacchettu. Se tali fughe sò rilevate, l'esekzione di u cumandamentu "dart pub publish" serà interrotta cù un missaghju d'errore. S'ellu ci era un falsu pusitivu, hè pussibule di passà u cuntrollu attraversu una lista bianca.
  • A capacità di revocà una versione digià publicata di un pacchettu hè stata aghjunta à u repository pub.dev, per esempiu, se scuperte errori periculosi o vulnerabili. Prima, per tali correzioni, a pratica era di pubblicà una versione currettiva, ma in certi casi hè necessariu annullà a liberazione esistente è ferma urgentemente a so distribuzione ulteriore (per esempiu, se a correzione ùn hè ancu pronta o se una liberazione completa hè stata. publicatu per sbagliu invece di una versione di prova). Dopu a revocazione, u pacchettu ùn hè più identificatu in i cumandamenti "pub get" è "pub upgrade", è nantu à i sistemi chì l'anu digià stallatu, un avvisu speciale hè emessu a prossima volta chì "pub get" hè eseguitu.
  • Prutezzione aghjunta contru una vulnerabilità (CVE-2021-22567) causata da l'usu di caratteri unicode in u codice chì cambia l'ordine di visualizazione.
  • Fixed una vulnerabilità (CVE-2021-22568) chì vi permette di impersonà un altru utilizatore pub.dev quandu publicava pacchetti à un servitore di terzu chì accetta tokens d'accessu pub.dev oauth2. Per esempiu, a vulnerabilità puderia esse aduprata per attaccà i servitori di pacchetti internu è corporativu. I sviluppatori chì ospitu solu pacchetti in pub.dev ùn sò micca affettati da questu prublema.

À u listessu tempu, hè stata presentata una liberazione significativa di u framework di l'interfaccia d'utilizatore Flutter 2.8, chì hè cunsideratu cum'è una alternativa à React Native è permette, basatu annantu à una basa di codice unicu, di liberà applicazioni per iOS, Android, Windows, macOS è Piattaforme Linux, è ancu creà applicazioni per eseguisce in i navigatori. Una cunchiglia persunalizata per u sistema operatore microkernel Fuchsia sviluppatu da Google hè custruitu nantu à a basa di Flutter. Hè nutatu chì in l'ultimi sei mesi, u numeru di applicazioni Flutter 2 in a Google Play Store hè aumentatu da 200 mila à 375 mila, i.e. quasi duie volte.

A parte principale di u codice Flutter hè implementatu in a lingua Dart, è u mutore di runtime per eseguisce applicazioni hè scrittu in C++. Quandu si sviluppa l'applicazioni, in più di a lingua nativa di Dart di Flutter, pudete aduprà l'interfaccia di Funzione Estera di Dart per chjamà codice C/C++. L'alta prestazione di esecuzione hè ottenuta cumpilendu applicazioni in codice nativu per e plataforme di destinazione. In questu casu, u prugramma ùn hà micca bisognu di ricumpià dopu ogni cambiamentu - Dart furnisce un modu di ricaricà caldu chì permette di fà cambiamenti à una applicazione in esecuzione è evaluà immediatamente u risultatu.

Trà i cambiamenti in a nova versione di Flutter, l'ottimisazione di a velocità di lanciamentu è u cunsumu di memoria in i dispositi mobili hè nutata. Hè più faciule per cunnette l'applicazioni à i servizii di backend cum'è Firebase è Google Cloud. Strumenti per integrazione cù Google Ads sò stati stabilizati. U supportu per e camere è i plugins web hè statu migliuratu significativamente. Novi strumenti sò stati pruposti per simplificà u sviluppu, per esempiu, un widget hè statu aghjuntu per l'autentificazione cù Firebase. U mutore Flame, pensatu per sviluppà ghjochi 2D cù Flutter, hè statu aghjurnatu.

Source: opennet.ru

Add a comment