Sono disponibili il linguaggio Dart 2.14 e il framework Flutter 2.5

Google ha pubblicato il rilascio del linguaggio di programmazione Dart 2.14, che continua lo sviluppo di un ramo radicalmente riprogettato di Dart 2, che differisce dalla versione originale del linguaggio Dart per l'uso di una forte digitazione statica (i tipi possono essere dedotti automaticamente, quindi non è necessario specificare i tipi, ma la tipizzazione dinamica non viene più utilizzata e inizialmente calcolato il tipo viene assegnato alla variabile e successivamente viene applicato un controllo rigoroso del tipo).

Caratteristiche del linguaggio Dart:

  • Sintassi familiare e facile da apprendere, naturale per i programmatori JavaScript, C e Java.
  • Garantisce avvio rapido e prestazioni elevate per tutti i browser Web moderni e vari tipi di ambienti, dai dispositivi portatili ai server potenti.
  • La capacità di definire classi e interfacce che consentono l'incapsulamento e il riutilizzo di metodi e dati esistenti.
  • La specifica dei tipi semplifica il debug e l'identificazione degli errori, rende il codice più chiaro e leggibile e ne semplifica la modifica e l'analisi da parte di sviluppatori di terze parti.
  • I tipi supportati includono: vari tipi di hash, matrici ed elenchi, code, tipi numerici e di stringa, tipi per determinare data e ora, espressioni regolari (RegExp). È possibile creare i propri tipi.
  • Per organizzare l'esecuzione parallela, si propone di utilizzare classi con l'attributo isolate, il cui codice viene eseguito interamente in uno spazio isolato in un'area di memoria separata, interagendo con il processo principale inviando messaggi.
  • Supporto per l'utilizzo di librerie che semplificano il supporto e il debug di progetti web di grandi dimensioni. È possibile includere implementazioni di funzioni di terze parti sotto forma di librerie condivise. Le applicazioni possono essere divise in parti e affidare lo sviluppo di ciascuna parte a un team separato di programmatori.
  • Una serie di strumenti già pronti per supportare lo sviluppo nel linguaggio Dart, inclusa l'implementazione di strumenti di sviluppo dinamico e debug con correzione del codice al volo (“modifica e continua”).
  • Per semplificare lo sviluppo nel linguaggio Dart, viene fornito con un SDK, un pub gestore pacchetti, un analizzatore di codice statico dart_analyzer, un set di librerie, un ambiente di sviluppo integrato DartPad e plugin abilitati per Dart per IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 e Vim.
  • Pacchetti aggiuntivi con librerie e utilità vengono distribuiti tramite il repository pub, che contiene più di 20mila pacchetti.

Principali modifiche nella versione Dart 2.14:

  • È stato aggiunto un nuovo operatore di triplo spostamento (>>>) che, a differenza dell'operatore “>>”, non esegue uno spostamento aritmetico, ma uno spostamento logico che funziona senza tenere conto del bit di segno (lo spostamento viene eseguito senza dividere in numeri positivi e negativi).
  • Rimossa la restrizione sugli argomenti di tipo che impediva l'utilizzo di tipi di funzioni generiche come argomenti di tipo. Ad esempio, ora puoi specificare: late List (T)>idFunzioni; var callback = [ (valore T) => valore]; funzione S tardiva (T)>(S) f;
  • Consenti di specificare argomenti con tipi in annotazioni come @Deprecated. Ad esempio, ora puoi specificare: @TypeHelper (42, "Il significato")
  • I metodi statici hash, hashAll e hashAllUnordered sono stati aggiunti alla libreria standard (core) nella classe Object. La classe DateTime ha migliorato la gestione dell'ora locale durante la conversione degli orologi tra ora legale e ora invernale che non sono divisibili per un'ora (ad esempio, in Australia viene utilizzato un offset di 30 minuti). Il pacchetto ffi ha aggiunto il supporto per il meccanismo di allocazione della memoria arena, che rilascia automaticamente le risorse. Il pacchetto ffigen ha aggiunto la possibilità di generare definizioni typedef di tipi Dart dal linguaggio C.
  • I 250 pacchetti più popolari del repository pub.dev e il 94% dei primi 1000 sono stati passati alla modalità "sicurezza nulla", che eviterà arresti anomali causati dai tentativi di utilizzare variabili il cui valore è indefinito e impostato su "Null "" La modalità implica che le variabili non possono avere valori nulli a meno che non venga loro assegnato esplicitamente il valore null. La modalità rispetta rigorosamente i tipi di variabile, il che consente al compilatore di applicare ottimizzazioni aggiuntive. La conformità al tipo viene verificata in fase di compilazione, ad esempio, se si tenta di assegnare il valore "Null" a una variabile con un tipo che non implica uno stato indefinito, come "int", verrà visualizzato un errore.
  • Vengono proposti set unificati di regole per l'analizzatore di codice (linter), fornendo supporto simultaneo per verificare la conformità con le linee guida sullo stile del codice per Dart e il framework Flutter. Per ragioni storiche, le regole di codifica per Flutter e Dart erano diverse, inoltre per Dart erano in uso due serie di regole: quelle pedanti di Google e le regole della comunità di sviluppatori Dart. Dart 2.14 introduce un nuovo set comune di regole per linter, che si decide di utilizzare per impostazione predefinita nei nuovi progetti Dart e nell'SDK Flutter. Il set include regole di base (pacchetto lints/core.yaml), regole aggiuntive consigliate (lints/recommended.yaml) e consigli specifici per Flutter (flutter_lints/flutter.yaml). Si consiglia agli utenti di regole pedanti di passare all'utilizzo di un nuovo stile di codifica basato sulle raccomandazioni della documentazione Dart.
  • Nel formattatore sono state apportate ottimizzazioni alla formattazione dei blocchi di codice a cascata, che possono migliorare significativamente le prestazioni di formattazione ed evitare interpretazioni ambigue della proprietà degli elementi dell'espressione. Ad esempio, chiamando "..doIt" nell'espressione "var result = errorState ? foo : bad..doIt()” non riguarda la parte condizionale del blocco “bad”, ma l'intera espressione, quindi in fase di formattazione ora viene separata: var result = errorState ? foo: cattivo ..fallo();
  • Il supporto per i processori Apple M1 (Silicon) è stato aggiunto all'SDK, il che implica sia la possibilità di eseguire Dart VM, utilità e componenti SDK su sistemi con un processore Apple Silicon, sia il supporto per la compilazione di file eseguibili per questi chip.
  • Il comando "dart pub" ha aggiunto il supporto per un nuovo file di servizio ".pubignore", che consente di definire un elenco di file che verranno ignorati durante la pubblicazione di un pacchetto nel repository pub.dev. Queste impostazioni non interferiscono con l'elenco da ignorare “.gitignore” (in alcune situazioni, pub.dev potrebbe voler evitare il trasferimento di file necessari in Git, ad esempio gli script interni utilizzati durante lo sviluppo).
  • È stato fatto del lavoro per migliorare le prestazioni del comando “dart test”, che ora non richiede la ricompilazione dei test dopo aver modificato pubspec se il numero di versione non è cambiato.
  • Il supporto per la compilazione in modalità compatibilità ECMAScript 5 è stato interrotto (la modifica comporterà la perdita di compatibilità con il browser IE11).
  • Le singole utilità stagehand, dartfmt e dart2native sono state dichiarate obsolete, sostituite da comandi integrati richiamati tramite l'utilità dart.
  • Il meccanismo delle VM Native Extensions è stato deprecato. Per richiamare il codice nativo dal codice Dart, si consiglia di utilizzare la nuova Dart FFI (Foreign Function Interface).

Contestualmente è stata presentata un'importante release del framework di interfaccia utente Flutter 2.5, che viene considerato alternativo a React Native e permette, sulla base di un'unica codebase, di rilasciare applicazioni per iOS, Android, Windows, macOS e Linux. piattaforme, nonché creare applicazioni da eseguire nei browser. Sulla base di Flutter è costruita una shell personalizzata per il sistema operativo microkernel Fuchsia sviluppato da Google.

La parte principale del codice Flutter è implementata nel linguaggio Dart e il motore runtime per l'esecuzione delle applicazioni è scritto in C++. Durante lo sviluppo di applicazioni, oltre al linguaggio Dart nativo di Flutter, puoi utilizzare l'interfaccia Dart Foreign Function per chiamare il codice C/C++. Si ottengono prestazioni di esecuzione elevate compilando le applicazioni in codice nativo per le piattaforme di destinazione. In questo caso, non è necessario ricompilare il programma dopo ogni modifica: Dart fornisce una modalità di ricaricamento a caldo che consente di apportare modifiche all'applicazione in esecuzione e valutare immediatamente il risultato.

Principali modifiche in Flutter 2.5:

  • Effettuate significative ottimizzazioni delle prestazioni. Sulle piattaforme iOS e macOS è stata implementata la precompilazione degli shader per l'API grafica Metal. Migliorata l'efficienza dell'elaborazione degli eventi asincroni. Risolto un problema con ritardi quando il Garbage Collector recupera memoria da immagini inutilizzate (ad esempio, durante la riproduzione di una GIF animata di 20 secondi, il numero di operazioni di Garbage Collection è stato ridotto da 400 a 4. Ritardi durante il passaggio di messaggi tra Dart e Objective- C/Swift ridotto al 50% (iOS) o Java/Kotlin (Android) Aggiunto supporto build nativo per sistemi basati sul chip Apple Silicon.
    Sono disponibili il linguaggio Dart 2.14 e il framework Flutter 2.5
  • Per la piattaforma Android è stato stabilito il supporto per l'esecuzione delle applicazioni in modalità a schermo intero. È proseguita l’implementazione del concetto di design “Material You”, presentato come un’opzione di Material Design di nuova generazione. Aggiunto un nuovo stato MaterialState.scrolledUnder, implementata la visualizzazione dinamica delle barre di scorrimento durante il ridimensionamento e proposta una nuova interfaccia per la visualizzazione dei banner di notifica.
  • Le funzionalità del plug-in della fotocamera sono state notevolmente ampliate, aggiungendo strumenti per il controllo dell'autofocus, dell'esposizione, del flash, dello zoom, della riduzione del rumore e della risoluzione.
  • Gli strumenti di sviluppo (DevTools) sono stati migliorati per includere una modalità di ispezione dei widget aggiornata, nonché strumenti per identificare i ritardi di rendering e monitorare la compilazione dello shader.
    Sono disponibili il linguaggio Dart 2.14 e il framework Flutter 2.5
  • Plug-in migliorati per Visual Studio Code e IntelliJ/Android Studio.

Fonte: opennet.ru

Aggiungi un commento