Google har publicerat en release av programmeringssprÄket Dart 2.14, som fortsÀtter utvecklingen av den radikalt omarbetade versionen av Dart 2, som skiljer sig frÄn den ursprungliga versionen av sprÄket Dart genom anvÀndningen av stark statisk typning (typer kan automatiskt hÀrledas, sÄ typangivelse Àr inte obligatorisk, men dynamisk typning anvÀnds inte lÀngre och den ursprungligen hÀrledda typen knyts till variabeln och tillÀmpas vidare med strikt typkontroll).
Egenskaper hos Dart-sprÄket:
- Ett bekant och enkelt syntax, naturligt för programmerare som anvÀnder JavaScript, C och Java.
- Ger snabb start 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öjlighet att definiera klasser och grÀnssnitt, vilket möjliggör inkapsling och ÄteranvÀndning av befintliga metoder och data.
- Typangivelse förenklar felsökning och felupptÀckning, gör koden tydligare och mer lÀsbar, och förenklar vidare utveckling och analys av externa utvecklare.
- Bland de stödda typerna finns olika typer av hash, arrayer och listor, köer, numeriska och strÀngtyper, typer för att definiera datum och tid, samt reguljÀra uttryck (RegExp). Det finns möjlighet att skapa egna typer.
- För att organisera parallell exekvering rekommenderas att anvÀnda klasser med attributet isolate, vars kod körs helt i ett isolerat utrymme i ett separat minnesomrÄde och interagerar med huvudprocessen via meddelandeutskick.
- Stöd för att anvÀnda bibliotek som underlÀttar underhÄll och felsökning av stora webprojekt. Tredjepartsimplementeringar av funktioner kan kopplas in som delade bibliotek. Applikationer kan delas upp i delar och utvecklingen av varje del kan överlÄtas till separata programmeringsteam.
- Ett set av verktyg för att stödja utveckling med Dart-sprĂ„ket, inklusive implementeringen av medel för dynamisk utveckling och felsökning med möjlighet att rĂ€tta kod i realtid (âedit-and-continueâ).
- För att underlÀtta utvecklingen med Dart-sprÄket erbjuds SDK, paketförvaltaren pub, statiska kodanalysatorn dart_analyzer, en uppsÀttning bibliotek, den integrerade utvecklingsmiljön DartPad och plugins för IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 och Vim.
- Ytterligare paket med bibliotek och verktyg distribueras via pub-repositoriet, som har över 20 000 paket.
De viktigaste förÀndringarna i Dart 2.14:
- En ny operator för tredubblad skiftning (>>>) har lagts till, som i motsats till operatorn (>>) utför en logisk skiftning, som fungerar utan att ta hÀnsyn till signeringsbit (skiftet görs utan att dela upp positiva och negativa tal).
- BegrÀnsningen pÄ typargument har tagits bort, vilket tidigare hindrade anvÀndningen av generiska typfunktioner som argument med typ. Till exempel kan man nu ange: late List<T Function(T)> idFunctions; var callback = [(T value) => value]; late S Function<S extends T Function(T)>(S) f;
- Det Àr nu tillÄtet att ange argument med typer i anmÀrkningar, som @Deprecated. Till exempel kan man nu ange: @TypeHelper(42, "The meaning")
- I det standardbiblioteket (core) har statiska metoder hash, hashAll och hashAllUnordered lagts till i klassen Object. I klassen DateTime har behandlingen av lokal tid förbÀttrats nÀr man konverterar mellan sommar- och vintertid med tidsförskjutningar som inte Àr multipler av en timme (till exempel anvÀnds en förskjutning pÄ 30 minuter i Australien). I paketet ffi har stöd för minnesallokeringsmekanismen arena lagts till, som automatiskt frigör resurser. I paketet ffigen har möjligheten att generera typedef-definitioner av Dart-typer frÄn C-sprÄket lagts till.
- 250 av de mest populÀra paketen frÄn pub.dev-repositoriet och 94 % av topp-1000 har översatts för att anvÀnda nullsÀkerhetslÀget, vilket förhindrar krascher som orsakas av försök att anvÀnda variabler vars vÀrde inte Àr definierat och som Àr instÀllt pÄ "null". LÀge innebÀr att variabler inte kan ha odefinierade vÀrden om de inte uttryckligen tilldelas vÀrdet null. I lÀget beaktas variabeltyper strikt, vilket gör att kompilatorn kan tillÀmpa ytterligare optimeringar. TypöverensstÀmmelse kontrolleras vid kompilering, till exempel, försöker man tilldela vÀrdet "null" till en variabel av typ som inte tillÄter odefinierat tillstÄnd, som "int", kommer ett fel att visas.
- Ett enhetligt regelpaket för kodanalysatorn (linter) har föreslagits, vilket möjliggör samtidig stöd för att kontrollera efterlevnaden av stilrekommendationerna för kodformat i Dart och Flutter-ramverket. Av historiska skĂ€l har kodformatreglerna för Flutter och Dart varit olika, och dessutom har det funnits tvĂ„ uppsĂ€ttningar regler för Dart â de pedantiska frĂ„n Google och regler frĂ„n Dart-utvecklarsamhĂ€llet. I Dart 2.14 presenteras en ny gemensam uppsĂ€ttning regler för linter, som kommer att tillĂ€mpas som standard i nya Dart-projekt och i Flutter SDK. Paketet inkluderar grundlĂ€ggande regler (paket lints/core.yaml), rekommenderade ytterligare regler (lints/recommended.yaml) och specifika rekommendationer för Flutter (flutter_lints/flutter.yaml). AnvĂ€ndare av de pedantiska reglerna rekommenderas att övergĂ„ till den nya kodningsstilen, baserad pĂ„ rekommendationer frĂ„n Dart-dokumentationen.
- Det har gjorts optimeringar i formatteraren för formateringen av kedjeblock av kod, vilket avsevÀrt ökar formatteringsprestandan och förhindrar dubbeltydighet nÀr det gÀller tillhörigheten av uttryckselement. Till exempel Àr anropet "..doIt" i uttrycket "var result = errorState ? foo : bad..doIt()" relaterat till hela uttrycket snarare Àn den villkorliga delen av blocket "bad", sÄ vid formatering delas det nu upp: var result = errorState ? foo : bad ..doIt();
- SDK:n har fÄtt stöd för Apple M1-processorer (Silicon), vilket omfattar bÄde möjligheten att köra Dart VM, verktyg och SDK-komponenter pÄ system med Apple Silicon-processorer samt stöd för kompilering av körbara filer för de angivna chipt.
- Team "dart pub" har fÄtt stöd för den nya servicefilen ".pubignore", som gör det möjligt att definiera en lista över filer som ska utelÀmnas vid publicering av paket pÄ pub.dev. De angivna instÀllningarna överlappar inte med listan över ignorerade filer i ".gitignore" (i vissa situationer krÀvs det i pub.dev att filer som behövs i Git, exempelvis interna skript som anvÀnds under utveckling, inte skickas).
- Arbetet med att förbÀttra prestandan hos kommandot "dart test" har genomförts, vilket nu inte lÀngre krÀver ny kompilering av tester efter Àndringar i pubspec om versionsnumret inte har Àndrats.
- Stödet för kompilering i lÀge kompatibilitet med ECMAScript 5 har upphört (denna Àndring kommer att leda till förlust av kompatibilitet med webblÀsaren IE11).
- De separata verktygen stagehand, dartfmt och dart2native har förklarats som förÄldrade, ersatta av inbyggda kommandon som anropas via dart-verktyget.
- VM Native Extensions har flyttats till kategorin förÄldrat. För att anropa inhemsk kod frÄn Dart-kod rekommenderas att anvÀnda det nya grÀnssnittet Dart FFI (Foreign Function Interface).
Samtidigt presenterades en betydande version av ramverket för anvÀndargrÀnssnitt Flutter 2.5, som ses som ett alternativ till React Native och gör det möjligt att slÀppa appar för plattformar som iOS, Android, Windows, macOS och Linux baserat pÄ en och samma kodbas, samt att skapa appar som körs i webblÀsare. Flutter anvÀnds för att bygga anvÀndargrÀnssnittet för Googles mikrohjÀrnaoperativsystem Fuchsia.
Större delen av Flutter-koden Ă€r skriven i programmeringssprĂ„ket Dart, och runtime-motorn för att köra applikationer Ă€r skriven i C++. Vid apputveckling kan man förutom det inhemska sprĂ„ket Dart ocksĂ„ anvĂ€nda Dart Foreign Function Interface för att anropa C/C++-kod. Hög körprestanda uppnĂ„s genom att applikationer kompileras till maskinkod för de mĂ„lplattformar som anvĂ€nds. Programmet behöver inte kompileras om efter varje Ă€ndring â Dart erbjuder en funktion för snabb omstart som gör det möjligt att göra Ă€ndringar i en aktiv applikation och omedelbart se resultatet.
De huvudsakliga Àndringarna i Flutter 2.5:
- Betydande prestandaoptimeringar har genomförts. För plattformarna iOS och macOS har förkompilering av shader för grafik-API:et Metal implementerats. Effektiviteten vid hantering av asynkrona hÀndelser har ökat. Problemet med fördröjningar vid minnesfrisÀttning frÄn icke-anvÀnda bilder i samband med skrÀpkörning har lösts (till exempel har antalet skrÀpkörningsoperationer under uppspelning av en 20 sekunder lÄng animerad GIF minskat frÄn 400 till 4. Fördröjningarna vid meddelandeöverföring mellan Dart och Objective-C/Swift (iOS) eller Java/Kotlin (Android) har minskat med upp till 50%. Stöd för inhemsk kompilering för system baserade pÄ Apple Silicon-chip har lagts till.

- För Android-plattformen har stöd för appar i helskÀrmslÀge införts. Implementeringen av konceptet "Material You", som presenteras som en variant av nÀsta generations Material Design, har fortsatt. Ett nytt tillstÄnd, MaterialState.scrolledUnder, har lagts till och dynamisk visning av rullningsfÀlt vid storleksÀndringar har genomförts, liksom ett nytt grÀnssnitt för visning av meddelandebanners.
- Möjligheterna för kamerapluginet har betydligt utvidgats, vilket nu inkluderar verktyg för att styra autofokus, exponering, blixt, zoom, brusreducering och upplösning.
- Utvecklarverktygen (DevTools) har förbÀttrats med en uppdaterad widget-inspektionslÀge, samt verktyg för att identifiera renderingsfördröjningar och spÄra kompileringen av shadere.

- Plugins för Visual Studio Code och IntelliJ/Android Studio har förbÀttrats.
KĂ€lla: opennet.ru


