Dart 2.14-taal en Flutter 2.5-framework beschikbaar

Google heeft de release gepubliceerd van de programmeertaal Dart 2.14, die de ontwikkeling voortzet van een radicaal opnieuw ontworpen tak van Dart 2, die verschilt van de originele versie van de Dart-taal door het gebruik van sterk statisch typen (typen kunnen automatisch worden afgeleid, dus het specificeren van typen is niet nodig, maar dynamisch typen wordt niet langer gebruikt en aanvankelijk wordt berekend dat het type aan de variabele wordt toegewezen en vervolgens wordt strikte typecontrole toegepast).

Kenmerken van de Dart-taal:

  • Bekende en gemakkelijk te leren syntaxis, natuurlijk voor JavaScript-, C- en Java-programmeurs.
  • Garandeert een snelle lancering en hoge prestaties voor alle moderne webbrowsers en verschillende soorten omgevingen, van draagbare apparaten tot krachtige servers.
  • De mogelijkheid om klassen en interfaces te definiëren die inkapseling en hergebruik van bestaande methoden en gegevens mogelijk maken.
  • Het specificeren van typen maakt het gemakkelijker om fouten te debuggen en te identificeren, maakt de code duidelijker en leesbaarder, en vereenvoudigt de wijziging en analyse ervan door externe ontwikkelaars.
  • Ondersteunde typen zijn onder meer: ​​verschillende soorten hashes, arrays en lijsten, wachtrijen, numerieke en stringtypen, typen voor het bepalen van datum en tijd, reguliere expressies (RegExp). Het is mogelijk om uw eigen typen te creëren.
  • Om parallelle uitvoering te organiseren, wordt voorgesteld om klassen te gebruiken met het isolate-attribuut, waarvan de code volledig in geïsoleerde ruimte in een apart geheugengebied wordt uitgevoerd, waarbij interactie met het hoofdproces plaatsvindt door het verzenden van berichten.
  • Ondersteuning voor het gebruik van bibliotheken die de ondersteuning en foutopsporing van grote webprojecten vereenvoudigen. Implementaties van functies door derden kunnen worden opgenomen in de vorm van gedeelde bibliotheken. Applicaties kunnen in delen worden opgedeeld en de ontwikkeling van elk deel aan een apart team van programmeurs toevertrouwen.
  • Een reeks kant-en-klare tools ter ondersteuning van de ontwikkeling in de Dart-taal, inclusief de implementatie van dynamische ontwikkelings- en foutopsporingstools met on-the-fly codecorrectie (“bewerken en doorgaan”).
  • Om de ontwikkeling in de Dart-taal te vereenvoudigen, wordt het geleverd met een SDK, een pakketbeheerder-pub, een statische code-analysator dart_analyzer, een reeks bibliotheken, een geïntegreerde ontwikkelomgeving DartPad en Dart-compatibele plug-ins voor IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 en Wim.
  • Extra pakketten met bibliotheken en hulpprogramma's worden gedistribueerd via de pub-repository, die meer dan 20 pakketten bevat.

Grote veranderingen in Dart 2.14-release:

  • Er is een nieuwe triple shift-operator (>>>) toegevoegd, die, in tegenstelling tot de “>>”-operator, geen rekenkundige, maar een logische verschuiving uitvoert die werkt zonder rekening te houden met het tekenbit (de verschuiving wordt uitgevoerd zonder te verdelen in positieve en negatieve getallen).
  • De beperking op type-argumenten verwijderd, waardoor generieke functietypen niet als type-argument konden worden gebruikt. U kunt nu bijvoorbeeld opgeven: late lijst (T)>idFuncties; var terugbellen = [ (T-waarde) => waarde]; late S-functie (T)>(S) f;
  • Sta toe dat argumenten met typen worden opgegeven in annotaties zoals @Deprecated. U kunt nu bijvoorbeeld opgeven: @TypeHelper (42, "De betekenis")
  • De statische methoden hash, hashAll en hashAllUnordered zijn toegevoegd aan de standaardbibliotheek (core) in de klasse Object. De klasse DateTime heeft de verwerking van lokale tijd verbeterd bij het converteren van klokken tussen zomer- en wintertijd die niet deelbaar zijn door één uur (in Australië wordt bijvoorbeeld een offset van 30 minuten gebruikt). Het ffi-pakket heeft ondersteuning toegevoegd voor het arena-geheugentoewijzingsmechanisme, dat automatisch bronnen vrijgeeft. Het ffigen-pakket heeft de mogelijkheid toegevoegd om typedef-definities van Dart-typen te genereren vanuit de C-taal.
  • De 250 populairste pakketten uit de pub.dev-repository en 94% van de top-1000 zijn overgeschakeld naar het gebruik van de “null safety”-modus, die crashes voorkomt die worden veroorzaakt door pogingen om variabelen te gebruiken waarvan de waarde niet is gedefinieerd en is ingesteld op “Null ” " De modus houdt in dat variabelen geen nulwaarden kunnen hebben, tenzij ze expliciet de waarde null krijgen toegewezen. De modus respecteert strikt de typen variabelen, waardoor de compiler aanvullende optimalisaties kan toepassen. De naleving van het type wordt tijdens het compileren gecontroleerd. Als u bijvoorbeeld de waarde “Null” probeert toe te wijzen aan een variabele met een type dat geen ongedefinieerde status impliceert, zoals “int”, wordt er een foutmelding weergegeven.
  • Er worden uniforme sets regels voor de code-analysator (linter) voorgesteld, die gelijktijdige ondersteuning bieden voor het controleren van de naleving van codestijlrichtlijnen voor Dart en het Flutter-framework. Om historische redenen waren de codeerregels voor Flutter en Dart anders. Bovendien waren er voor Dart twee sets regels in gebruik: pedante regels van Google en regels van de Dart-ontwikkelaarsgemeenschap. Dart 2.14 introduceert een nieuwe gemeenschappelijke set regels voor linter, die standaard wordt gebruikt in nieuwe Dart-projecten en in de Flutter SDK. De set bevat kernregels (lints/core.yaml-pakket), aanbevolen aanvullende regels (lints/recommended.yaml) en Flutter-specifieke aanbevelingen (flutter_lints/flutter.yaml). Gebruikers van pedante regels wordt geadviseerd om over te stappen op het gebruik van een nieuwe codeerstijl, gebaseerd op de aanbevelingen uit de Dart-documentatie.
  • In formatter zijn optimalisaties aangebracht aan de opmaak van trapsgewijze codeblokken, waardoor de opmaakprestaties aanzienlijk kunnen worden verbeterd en een dubbelzinnige interpretatie van het eigendom van expressie-elementen kan worden vermeden. Als u bijvoorbeeld "..doIt" aanroept in de uitdrukking "var result = errorState ? foo : bad..doIt()” heeft geen betrekking op het voorwaardelijke deel van het “bad” blok, maar op de gehele expressie, dus bij het formatteren is het nu gescheiden: var result = errorState ? foo: slechte ..doIt();
  • Ondersteuning voor Apple M1 (Silicon)-processors is aan de SDK toegevoegd, wat zowel de mogelijkheid impliceert om Dart VM, hulpprogramma's en SDK-componenten uit te voeren op systemen met een Apple Silicon-processor, als ondersteuning voor het compileren van uitvoerbare bestanden voor deze chips.
  • De opdracht "dart pub" heeft ondersteuning toegevoegd voor een nieuw servicebestand ".pubignore", waarmee u een lijst met bestanden kunt definiëren die worden overgeslagen bij het publiceren van een pakket naar de pub.dev-repository. Deze instellingen hebben geen invloed op de “.gitignore” negeerlijst (in sommige situaties wil pub.dev mogelijk voorkomen dat bestanden worden overgedragen die nodig zijn in Git, bijvoorbeeld interne scripts die tijdens de ontwikkeling worden gebruikt).
  • Er is gewerkt aan het verbeteren van de prestaties van de opdracht “dart test”, waarvoor nu geen hercompilatie van tests vereist is na het wijzigen van pubspec als het versienummer niet is gewijzigd.
  • Ondersteuning voor compilatie in de ECMAScript 5-compatibiliteitsmodus is stopgezet (de wijziging zal resulteren in verlies van compatibiliteit met de IE11-browser).
  • De individuele hulpprogramma's stagehand, dartfmt en dart2native zijn verouderd verklaard en vervangen door ingebouwde opdrachten die via het dart-hulpprogramma worden aangeroepen.
  • Het mechanisme voor VM Native Extensions is verouderd. Om native code vanuit Dart-code aan te roepen, wordt aanbevolen om de nieuwe Dart FFI (Foreign Function Interface) te gebruiken.

Tegelijkertijd werd een belangrijke release van het gebruikersinterfaceframework Flutter 2.5 gepresenteerd, dat wordt beschouwd als een alternatief voor React Native en waarmee, op basis van één codebasis, applicaties voor iOS, Android, Windows, macOS en Linux kunnen worden vrijgegeven. platforms, maar ook applicaties maken die in browsers kunnen worden uitgevoerd. Op basis van Flutter is een aangepaste shell voor het door Google ontwikkelde Fuchsia microkernel-besturingssysteem gebouwd.

Het grootste deel van de Flutter-code is geïmplementeerd in de Dart-taal en de runtime-engine voor het uitvoeren van applicaties is geschreven in C++. Bij het ontwikkelen van applicaties kunt u, naast de eigen Dart-taal van Flutter, de Dart Foreign Function-interface gebruiken om C/C++-code aan te roepen. Hoge uitvoeringsprestaties worden bereikt door applicaties te compileren naar native code voor doelplatforms. In dit geval hoeft het programma niet na elke wijziging opnieuw te worden gecompileerd - Dart biedt een hot reload-modus waarmee u wijzigingen kunt aanbrengen in een actieve applicatie en het resultaat onmiddellijk kunt evalueren.

Grote veranderingen in Flutter 2.5:

  • Aanzienlijke prestatie-optimalisaties doorgevoerd. Op de iOS- en macOS-platforms is precompilatie van shaders voor de Metal graphics API geïmplementeerd. Verbeterde efficiëntie bij het verwerken van asynchrone gebeurtenissen. Een probleem opgelost met vertragingen wanneer de garbage collector geheugen vrijmaakt van ongebruikte afbeeldingen (tijdens het afspelen van een geanimeerde GIF van 20 seconden werd het aantal garbagecollection-bewerkingen bijvoorbeeld teruggebracht van 400 naar 4. Vertragingen bij het doorgeven van berichten tussen Dart en Objective- C/Swift werd teruggebracht tot 50% (iOS) of Java/Kotlin (Android). Native build-ondersteuning toegevoegd voor systemen gebaseerd op de Apple Silicon-chip.
    Dart 2.14-taal en Flutter 2.5-framework beschikbaar
  • Voor het Android-platform is ondersteuning geboden voor het uitvoeren van applicaties op volledig scherm. De implementatie van het “Material You”-ontwerpconcept, gepresenteerd als een Material Design-optie van de volgende generatie, werd voortgezet. Een nieuwe status MaterialState.scrolledUnder toegevoegd, dynamische weergave van schuifbalken geïmplementeerd bij het wijzigen van de grootte, en een nieuwe interface voorgesteld voor het weergeven van meldingsbanners.
  • De mogelijkheden van de camera-plug-in zijn aanzienlijk uitgebreid en er zijn tools toegevoegd voor het regelen van autofocus, belichting, flitser, zoom, ruisonderdrukking en resolutie.
  • Ontwikkelaarstools (DevTools) zijn verbeterd met een bijgewerkte widgetinspectiemodus, evenals tools voor het identificeren van weergavevertragingen en het volgen van shader-compilatie.
    Dart 2.14-taal en Flutter 2.5-framework beschikbaar
  • Verbeterde plug-ins voor Visual Studio Code en IntelliJ/Android Studio.

Bron: opennet.ru

Voeg een reactie