Dart 2.15 Programméiersprooch a Flutter 2.8 Kader verfügbar

Google huet d'Verëffentlechung vun der Dart 2.15 Programméierungssprooch publizéiert, déi d'Entwécklung vun enger radikal ëmgebauter Branche vum Dart 2 weidergeet, déi sech vun der Originalversioun vun der Dart Sprooch ënnerscheet duerch d'Benotzung vu staarke statesche Schreifweis (Typen kënnen automatesch ofgeleet ginn, also Typen spezifizéieren ass net néideg, awer dynamesch Tippen gëtt net méi benotzt an ufanks berechent gëtt den Typ un d'Variabel zougewisen a strikt Typprüfung gëtt duerno ugewannt).

Features vun der Dart Sprooch:

  • Bekannt an einfach ze léieren Syntax, natierlech fir JavaScript, C an Java Programméierer.
  • Assuréiert séier Start an héich Leeschtung fir all modern Webbrowser a verschidden Aarte vun Ëmfeld, vu portablen Apparater bis mächteg Serveren.
  • D'Kapazitéit fir Klassen an Interfaces ze definéieren, déi d'Verkapselung an d'Wiederbenotzung vun existente Methoden an Daten erlaben.
  • Spezifizéieren Zorte mécht et méi einfach ze Debuggen an z'identifizéieren Feeler, mécht de Code méi kloer a méi liesbar, a vereinfacht seng Ännerung an Analyse vun Drëtt Partei Entwéckler.
  • Ënnerstëtzt Typen enthalen: verschidden Aarte vun Hashes, Arrays a Lëschten, Schlaangen, numeresch a Stringtypen, Aarte fir Datum an Zäit ze bestëmmen, reegelméisseg Ausdréck (RegExp). Et ass méiglech Är eege Zorten ze kreéieren.
  • Fir parallel Ausféierung z'organiséieren, gëtt proposéiert Klassen mat dem Attribut isoléieren ze benotzen, de Code vun deem ganz an isoléierte Raum an engem getrennten Erënnerungsberäich ausgefouert gëtt, interagéiert mam Haaptprozess andeems Dir Messagen schéckt.
  • Ënnerstëtzung fir d'Benotzung vu Bibliothéiken déi d'Ënnerstëtzung an d'Debugging vu grousse Webprojeten vereinfachen. Drëtt Partei Implementatioune vu Funktiounen kënnen a Form vu gemeinsame Bibliothéiken abegraff ginn. Uwendungen kënnen an Deeler opgedeelt ginn an d'Entwécklung vun all Deel un eng separat Team vu Programméierer uvertraut.
  • Eng Rei vu fäerdege Tools fir d'Entwécklung an der Dart Sprooch z'ënnerstëtzen, dorënner d'Ëmsetzung vun dynamescher Entwécklung an Debugging Tools mat Codekorrektur op der Flucht ("edit-and-continue").
  • Fir d'Entwécklung an der Dart Sprooch ze vereinfachen, kënnt et mat engem SDK, engem Package Manager Pub, engem statesche Code Analyser dart_analyzer, eng Rei vu Bibliothéiken, en integréierten Entwécklungsëmfeld DartPad an Dart-aktivéierte Plugins fir IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 a Vim.
  • Zousätzlech Packagen mat Bibliothéiken an Utilities ginn duerch de Pub-Repository verdeelt, deen ongeféier 22 Tausend Packagen huet.

Grouss Ännerungen am Dart 2.15 Verëffentlechung:

  • Bitt Tools fir séier parallel Ausféierung vun Aufgaben mat Isolatioun vun Handler. Op Multi-Core Systemer leeft d'Dart Runtime par défaut Applikatiounscode op engem CPU Kär a benotzt aner Cores fir Systemaufgaben auszeféieren wéi asynchronen I/O, Schreiwen op Dateien oder Netzappellen. Fir Uwendungen déi hir Handler parallel mussen ausféieren, zum Beispill Animatioun an der Interface ze maachen, ass et méiglech separat Codeblocken ze lancéieren (isoléieren), isoléiert vuneneen a gläichzäiteg op aner CPU Cores ausgefouert mam Haaptapplikatiouns thread . Fir géint Feeler ze schützen, déi entstinn wann gläichzäiteg Ausféierung vum Code mat deemselwechte Satz vun Donnéeën funktionnéiert, ass d'Deelen vun mutablen Objeten a verschiddenen Isolatblocken verbueden, an e Message-passéierend Modell gëtt fir Interaktioun tëscht Handler benotzt.

    Dart 2.15 stellt en neit Konzept vir - isoléiert Blockgruppen (isoléiert Gruppen), wat Iech erlaabt e gemeinsamen Zougang zu verschiddenen internen Datestrukturen an isoléierte Blocken ze organiséieren, déi Deel vun der selwechter Grupp sinn, wat d'Overhead wesentlech reduzéiere kann wann Dir tëscht Handler an enger Grupp interagéiert . Zum Beispill, en zousätzleche Isolatblock an enger existéierender Grupp ze lancéieren ass 100 Mol méi séier a erfuerdert 10-100 Mol manner Erënnerung wéi d'Start vun engem separaten Isolatblock, wéinst der Eliminatioun vun der Bedierfnes fir Programmdatenstrukturen ze initialiséieren.

    Trotz der Tatsaach, datt isoléiert Blocken an enger Grupp nach ëmmer de gemeinsamen Zougang zu mutablen Objeten verbidden, benotzen d'Gruppen e gemeinsame Heap-Erënnerung, wat den Transfer vun Objeten vun engem Block an en anert wesentlech beschleunegt kann ouni d'Noutwendegkeet fir Ressourceintensiv Kopieoperatiounen ze maachen. Déi nei Versioun erlaabt Iech och d'Resultat vun der Handler ze Passe wann Isolate.exit Opruff () fir e Transfert vun Daten un den Elterendeel isoléieren Spär ouni Kopie Operatiounen. Zousätzlech ass de Messageiwwerdroungsmechanismus optimiséiert ginn - kleng a mëttel Messagen ginn elo ongeféier 8 Mol méi séier veraarbecht. Objekter déi tëscht Isolate mat der SendPort.send () Uruff passéiert kënne ginn, enthalen e puer Zorte vu Funktiounen, Zoumaache a Stackspuren.

  • An den Tools fir Zeechnungen op eenzel Funktiounen an aneren Objeten ze kreéieren (Tear-off), Restriktiounen fir ähnlech Zeeche am Konstruktorcode ze kreéieren goufen geläscht, wat nëtzlech ka sinn wann Dir Interfaces baséiert op der Flutter Bibliothéik. Zum Beispill, fir e Column Widget ze kreéieren deen e puer Text Widgets enthält, kënnt Dir ".map()" ruffen an Zeigefanger un den Text.new constructor vum Textobjekt passéieren: class FruitWidget verlängert StatelessWidget { @override Widget build(BuildContext context) { return Column (Kanner: ['Apple', 'Orange'].map(Text.new).toList()); } }
  • D'Méiglechkeeten verbonne mat der Benotzung vu Funktiounsweiser goufen erweidert. D'Fäegkeet bäigefüügt fir generesch Methoden a Funktiounspointer ze benotzen fir eng net-generesch Method a Pointer ze kreéieren: T id (T Wäert) => Wäert; var intId = id ; // erlaabt an der Versioun 2.15 amplaz "int Function(int) intId = id;" const fo = id; // Pointer fir Funktioun ID. const c1 = fo ;
  • D'Dart:Core Bibliothéik huet verbessert Ënnerstëtzung fir Enums, zum Beispill, Dir kënnt elo e Stringwäert vun all Enum-Wäert mat der ".name" Method ausginn, Wäerter mam Numm auswielen oder Pairen vu Wäerter passen: enum MyEnum { one , zwee, dräi } void main () { print (MyEnum.one.name); // "eent" gëtt gedréckt. print(MyEnum.values.byName('zwee') == MyEnum.two); // "richteg" gëtt gedréckt. final map = MyEnum.values.asNameMap(); print(map['three'] == MyEnum.three); // "richteg". }
  • Eng Zeigerkompressiounstechnik gouf implementéiert, déi d'Benotzung vun enger méi kompakter Representatioun vu Pointer an 64-Bit Ëmfeld erlaabt, wann en 32-Bit Adressraum genuch ass fir d'Adresséierung (net méi wéi 4 GB Erënnerung gëtt benotzt). Tester hu gewisen datt esou Optimiséierung et méiglech mécht d'Koupgréisst ëm ongeféier 10% ze reduzéieren. Am Flutter SDK ass den neie Modus scho fir Android als Standard aktivéiert, an ass geplangt fir iOS an enger zukünfteg Verëffentlechung aktivéiert ze ginn.
  • Den Dart SDK enthält Tools fir Debugging a Performance Analyse (DevTools), déi virdru an engem separaten Package geliwwert goufen.
  • Tools goufen zum Kommando "Dart Pub" an de Pub.dev Package Repositories bäigefüügt fir déi zoufälleg Verëffentlechung vu vertraulech Informatioun ze verfolgen, zum Beispill, Umeldungsinformatiounen fir kontinuéierlech Integratiounssystemer a Cloud-Ëmfeld am Package ze loossen. Wann esou Leckage festgestallt ginn, gëtt d'Ausféierung vum Kommando "Dart Pub publish" mat enger Fehlermeldung ënnerbrach. Wann et e falsche positiv war, ass et méiglech de Scheck duerch eng wäiss Lëscht ze ëmgoen.
  • D'Kapazitéit fir eng scho publizéiert Versioun vun engem Package zréckzezéien ass zum Pub.dev Repository bäigefüügt ginn, zum Beispill, wa geféierlech Feeler oder Schwachstelle entdeckt ginn. Virdrun, fir sou Korrekturen, war d'Praxis eng Korrekturversioun ze verëffentlechen, awer an e puer Situatiounen ass et néideg déi existent Verëffentlechung ze annuléieren an dréngend seng weider Verdeelung ze stoppen (zum Beispill wann d'Korrektur nach net fäerdeg ass oder wann eng voll Verëffentlechung war e Feeler publizéiert amplaz vun enger Testversioun). Nom Réckzuch gëtt de Package net méi an de Kommandoen "Pub get" an "Pub Upgrade" identifizéiert, an op Systemer déi et scho installéiert hunn, gëtt eng speziell Warnung erausginn déi nächst Kéier "Pub get" ausgefouert gëtt.
  • Zousätzlech Schutz géint eng Schwachstelle (CVE-2021-22567) verursaacht duerch d'Benotzung vun Unicode Charaktere am Code déi d'Displayuerdnung änneren.
  • Eng Schwachstelle fixéiert (CVE-2021-22568) déi Iech erlaabt en anere pub.dev Benotzer z'impersonéieren wann Dir Packagen op en Drëtt-Partei Server publizéiert deen pub.dev oauth2 Zougang Tokens akzeptéiert. Zum Beispill kann d'Schwachheet benotzt ginn fir intern a Firme Package Serveren z'attackéieren. Entwéckler déi nëmmen Packagen op pub.dev hosten sinn net vun dësem Thema betraff.

Zur selwechter Zäit gouf eng bedeitend Verëffentlechung vum User Interface Kader Flutter 2.8 presentéiert, deen als Alternativ zu React Native ugesi gëtt an erlaabt, baséiert op enger eenzeger Codebasis, Uwendungen fir iOS, Android, Windows, macOS an Linux Plattformen, wéi och Applikatiounen erstellen fir a Browser ze lafen. Eng personaliséiert Shell fir de Fuchsia Mikrokernel Betribssystem entwéckelt vu Google ass op Basis vu Flutter gebaut. Et gëtt bemierkt datt an de leschte sechs Méint d'Zuel vu Flutter 2 Uwendungen am Google Play Store vun 200 Tausend op 375 Tausend eropgaang ass, d.h. bal zweemol.

Den Haaptdeel vum Flutter Code gëtt an der Dart Sprooch implementéiert, an de Runtime Engine fir Uwendungen auszeféieren ass an C++ geschriwwen. Wann Dir Uwendungen entwéckelt, nieft dem Flutter senger Mammesprooch Dart, kënnt Dir d'Dart Foreign Function Interface benotze fir C / C ++ Code ze ruffen. Héich Ausféierungsleistung gëtt erreecht andeems Applikatiounen op gebierteg Code fir Zilplattformen zesummegesat ginn. An dësem Fall brauch de Programm net no all Ännerung nei kompiléiert ze ginn - Dart bitt e waarme Reload-Modus, deen Iech erlaabt Ännerungen an enger lafender Applikatioun ze maachen an direkt d'Resultat ze evaluéieren.

Ënnert den Ännerungen an der neier Verëffentlechung vu Flutter gëtt d'Optimiséierung vun der Startgeschwindegkeet an der Erënnerungsverbrauch op mobilen Apparater bemierkt. Et ass méi einfach Apps mat Backend Servicer wéi Firebase a Google Cloud ze verbannen. Tools fir d'Integratioun mat Google Ads goufen stabiliséiert. Ënnerstëtzung fir Kameraen a Web Plugins ass wesentlech verbessert ginn. Nei Tools goufen proposéiert fir d'Entwécklung ze vereinfachen, zum Beispill, e Widget gouf fir d'Authentifikatioun mat Firebase bäigefüügt. De Flame Engine, entwéckelt fir 2D Spiller mat Flutter z'entwéckelen, gouf aktualiséiert.

Source: opennet.ru

Setzt e Commentaire