Dart 2.14-språk och Flutter 2.5-ramverk tillgängliga

Google har publicerat lanseringen av programmeringsspråket Dart 2.14, som fortsätter utvecklingen av en radikalt omdesignad gren av Dart 2, som skiljer sig från originalversionen av Dart-språket genom att använda stark statisk typning (typer kan härledas automatiskt, så att specificera typer är inte nödvändigt, men dynamisk typning används inte längre och initialt beräknad tilldelas typen till variabeln och strikt typkontroll tillämpas därefter).

Funktioner i Dart-språket:

  • Bekant och lättläst syntax, naturligt för JavaScript-, C- och Java-programmerare.
  • Säkerställer snabb lansering och hög prestanda för alla moderna webbläsare och olika typer av miljöer, från bärbara enheter till kraftfulla servrar.
  • Möjligheten att definiera klasser och gränssnitt som tillåter inkapsling och återanvändning av befintliga metoder och data.
  • Att specificera typer gör det lättare att felsöka och identifiera fel, gör koden tydligare och mer läsbar och förenklar dess modifiering och analys av tredjepartsutvecklare.
  • Typer som stöds inkluderar: olika typer av hash, arrayer och listor, köer, numeriska och strängtyper, typer för att bestämma datum och tid, reguljära uttryck (RegExp). Det går att skapa egna typer.
  • För att organisera parallell exekvering föreslås att klasser med isolate-attributet används, vars kod exekveras helt i isolerat utrymme i ett separat minnesområde, och interagerar med huvudprocessen genom att skicka meddelanden.
  • Stöd för användning av bibliotek som förenklar support och felsökning av stora webbprojekt. Tredjepartsimplementeringar av funktioner kan inkluderas i form av delade bibliotek. Ansökningar kan delas upp i delar och anförtro utvecklingen av varje del till ett separat team av programmerare.
  • En uppsättning färdiga verktyg för att stödja utveckling i Dart-språket, inklusive implementering av dynamisk utveckling och felsökningsverktyg med kodkorrigering i farten ("redigera-och-fortsätt").
  • För att förenkla utvecklingen i Dart-språket kommer den med en SDK, en pakethanterarpub, en statisk kodanalysator dart_analyzer, en uppsättning bibliotek, en integrerad utvecklingsmiljö DartPad och Dart-aktiverade plugins för IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 och Vim.
  • Ytterligare paket med bibliotek och verktyg distribueras genom pubförrådet, som har mer än 20 tusen paket.

Stora ändringar i Dart 2.14-versionen:

  • En ny trippelskiftsoperator (>>>) har lagts till, som till skillnad från ">>"-operatorn inte utför en aritmetik, utan ett logiskt skift som fungerar utan att ta hänsyn till teckenbiten (skiftningen utförs utan att delas upp i positiva och negativa siffror).
  • Tog bort begränsningen för typargument som hindrade generiska funktionstyper från att användas som ett typargument. Nu kan du till exempel ange: sen lista (T)>idFunctions; var återuppringning = [ (T-värde) => värde]; sen S Funktion (T)>(S) f;
  • Tillåt angivande av argument med typer i annoteringar som @Föråldrat. Till exempel kan du nu ange: @TypeHelper (42, "Meningen")
  • De statiska metoderna hash, hashAll och hashAllUordered har lagts till i standardbiblioteket (kärnan) i klassen Object. Klassen DateTime har förbättrat hanteringen av lokal tid vid konvertering av klockor mellan sommar- och vintertid som inte är delbara med en timme (till exempel i Australien används en offset på 30 minuter). Ffi-paketet har lagt till stöd för arena-minnesallokeringsmekanismen, som automatiskt frigör resurser. Paketet ffigen har lagt till möjligheten att generera typedef-definitioner av Dart-typer från C-språket.
  • De 250 mest populära paketen från pub.dev-förrådet och 94 % av topp-1000 har bytts till att använda nollsäkerhetsläget, vilket kommer att undvika krascher orsakade av försök att använda variabler vars värde är odefinierat och satt till Null " Läget innebär att variabler inte kan ha nullvärden om de inte uttryckligen tilldelas värdet null. Läget respekterar strikt variabeltyper, vilket gör att kompilatorn kan tillämpa ytterligare optimeringar. Typöverensstämmelse kontrolleras vid kompilering, till exempel, om du försöker tilldela värdet "Null" till en variabel med en typ som inte innebär odefinierat tillstånd, såsom "int", kommer ett fel att visas.
  • Enhetliga uppsättningar regler för kodanalysatorn (linter) föreslås, vilket ger samtidigt stöd för att kontrollera efterlevnaden av riktlinjerna för kodstil för Dart och Flutter-ramverket. Av historiska skäl var kodningsreglerna för Flutter och Dart olika, dessutom fanns det två uppsättningar regler i användning för Dart - pedantiska från Google och regler från Dart-utvecklargemenskapen. Dart 2.14 introducerar en ny gemensam uppsättning regler för linter, som är beslutad att användas som standard i nya Dart-projekt och i Flutter SDK. Uppsättningen innehåller kärnregler (paketet lints/core.yaml), rekommenderade ytterligare regler (lints/recommended.yaml) och Flutter-specifika rekommendationer (flutter_lints/flutter.yaml). Användare av pedantiska regler rekommenderas att byta till att använda en ny kodningsstil baserat på rekommendationerna från Dart-dokumentationen.
  • I formatterare har optimeringar gjorts för formateringen av kaskadkodblock, vilket avsevärt kan förbättra formateringsprestandan och undvika tvetydig tolkning av äganderätten till uttryckselement. Till exempel att anropa "..doIt" i uttrycket "var result = errorState ? foo : bad..doIt()” berör inte den villkorliga delen av det “dåliga” blocket, utan hela uttrycket, så vid formatering separeras det nu: var result = errorState ? foo : dålig ..doIt();
  • Stöd för Apple M1 (Silicon)-processorer har lagts till SDK, vilket innebär både möjligheten att köra Dart VM, verktyg och SDK-komponenter på system med en Apple Silicon-processor, och stöd för att kompilera körbara filer för dessa chips.
  • Kommandot "dart pub" har lagt till stöd för en ny tjänstfil ".pubignore", som låter dig definiera en lista över filer som kommer att hoppas över när ett paket publiceras till pub.dev-förrådet. Dessa inställningar stör inte ignoreringslistan ".gitignore" (i vissa situationer kanske pub.dev vill undvika att överföra filer som behövs i Git, till exempel interna skript som används under utveckling).
  • Arbete har gjorts för att förbättra prestandan för kommandot "dart test", som nu inte kräver omkompilering av tester efter ändrad pubspec om versionsnumret inte har ändrats.
  • Stöd för kompilering i ECMAScript 5-kompatibilitetsläge har upphört (ändringen kommer att resultera i förlust av kompatibilitet med webbläsaren IE11).
  • De individuella verktygen stagehand, dartfmt och dart2native har förklarats föråldrade, ersatta av inbyggda kommandon som anropas via dartverktyget.
  • Mekanismen för VM Native Extensions har fasats ut. För att anropa inbyggd kod från Dart-kod, rekommenderas att använda den nya Dart FFI (Foreign Function Interface).

Samtidigt presenterades en betydande utgåva av ramverket för användargränssnittet Flutter 2.5, som anses vara ett alternativ till React Native och gör det möjligt att, baserat på en kodbas, släppa applikationer för iOS, Android, Windows, macOS och Linux plattformar, samt skapa applikationer att köra i webbläsare. Ett anpassat skal för Fuchsia-mikrokärnoperativsystemet utvecklat av Google är byggt på basis av Flutter.

Huvuddelen av Flutter-koden är implementerad i Dart-språket, och runtime-motorn för att köra applikationer är skriven i C++. När du utvecklar applikationer kan du, förutom Flutters inhemska Dart-språk, använda Dart Foreign Function-gränssnittet för att anropa C/C++-kod. Hög exekveringsprestanda uppnås genom att kompilera applikationer till inbyggd kod för målplattformar. I det här fallet behöver programmet inte kompileras om efter varje ändring - Dart tillhandahåller ett hot reload-läge som gör att du kan göra ändringar i en applikation som körs och omedelbart utvärdera resultatet.

Stora förändringar i Flutter 2.5:

  • Gjorde betydande prestandaoptimeringar. På iOS- och macOS-plattformarna har förkompilering av shaders för Metal graphics API implementerats. Förbättrad effektivitet vid bearbetning av asynkrona händelser. Löste ett problem med förseningar när sopsamlaren tar tillbaka minne från oanvända bilder (till exempel under uppspelning av en 20-sekunders animerad GIF minskades antalet sopuppsamlingsåtgärder från 400 till 4. Förseningar när meddelanden skickas mellan Dart och Objective- C/Swift reducerades till 50 % (iOS) eller Java/Kotlin (Android) Lade till inbyggt byggstöd för system baserade på Apple Silicon-chippet.
    Dart 2.14-språk och Flutter 2.5-ramverk tillgängliga
  • För Android-plattformen har stöd för att köra applikationer i helskärmsläge etablerats. Implementeringen av designkonceptet "Material You", som presenterades som nästa generations materialdesignalternativ, fortsatte. Lade till ett nytt tillstånd MaterialState.scrolledUnder, implementerade dynamisk visning av rullningslister vid storleksändring och föreslog ett nytt gränssnitt för att visa meddelandebanner.
  • Funktionerna för kameraplugin har utökats avsevärt och lagt till verktyg för att styra autofokus, exponering, blixt, zoom, brusreducering och upplösning.
  • Utvecklarverktyg (DevTools) har förbättrats för att inkludera ett uppdaterat widgetinspektionsläge, såväl som verktyg för att identifiera renderingsförseningar och spåra shader-kompilering.
    Dart 2.14-språk och Flutter 2.5-ramverk tillgängliga
  • Förbättrade plugins för Visual Studio Code och IntelliJ/Android Studio.

Källa: opennet.ru

Lägg en kommentar