Dart 2.14-språk og Flutter 2.5-rammeverk tilgjengelig

Google har publisert utgivelsen av programmeringsspråket Dart 2.14, som fortsetter utviklingen av en radikalt redesignet gren av Dart 2, som skiller seg fra originalversjonen av Dart-språket ved bruk av sterk statisk skriving (typer kan utledes automatisk, så å spesifisere typer er ikke nødvendig, men dynamisk skriving brukes ikke lenger, og først beregnet blir typen tildelt variabelen og streng typekontroll blir deretter brukt).

Funksjoner i Dart-språket:

  • Kjent og lett å lære syntaks, naturlig for JavaScript-, C- og Java-programmerere.
  • Sikrer rask lansering og høy ytelse for alle moderne nettlesere og ulike typer miljøer, fra bærbare enheter til kraftige servere.
  • Evnen til å definere klasser og grensesnitt som tillater innkapsling og gjenbruk av eksisterende metoder og data.
  • Å spesifisere typer gjør det lettere å feilsøke og identifisere feil, gjør koden klarere og mer lesbar, og forenkler modifikasjon og analyse av tredjepartsutviklere.
  • Støttede typer inkluderer: ulike typer hasher, matriser og lister, køer, numeriske og strengtyper, typer for å bestemme dato og klokkeslett, regulære uttrykk (RegExp). Det er mulig å lage dine egne typer.
  • For å organisere parallell utførelse foreslås det å bruke klasser med isolate-attributtet, hvis kode kjøres helt i isolert rom i et eget minneområde, og samhandler med hovedprosessen ved å sende meldinger.
  • Støtte for bruk av biblioteker som forenkler støtte og feilsøking av store nettprosjekter. Tredjeparts implementeringer av funksjoner kan inkluderes i form av delte biblioteker. Applikasjoner kan deles inn i deler og overlate utviklingen av hver del til et eget team av programmerere.
  • Et sett med ferdige verktøy for å støtte utvikling i Dart-språket, inkludert implementering av dynamisk utvikling og feilsøkingsverktøy med kodekorreksjon i farten ("rediger-og-fortsett").
  • For å forenkle utviklingen i Dart-språket, kommer den med en SDK, en pakkebehandlingspub, en statisk kodeanalysator dart_analyzer, et sett med biblioteker, et integrert utviklingsmiljø DartPad og Dart-aktiverte plugins for IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 og Vim.
  • Ytterligere pakker med biblioteker og verktøy distribueres gjennom publageret, som har mer enn 20 tusen pakker.

Store endringer i Dart 2.14-utgivelsen:

  • En ny trippelskiftoperator (>>>) er lagt til, som i motsetning til ">>"-operatoren ikke utfører en aritmetikk, men et logisk skifte som fungerer uten å ta hensyn til fortegnsbiten (skiftet utføres uten å dele seg i positive og negative tall).
  • Fjernet begrensningen på typeargumenter som forhindret at generiske funksjonstyper ble brukt som et typeargument. For eksempel, nå kan du spesifisere: sen liste (T)>idFunctions; var tilbakeringing = [ (T-verdi) => verdi]; sen S Funksjon (T)>(S) f;
  • Tillat å spesifisere argumenter med typer i merknader som @Utviklet. For eksempel kan du nå spesifisere: @TypeHelper (42, "Betydningen")
  • De statiske metodene hash, hashAll og hashAllUordered er lagt til standardbiblioteket (kjerne) i Object-klassen. DateTime-klassen har forbedret håndtering av lokal tid ved konvertering av klokker mellom sommer- og vintertid som ikke er delbare med én time (for eksempel i Australia brukes en offset på 30 minutter). Ffi-pakken har lagt til støtte for arena-minnetildelingsmekanismen, som automatisk frigjør ressurser. ffigen-pakken har lagt til muligheten til å generere typedef-definisjoner av Dart-typer fra C-språket.
  • De 250 mest populære pakkene fra pub.dev-depotet og 94 % av topp-1000 har blitt byttet til å bruke «nullsikkerhet»-modus, som vil unngå krasj forårsaket av forsøk på å bruke variabler hvis verdi er udefinert og satt til «Null». " " Modusen innebærer at variabler ikke kan ha nullverdier med mindre de eksplisitt er tildelt verdien null. Modusen respekterer strengt variabeltyper, noe som lar kompilatoren bruke ytterligere optimaliseringer. Typekompatibilitet kontrolleres på kompileringstidspunktet, hvis du for eksempel prøver å tilordne verdien "Null" til en variabel med en type som ikke antyder udefinert tilstand, for eksempel "int", vil en feil vises.
  • Det foreslås enhetlige sett med regler for kodeanalysatoren (linter), som gir samtidig støtte for å kontrollere samsvar med retningslinjer for kodestil for Dart og Flutter-rammeverket. Av historiske årsaker var kodereglene for Flutter og Dart forskjellige, i tillegg var det to sett med regler i bruk for Dart - pedantiske fra Google og regler fra Dart-utviklerfellesskapet. Dart 2.14 introduserer et nytt felles sett med regler for linter, som er besluttet å brukes som standard i nye Dart-prosjekter og i Flutter SDK. Settet inkluderer kjerneregler (package lints/core.yaml), anbefalte tilleggsregler (lints/recommended.yaml) og Flutter-spesifikke anbefalinger (flutter_lints/flutter.yaml). Brukere av pedantiske regler anbefales å bytte til å bruke en ny kodestil basert på anbefalingene fra Dart-dokumentasjonen.
  • I formatering er det gjort optimaliseringer av formateringen av kaskadekodeblokker, noe som kan forbedre formateringsytelsen betydelig og unngå tvetydig tolkning av eierskapet til uttrykkselementer. For eksempel å kalle "..doIt" i uttrykket "var result = errorState ? foo : bad..doIt()" gjelder ikke den betingede delen av "bad"-blokken, men hele uttrykket, så ved formatering er det nå atskilt: var result = errorState ? foo : dårlig ..gjør det();
  • Støtte for Apple M1 (Silicon)-prosessorer er lagt til SDK, noe som innebærer både muligheten til å kjøre Dart VM, verktøy og SDK-komponenter på systemer med en Apple Silicon-prosessor, og støtte for kompilering av kjørbare filer for disse brikkene.
  • Kommandoen "dart pub" har lagt til støtte for en ny tjenestefil ".pubignore", som lar deg definere en liste over filer som vil bli hoppet over når du publiserer en pakke til pub.dev-depotet. Disse innstillingene forstyrrer ikke ignoreringslisten ".gitignore" (i noen situasjoner vil pub.dev kanskje unngå å overføre filer som trengs i Git, for eksempel interne skript som brukes under utvikling).
  • Det er gjort arbeid for å forbedre ytelsen til kommandoen "dart test", som nå ikke krever rekompilering av tester etter endring av pubspec hvis versjonsnummeret ikke er endret.
  • Støtte for kompilering i ECMAScript 5-kompatibilitetsmodus er avviklet (endringen vil resultere i tap av kompatibilitet med IE11-nettleseren).
  • De individuelle verktøyene stagehand, dartfmt og dart2native har blitt erklært foreldet, erstattet av innebygde kommandoer kalt gjennom dart-verktøyet.
  • Mekanismen for VM Native Extensions er avviklet. For å ringe innfødt kode fra Dart-kode, anbefales det å bruke den nye Dart FFI (Foreign Function Interface).

Samtidig ble det presentert en betydelig utgivelse av rammeverket for brukergrensesnittet Flutter 2.5, som anses som et alternativ til React Native og lar, basert på én kodebase, gi ut applikasjoner for iOS, Android, Windows, macOS og Linux plattformer, samt lage applikasjoner som kan kjøres i nettlesere. Et tilpasset skall for Fuchsia-mikrokjerneoperativsystemet utviklet av Google er bygget på grunnlag av Flutter.

Hoveddelen av Flutter-koden er implementert i Dart-språket, og kjøretidsmotoren for utføring av applikasjoner er skrevet i C++. Når du utvikler applikasjoner, i tillegg til Flutters opprinnelige Dart-språk, kan du bruke Dart Foreign Function-grensesnittet til å kalle C/C++-kode. Høy utførelsesytelse oppnås ved å kompilere applikasjoner til innebygd kode for målplattformer. I dette tilfellet trenger ikke programmet å bli kompilert på nytt etter hver endring - Dart gir en hot reload-modus som lar deg gjøre endringer i en kjørende applikasjon og umiddelbart evaluere resultatet.

Store endringer i Flutter 2.5:

  • Gjorde betydelige ytelsesoptimaliseringer. På iOS- og macOS-plattformene er forhåndskompilering av shaders for Metal graphics API implementert. Forbedret effektivitet ved behandling av asynkrone hendelser. Løste et problem med forsinkelser når søppeloppsamleren gjenvinner minne fra ubrukte bilder (for eksempel, under avspilling av en 20-sekunders animert GIF, ble antallet søppelinnsamlingsoperasjoner redusert fra 400 til 4. Forsinkelser ved sending av meldinger mellom Dart og Objective- C/Swift ble redusert til 50 % (iOS) eller Java/Kotlin (Android) Lagt til innebygd byggestøtte for systemer basert på Apple Silicon-brikken.
    Dart 2.14-språk og Flutter 2.5-rammeverk tilgjengelig
  • For Android-plattformen er det etablert støtte for å kjøre applikasjoner i fullskjermmodus. Implementeringen av "Material You"-designkonseptet, presentert som et neste generasjons alternativ for materialdesign, fortsatte. Lagt til en ny tilstand MaterialState.scrolledUnder, implementerte dynamisk visning av rullefelt ved endring av størrelse, og foreslo et nytt grensesnitt for visning av varslingsbannere.
  • Funksjonene til kameraplugin-modulen er betydelig utvidet, og har lagt til verktøy for å kontrollere autofokus, eksponering, blits, zoom, støyreduksjon og oppløsning.
  • Utviklerverktøy (DevTools) har blitt forbedret for å inkludere en oppdatert widgetinspeksjonsmodus, samt verktøy for å identifisere gjengivelsesforsinkelser og sporing av shader-kompilering.
    Dart 2.14-språk og Flutter 2.5-rammeverk tilgjengelig
  • Forbedrede plugins for Visual Studio Code og IntelliJ/Android Studio.

Kilde: opennet.ru

Legg til en kommentar