Dart 2.15 programming language ug Flutter 2.8 framework anaa

Gipatik sa Google ang pagpagawas sa Dart 2.15 programming language, nga nagpadayon sa pag-uswag sa usa ka radikal nga gidesinyo pag-usab nga sanga sa Dart 2, nga lahi sa orihinal nga bersyon sa Dart nga pinulongan pinaagi sa paggamit sa lig-on nga static nga pag-type (ang mga tipo mahimong awtomatik nga mahibal-an, busa Ang pagtino sa mga tipo dili kinahanglan, apan ang dinamikong pag-type wala na gigamit ug sa sinugdan gikuwenta ang tipo gi-assign sa variable ug ang estrikto nga pagsusi sa tipo gisunod dayon).

Mga bahin sa Dart nga pinulongan:

  • Pamilyar ug dali nga makat-on nga syntax, natural alang sa JavaScript, C ug Java nga mga programmer.
  • Pagsiguro sa paspas nga paglansad ug taas nga pasundayag alang sa tanan nga modernong mga web browser ug lainlaing mga lahi sa palibot, gikan sa madaladala nga mga aparato hangtod sa kusgan nga mga server.
  • Ang abilidad sa paghubit sa mga klase ug mga interface nga nagtugot sa encapsulation ug paggamit pag-usab sa kasamtangan nga mga pamaagi ug datos.
  • Ang pagtino sa mga tipo makapasayon ​​sa pag-debug ug pag-ila sa mga sayop, paghimo sa code nga mas tin-aw ug mas mabasa, ug gipasayon ​​ang pag-usab ug pagtuki niini sa mga third-party nga developers.
  • Ang gisuportahan nga mga tipo naglakip sa: lain-laing mga matang sa hash, arrays ug mga lista, pila, numeric ug string type, tipo para sa pagtino sa petsa ug oras, regular nga mga ekspresyon (RegExp). Posible ang paghimo sa imong kaugalingon nga mga tipo.
  • Aron ma-organisar ang parallel execution, gisugyot nga gamiton ang mga klase nga adunay isolate attribute, ang code nga hingpit nga gipatuman sa hilit nga wanang sa usa ka bulag nga lugar sa panumduman, nga nakig-uban sa panguna nga proseso pinaagi sa pagpadala mga mensahe.
  • Suporta alang sa paggamit sa mga librarya nga nagpayano sa suporta ug pag-debug sa dagkong mga proyekto sa web. Ang mga pagpatuman sa ikatulo nga partido sa mga gimbuhaton mahimong maapil sa porma sa gipaambit nga mga librarya. Ang mga aplikasyon mahimong bahinon ngadto sa mga bahin ug itugyan ang pagpalambo sa matag bahin ngadto sa lain nga grupo sa mga programmer.
  • Usa ka hugpong sa andam nga mga himan aron suportahan ang pag-uswag sa Dart nga pinulongan, lakip ang pagpatuman sa dinamikong pag-uswag ug mga himan sa pag-debug nga adunay pagtul-id sa code sa langaw ("edit-ug-padayon").
  • Aron pasimplehon ang pag-uswag sa Dart nga pinulongan, kini adunay SDK, usa ka package manager pub, usa ka static code analyzer dart_analyzer, usa ka set sa mga librarya, usa ka integrated development environment nga DartPad ug Dart-enabled nga mga plugins alang sa IntelliJ IDEA, WebStorm, Emacs, Sublime Text. 2 ug vim.
  • Ang dugang nga mga pakete nga adunay mga librarya ug mga gamit giapod-apod pinaagi sa pub repository, nga adunay mga 22 ka libo nga mga pakete.

Daghang mga pagbag-o sa pagpagawas sa Dart 2.15:

  • Naghatag mga himan alang sa paspas nga managsama nga pagpatuman sa mga buluhaton nga adunay pag-inusara sa mga tigdumala. Sa multi-core nga mga sistema, ang Dart runtime pinaagi sa default nagpadagan sa application code sa usa ka CPU core ug naggamit sa ubang mga cores sa paghimo sa mga buluhaton sa sistema sama sa asynchronous I/O, pagsulat sa mga file, o paghimo sa mga tawag sa network. Alang sa mga aplikasyon nga kinahanglan nga ipatuman ang ilang mga handler nga managsama, pananglitan, aron ma-render ang animation sa interface, posible nga maglansad sa bulag nga mga bloke sa code (ilain), nahimulag sa usag usa ug gipatuman sa ubang mga cores sa CPU nga dungan sa panguna nga thread sa aplikasyon . Aron mapanalipdan batok sa mga kasaypanan nga motumaw kung ang dungan nga pagpatuman sa code nga nagtrabaho sa parehas nga set sa datos, gidili ang pagpaambit sa mga mutable nga mga butang sa lainlaing mga bloke nga nahimulag, ug usa ka modelo nga pagpasa sa mensahe gigamit alang sa interaksyon tali sa mga tigdumala.

    Ang Dart 2.15 nagpaila sa usa ka bag-ong konsepto - nahimulag nga mga grupo sa block (nagbulag nga mga grupo), nga nagtugot kanimo sa pag-organisar sa gipaambit nga pag-access sa nagkalain-laing internal nga mga istruktura sa datos sa mga isolate nga mga bloke nga kabahin sa parehas nga grupo, nga makapakunhod pag-ayo sa overhead kung makig-uban sa mga tigdumala sa usa ka grupo. . Pananglitan, ang paglansad og dugang nga isolate block sa usa ka kasamtangan nga grupo mao ang 100 ka beses nga mas paspas ug nagkinahanglan og 10-100 ka beses nga mas gamay nga memorya kay sa paglansad sa usa ka bulag nga isolate block, tungod sa pagwagtang sa panginahanglan sa pagsugod sa mga istruktura sa datos sa programa.

    Bisan pa sa kamatuoran nga ang pagbulag sa mga bloke sa usa ka grupo nagdili gihapon sa gipaambit nga pag-access sa mga mutable nga mga butang, ang mga grupo naggamit sa usa ka shared heap memory, nga makapadali sa pagbalhin sa mga butang gikan sa usa ka block ngadto sa lain nga dili kinahanglan nga mohimo sa mga operasyon sa pagkopya nga kusog sa kapanguhaan. Ang bag-ong bersyon usab nagtugot kanimo sa pagpasa sa resulta sa handler sa pagtawag sa Isolate.exit() sa pagbalhin sa data ngadto sa ginikanan isolate block nga walay pagkopya sa mga operasyon. Dugang pa, ang mekanismo sa pagpasa sa mensahe na-optimize - ang gagmay ug medium nga mga mensahe karon giproseso mga 8 ka beses nga mas paspas. Ang mga butang nga mahimong ipasa taliwala sa mga isolates gamit ang SendPort.send() nga tawag naglakip sa pipila ka matang sa mga function, pagsira, ug stack traces.

  • Sa mga himan alang sa pagmugna og mga pointer sa indibidwal nga mga function sa ubang mga butang (tear-off), ang mga pagdili sa paghimo og susama nga mga pointer sa constructor code gikuha na, nga mahimong mapuslanon sa pagtukod sa mga interface base sa Flutter library. Pananglitan, sa paghimo ug Column widget nga naglakip sa daghang Text widgets, mahimo nimong tawagan ang ".map()" ug ipasa ang mga pointer ngadto sa Text.new constructor sa Text object: class FruitWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Column(mga bata: ['Apple', 'Orange'].map(Text.new).toList()); }}
  • Ang mga posibilidad nga nalangkit sa paggamit sa mga function pointer gipalapdan. Gidugang ang abilidad sa paggamit sa mga generic nga pamaagi ug mga function pointer aron makahimo og non-generic nga pamaagi ug pointer: T id (T bili) => bili; var intId = id ; // gitugotan sa bersyon 2.15 imbes nga "int Function(int) intId = id;" const fo = id; // pointer sa function id. const c1 = fo ;
  • Ang dart:core library nakapauswag sa suporta alang sa mga enum, pananglitan, mahimo ka na karon nga mag-output sa usa ka string nga kantidad gikan sa matag enum nga kantidad gamit ang ".name" nga pamaagi, pagpili sa mga kantidad sa ngalan, o pagpares sa mga pares sa mga kantidad: enum MyEnum {usa , duha, tulo } void main() {print(MyEnum.one.name); // "usa" i-imprinta. print(MyEnum.values.byName('two') == MyEnum.two); // "tinuod" i-imprinta. katapusan nga mapa = MyEnum.values.asNameMap(); print(mapa['tulo'] == MyEnum.three); // "tinuod". }
  • Gipatuman ang usa ka teknik sa pointer compression nga nagtugot sa paggamit sa usa ka mas compact nga representasyon sa mga pointer sa 64-bit nga mga palibot kung ang usa ka 32-bit nga address space igo na alang sa pag-address (dili mosobra sa 4 GB nga memorya ang gigamit). Gipakita sa mga pagsulay nga ang ingon nga pag-optimize nagpaposible sa pagpakunhod sa gidak-on sa pundok sa gibana-bana nga 10%. Sa Flutter SDK, ang bag-ong mode gi-enable na alang sa Android pinaagi sa default, ug giplanohan nga ma-enable para sa iOS sa umaabot nga pagpagawas.
  • Ang Dart SDK naglakip sa mga himan alang sa pag-debug ug pagtuki sa performance (DevTools), nga kaniadto gihatag sa usa ka bulag nga pakete.
  • Ang mga himan gidugang sa "dart pub" nga sugo ug ang pub.dev package repository aron masubay ang aksidenteng pagmantala sa kompidensyal nga impormasyon, pananglitan, nagbilin ug mga kredensyal alang sa padayon nga mga sistema sa panagsama ug mga cloud environment sulod sa package. Kung makit-an ang ingon nga mga pagtulo, ang pagpatuman sa "dart pub publish" nga mando mabalda sa usa ka mensahe sa sayup. Kung adunay usa ka sayup nga positibo, posible nga laktawan ang tseke pinaagi sa usa ka puti nga lista.
  • Ang abilidad sa pagbawi sa usa ka namantala na nga bersyon sa usa ka pakete gidugang ngadto sa pub.dev repository, pananglitan, kon delikado nga mga sayop o mga kahuyangan madiskobrehan. Kaniadto, alang sa ingon nga mga pagtul-id, ang praktis mao ang pagmantala sa usa ka corrective nga bersyon, apan sa pipila ka mga sitwasyon gikinahanglan nga kanselahon ang kasamtangan nga pagpagawas ug dinalian nga paghunong sa dugang nga pag-apod-apod niini (pananglitan, kung ang pagtul-id dili pa andam o kung ang usa ka bug-os nga pagpagawas kay gipatik sa sayop imbes sa usa ka pagsulay nga bersyon). Human sa pagbawi, ang package dili na mailhan sa "pub get" ug "pub upgrade" nga mga sugo, ug sa mga sistema nga naka-install na niini, usa ka espesyal nga pasidaan ang gi-isyu sa sunod nga "pub get" ipatuman.
  • Gidugang nga proteksyon batok sa usa ka pagkahuyang (CVE-2021-22567) tungod sa paggamit sa mga unicode nga karakter sa code nga nagbag-o sa han-ay sa pagpakita.
  • Giayo ang usa ka kahuyang (CVE-2021-22568) nga nagtugot kanimo sa pagsundog sa laing user sa pub.dev sa dihang nagpatik sa mga pakete sa usa ka third-party nga server nga modawat sa pub.dev oauth2 access token. Pananglitan, ang pagkahuyang mahimong magamit sa pag-atake sa mga internal ug corporate package server. Ang mga nag-develop nga nag-host lang sa mga pakete sa pub.dev wala maapektuhan sa kini nga isyu.

Sa samang higayon, usa ka mahinungdanong pagpagawas sa user interface framework Flutter 2.8 gipresentar, nga giisip nga usa ka alternatibo sa React Native ug nagtugot, base sa usa ka code base, sa pagpagawas sa mga aplikasyon alang sa iOS, Android, Windows, macOS ug Mga platform sa Linux, ingon man paghimo og mga aplikasyon nga modagan sa mga browser. Ang usa ka naandan nga kabhang alang sa Fuchsia microkernel operating system nga gimugna sa Google gitukod base sa Flutter. Namatikdan nga sa miaging unom ka bulan, ang gidaghanon sa mga aplikasyon sa Flutter 2 sa Google Play Store misaka gikan sa 200 ka libo ngadto sa 375 ka libo, i.e. hapit kaduha.

Ang nag-unang bahin sa Flutter code gipatuman sa Dart nga pinulongan, ug ang runtime nga makina alang sa pagpatuman sa mga aplikasyon gisulat sa C++. Kung nag-develop sa mga aplikasyon, dugang sa lumad nga Dart nga pinulongan sa Flutter, mahimo nimong gamiton ang interface sa Dart Foreign Function aron tawagan ang C/C++ code. Ang taas nga pasundayag sa pagpatuman makab-ot pinaagi sa pag-compile sa mga aplikasyon sa lumad nga code alang sa mga target nga platform. Sa kini nga kaso, ang programa dili kinahanglan nga i-recompile pagkahuman sa matag pagbag-o - Dart naghatag usa ka mainit nga reload mode nga nagtugot kanimo sa paghimo sa mga pagbag-o sa usa ka nagdagan nga aplikasyon ug diha-diha dayon sa pagtimbang-timbang sa resulta.

Lakip sa mga pagbag-o sa bag-ong pagpagawas sa Flutter, ang pag-optimize sa katulin sa paglansad ug pagkonsumo sa memorya sa mga mobile device nakit-an. Mas dali ang pagkonektar sa mga app sa mga serbisyo sa backend sama sa Firebase ug Google Cloud. Ang mga himan alang sa paghiusa sa Google Ads na-stabilize. Ang suporta alang sa mga camera ug mga plugin sa web labi nga gipauswag. Gisugyot ang bag-ong mga himan aron pasimplehon ang pag-uswag, pananglitan, usa ka widget ang gidugang alang sa pag-authenticate gamit ang Firebase. Ang Flame engine, nga gidisenyo alang sa pagpalambo sa 2D nga mga dula gamit ang Flutter, gi-update.

Source: opennet.ru

Idugang sa usa ka comment