Dart-sproget 2.14 og Flutter-rammen 2.5 er tilgængelige

Google har offentliggjort versionen af programmeringssproget Dart 2.14, som fortsætter udviklingen af den radikalt omarbejdede gren af Dart 2, der adskiller sig fra den oprindelige version af Dart-sproget ved at anvende stærk statisk typificering (typer kan automatisk udledes, så angivelse af typer ikke er obligatorisk, men dynamisk typificering anvendes ikke længere, og den oprindeligt beregnede type fastgøres til variablen og undergår herefter stram typekontrol).

Funktioner ved Dart-sproget:

  • En velkendt og letlæselig syntaks, som er naturlig for programmører med erfaring i JavaScript, C og Java.
  • Sikrer hurtig opstart og høj ydeevne for alle moderne webbrowsere og forskellige typer miljøer, fra mobile enheder til kraftfulde. servere.
  • Mulighed for at definere klasser og interfaces, som muliggør inkapsling og genbrug af eksisterende metoder og data.
  • Angivelse af typer letter fejlfinding og fejlidentifikation, gør koden mere klar og læsbar, og letter videreudvikling og analyse af tredjeparter.
  • Blandt de understøttede typer er: forskellige typer hashes, arrays og lister, queues, numeriske og strenge typer, typer til dato og tid, regulære udtryk (RegExp). Der er mulighed for at oprette egne typer.
  • Til at organisere parallel udførelse anbefales det at bruge klasser med attributten isolate, hvis kode udføres fuldstændigt i et isoleret rum i et separat hukommelsesområde, og interagerer med hovedprocessen ved at sende beskeder.
  • Understøttelse af brug af biblioteker, der letter vedligeholdelse og debugging af store webprojekter. Tredjepartsimplementeringer af funktioner kan tilsluttes som delte biblioteker. Applikationer kan opdeles i dele, og udviklingen af hver del kan overdrages til et separat hold af programmører.
  • Et sæt færdige værktøjer til støtte for udvikling i Dart-sproget, inklusive implementering af værktøjer til dynamisk udvikling og debugging med rettelser af kode i realtid ("edit-and-continue").
  • For easier development in the Dart language, an SDK is provided, along with the package manager pub, the static code analyzer dart_analyzer, a set of libraries, the integrated development environment DartPad, and Dart support plugins for IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2, and Vim.
  • Additional packages with libraries and utilities are distributed through the pub repository, which contains over 20,000 packages.

The main changes in the Dart 2.14 release:

  • A new triple shift operator (>>>) has been added, which, unlike the operator (>>), performs a logical shift instead of an arithmetic shift, working without regard to the sign bit (the shift is carried out without separating positive and negative numbers).
  • The restriction on type arguments, which did not allow generic function types to be used as arguments, has been lifted. For example, you can now specify: late List<T Function(T)> idFunctions; var callback = [(T value) => value]; late S Function<S extends T Function(T)>(S) f;
  • It is now allowed to specify type arguments in annotations such as @Deprecated. For example, you can now specify: @TypeHelper(42, "The meaning").
  • Static methods hash, hashAll, and hashAllUnordered have been added to the Object class in the core library. In the DateTime class, the handling of local time when converting hours between daylight saving time and standard time, which is not a multiple of one hour (for example, Australia uses a 30-minute offset), has been improved. The ffi package now supports an arena memory allocation mechanism that automatically releases resources. The ffigen package now allows for generating typedef definitions of Dart types from C.
  • 250 af de mest populære pakker fra pub.dev-repositoriet og 94% af top-1000 er oversat til brug af den sikre tilstand for værdien «Null» (null safety), som forhindrer nedbrud forårsaget af forsøg på at bruge variabler, hvis værdier ikke er definerede og sat til «Null». Den sikre tilstand indebærer, at variabler ikke kan have udefinerede værdier, medmindre de eksplidt tildeles værdien null. I denne tilstand tages variabeltyper strengt i betragtning, hvilket giver compileren mulighed for at anvende yderligere optimeringer. Typeoverensstemmelse kontrolleres på kompileringstidspunktet; for eksempel vil der blive genereret en fejl, hvis der forsøges at tildele værdien «Null» til en variabel med en type, der ikke tillader en udefineret tilstand, såsom «int».
  • Der er foreslået ensartede sæt regler til kodeskanneren (linter), der samtidig understøtter kontrol af overholdelse af stilretningslinjer for både Dart og Flutter-rammen. Af historiske årsager adskilte reglerne for kodestil i Flutter og Dart sig, og der var desuden to sæt regler til Dart i brug — pedantiske fra Google og regler fra Dart-udviklerfællesskabet. I Dart 2.14 er der præsenteret et nyt fælles sæt regler til linter, som er besluttet at anvende som standard i nye Dart-projekter og i Flutter SDK. Sættet inkluderer grundlæggende regler (pakken lints/core.yaml), anbefalede yderligere regler (lints/recommended.yaml) samt specifikke Flutter-anbefalinger (flutter_lints/flutter.yaml). Brugere af de pedantiske regler anbefales at overgå til den nye kodestil baseret på anbefalingerne i Dart-dokumentationen.
  • Formatteren har fået optimeringer til formatering af kaskadeblokke, som væsentligt øger formateringsydelsen og forhindrer uklar fortolkning af tilhørsforholdet i udtrykkene. For eksempel vedrører kaldet «..doIt» i udtrykket «var result = errorState ? foo : bad..doIt()» ikke den betingede del af blokken «bad», men hele udtrykket; derfor adskilles det nu ved formatering: var result = errorState ? foo : bad ..doIt();
  • SDK'en har fået støtte til Apple M1-processorer (Silicon), hvilket muliggør både kørsel af Dart VM, værktøjer og SDK-komponenter på systemer med Apple Silicon-processorer, samt understøttelse af kompilering af eksekverbare filer til de nævnte chips.
  • Teamet "dart pub" har fået tilføjet støtte for den nye hjælpefil " .pubignore", som muliggør at bestemme en liste over filer, der skal udelades ved offentliggørelse af pakken i repositoryet pub.dev. De angivne indstillinger overlapper ikke med listen over ignorerede filer " .gitignore " (i nogle situationer kræves det i pub.dev at undgå at overføre filer, der er nødvendige i Git, såsom interne scripts, der anvendes under udvikling).
  • Der er arbejdet på at forbedre ydeevnen for teamet "dart test", som nu ikke kræver genkompilering af tests efter ændring af pubspec, hvis versionsnumret ikke er ændret.
  • Støtten til kompilering i " kompatibilitetsmode med ECMAScript 5 er afsluttet (ændringen vil føre til tab af kompatibilitet med browseren IE11).
  • De enkelte værktøjer stagehand, dartfmt og dart2native er erklæret forældede, og de er blevet erstattet af indbyggede kommandoer, der kan kaldes via dart-udnyttelsen.
  • VM Native Extensions er blevet klassificeret som forældede. Det anbefales at bruge det nye Dart FFI (Foreign Function Interface) til at kalde nativ kode fra Dart-kode.

Samtidig blev der præsenteret en betydelig udgivelse af rammeværket til opbygning af brugergrænseflader, Flutter 2.5, som ses som et alternativ til React Native og muliggør at udgive applikationer til iOS, Android, Windows, macOS og Linux platforme baseret på én kodebase samt skabe applikationer til kørsel i browsere. Flutter er blevet anvendt til at opbygge den brugerdefinerede grænseflade til Googles mikrokernel-operativsystem, Fuchsia.

Den primære del af Flutter-koden er implementeret på Dart-sproget, mens runtime-motoren til at køre applikationer er skrevet i C++. Ved udvikling af applikationer kan man ud over det native Dart-sprog anvende Dart Foreign Function Interface til at kalde C/C++-kode. Høj ydeevne opnås ved at kompilere applikationer til maskinkode for de målrettede platforme. Programmet behøver ikke at blive genkompileret efter hver ændring — Dart tilbyder en hot reload-tilstand, der gør det muligt at foretage ændringer i den kørende applikation og straks evaluere resultatet.

De vigtigste ændringer i Flutter 2.5:

  • Der er blevet foretaget betydelige optimeringer af ydeevnen. På iOS- og macOS-platforme er der implementeret forudkompilering af shaders til Metal-grafik-API'et. Effektiviteten af behandlingen af asynkrone begivenheder er forbedret. Problemet med forsinkelser under frigivelsen af hukommelse af garbage collectoren fra ubrugte billeder (for eksempel under afspilning af en 20 sekunders animeret GIF, hvor antallet af garbage collection operationer er reduceret fra 400 til 4) er blevet løst. Forsinkelser ved meddelelsesoverførsel mellem Dart og Objective-C/Swift (iOS) eller Java/Kotlin (Android) er sænket med op til 50%. Der er tilføjet støtte til native compilering for systemer baseret på Apple Silicon-chippen.
    Dart-sproget 2.14 og Flutter-rammen 2.5 er tilgængelige
  • For Android-platformen er der blevet etableret støtte for fuldskærmstilstand for applikationer. Implementeringen af konceptet 'Material You', præsenteret som en variant af Material Design i næste generation, er fortsat. Der er tilføjet en ny tilstand, MaterialState.scrolledUnder, dynamisk visning af rullelister ved ændring af størrelse, og et nyt interface til visning af meddelelsesbannere er blevet foreslået.
  • Funktionaliteten af kamera-plugin'et er blevet betydeligt udvidet med værktøjer til styring af autofokus, eksponering, blitz, zoom, støjreduktion og opløsning.
  • Udviklerværktøjerne (DevTools) er forbedret med en opdateret widget-inspektionsmode, samt værktøjer til at identificere forsinkelser i rendering og sporing af shader-kompilering.
    Dart-sproget 2.14 og Flutter-rammen 2.5 er tilgængelige
  • Plugins til Visual Studio Code og IntelliJ/Android Studio er blevet forbedret.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster