Lang pwogramasyon Dart 2.15 ak kad Flutter 2.8 ki disponib

Google te pibliye liberasyon langaj pwogramasyon Dart 2.15 la, ki kontinye devlopman yon branch radikalman reamenaje Dart 2, ki diferan de vèsyon orijinal lang Dart pa itilize fò sezisman estatik (kalite yo ka dedwi otomatikman, kidonk. spesifye kalite pa nesesè, men sezisman dinamik yo pa itilize ankò epi okòmansman kalkile kalite a asiyen nan varyab la epi tcheke tip strik yo imedyatman aplike).

Karakteristik nan lang Dart la:

  • Sentaks abitye ak fasil pou aprann, natirèl pou pwogramasyon JavaScript, C ak Java.
  • Asire lansman rapid ak pèfòmans segondè pou tout navigatè entènèt modèn ak divès kalite anviwònman, soti nan aparèy pòtab ak sèvè pwisan.
  • Kapasite pou defini klas ak koòdone ki pèmèt ankapsulasyon ak reitilizasyon metòd ak done ki egziste deja.
  • Espesifye kalite fè li pi fasil pou debogaj ak idantifye erè, fè kòd la pi klè ak pi lizib, epi senplifye modifikasyon li yo ak analiz pa devlopè twazyèm pati.
  • Kalite sipòte yo enkli: divès kalite hashes, etalaj ak lis, ke moun kap kriye, kalite nimerik ak fisèl, kalite pou detèmine dat ak lè, ekspresyon regilye (RegExp). Li posib yo kreye kalite pwòp ou yo.
  • Pou òganize ekzekisyon paralèl, li pwopoze pou itilize klas ki gen atribi izole, kòd ki egzekite antyèman nan espas izole nan yon zòn memwa separe, kominike avèk pwosesis prensipal la pa voye mesaj.
  • Sipò pou itilize bibliyotèk ki senplifye sipò ak debogaj gwo pwojè entènèt. Twazyèm pati enplemantasyon nan fonksyon yo ka enkli nan fòm lan nan bibliyotèk pataje. Aplikasyon yo ka divize an pati epi konfye devlopman chak pati nan yon ekip separe pwogramè yo.
  • Yon seri zouti pare pou sipòte devlopman nan lang Dart, ki gen ladan aplikasyon devlopman dinamik ak zouti debogaj ak koreksyon kòd sou vole ("edit-and-continue").
  • Pou senplifye devlopman nan lang Dart, li vini ak yon SDK, yon pub manadjè pake, yon analizè kòd estatik dart_analyzer, yon seri bibliyotèk, yon anviwònman devlopman entegre DartPad ak grefon ki pèmèt Dart pou IntelliJ IDEA, WebStorm, Emacs, Sublime Text. 2 ak Vim.
  • Yo distribye pakè adisyonèl ki gen bibliyotèk ak sèvis piblik atravè repozitwa pub la, ki gen anviwon 22 mil pakè.

Gwo chanjman nan lage Dart 2.15:

  • Bay zouti pou ekzekisyon rapid paralèl nan travay ak izolasyon moun kap okipe yo. Sou sistèm milti-nwayo, ègzekutabl Dart la pa default kouri kòd aplikasyon sou yon nwayo CPU epi sèvi ak lòt nwayo pou fè travay sistèm tankou asynchrone I/O, ekri nan dosye, oswa fè apèl rezo. Pou aplikasyon ki bezwen egzekite moun kap okipe yo an paralèl, pou egzanp, rann animasyon nan koòdone a, li posib lanse blòk separe nan kòd (izole), izole youn ak lòt epi egzekite sou lòt nwayo CPU ansanm ak fil aplikasyon prensipal la. . Pou pwoteje kont erè ki parèt lè ekzekisyon kòd similtane k ap travay ak menm seri done yo, yo entèdi pataje objè ki ka chanje nan diferan blòk izole, epi yo itilize yon modèl ki bay mesaj pou entèraksyon ant moun kap okipe yo.

    Dart 2.15 entwodui yon nouvo konsèp - gwoup blòk izole (gwoup izole), ki pèmèt ou òganize aksè pataje divès kalite estrikti done entèn nan blòk izole ki fè pati menm gwoup la, ki ka siyifikativman redwi anlè lè yo kominike ant moun kap okipe yo nan yon gwoup. . Pou egzanp, lanse yon blòk izole adisyonèl nan yon gwoup ki deja egziste se 100 fwa pi vit epi li mande 10-100 fwa mwens memwa pase lanse yon blòk izole separe, akòz eliminasyon an nan nesesite pou inisyalize estrikti done pwogram yo.

    Malgre lefèt ke blòk izole nan yon gwoup toujou entèdi aksè pataje nan objè mutabl, gwoup yo itilize yon memwa pil pataje, ki ka siyifikativman akselere transfè a nan objè soti nan yon blòk nan yon lòt san yo pa bezwen fè operasyon kopi resous-entansif. Nouvo vèsyon an tou pèmèt ou pase rezilta moun kap okipe a lè w rele Isolate.exit() pou transfere done nan blòk izole paran an san yo pa kopye operasyon yo. Anplis de sa, mekanis transmisyon mesaj la te optimize - mesaj ti ak mwayen yo kounye a trete apeprè 8 fwa pi vit. Objè ki ka pase ant izole lè l sèvi avèk apèl SendPort.send() gen ladan kèk kalite fonksyon, fèmti, ak tras pile.

  • Nan zouti pou kreye endikasyon pou fonksyon endividyèl nan lòt objè (detache), yo te retire restriksyon sou kreye endikasyon ki sanble nan kòd konstrukteur, sa ki ka itil lè w bati koòdone ki baze sou bibliyotèk Flutter la. Pa egzanp, pou kreye yon Widget Kolòn ki gen ladan plizyè Widget Tèks, ou ka rele ".map()" epi pase endikasyon nan Text.new konstrukteur objè Tèks la: class FruitWidget extend StatessWidget { @override Widget build(BuildContext context) { retounen Kolòn( timoun yo: ['Apple', 'Orange'].map(Text.new).toList()); } }
  • Yo te elaji posiblite ki asosye ak itilizasyon endikasyon fonksyon. Te ajoute kapasite pou itilize metòd jenerik ak endikasyon fonksyon pou kreye yon metòd ki pa jenerik ak konsèy: T id (T value) => valè; var intId = id ; // pèmèt nan vèsyon 2.15 olye pou yo "int Fonksyon (int) intId = id;" const fo = id; // pointeur pou fonksyon id. const c1 = fo ;
  • Dart:core bibliyotèk la amelyore sipò pou enums, pou egzanp, kounye a ou ka bay yon valè fisèl nan chak valè enum lè l sèvi avèk metòd ".name" la, chwazi valè pa non, oswa matche ak pè valè: enum MyEnum { youn. , de, twa } void main() { print(MyEnum.one.name); // "yon" pral enprime. print(MyEnum.values.byName('de') == MyEnum.two); // "vrè" pral enprime. kat final = MyEnum.values.asNameMap (); print(map['twa'] == MyEnum.three); // "vre". }
  • Yo te aplike yon teknik konpresyon konsèy ki pèmèt itilizasyon yon reprezantasyon ki pi kontra enfòmèl ant endikasyon nan anviwònman 64-bit si yon espas adrès 32-bit ase pou adrese (pa plis pase 4 GB memwa yo itilize). Tès yo te montre ke optimize sa yo fè li posib diminye gwosè pil pil la pa apeprè 10%. Nan Flutter SDK, nouvo mòd la deja aktive pou android pa default, epi li planifye yo dwe aktive pou iOS nan yon lage nan lavni.
  • Dart SDK a gen ladan zouti pou debogaj ak analiz pèfòmans (DevTools), ki te deja apwovizyone nan yon pake separe.
  • Zouti yo te ajoute nan kòmandman "dart pub" ak depo pakè pub.dev yo pou swiv piblikasyon aksidantèl enfòmasyon konfidansyèl, pou egzanp, kite kalifikasyon pou sistèm entegrasyon kontinyèl ak anviwònman nwaj andedan pake a. Si yo detekte fwit sa yo, yo pral entèwonp egzekisyon "dart pub publish" kòmandman ak yon mesaj erè. Si te gen yon fo pozitif, li posib pou kontoune chèk la atravè yon lis blan.
  • Kapasite pou revoke yon vèsyon ki deja pibliye nan yon pake te ajoute nan depo pub.dev la, pou egzanp, si yo dekouvri erè danjere oswa frajilite. Précédemment, pou koreksyon sa yo, pratik la se te pibliye yon vèsyon korektif, men nan kèk sitiyasyon li nesesè anile lage ki deja egziste a epi ijan sispann distribisyon plis li (pa egzanp, si koreksyon an poko pare oswa si yo te yon lage konplè). pibliye pa erè olye de yon vèsyon tès). Apre revokasyon, pakè a pa idantifye ankò nan kòmandman "pub get" ak "pub upgrade", epi sou sistèm ki deja enstale li, yon avètisman espesyal yo bay pwochen fwa "pub get" yo egzekite.
  • Te ajoute pwoteksyon kont yon vilnerabilite (CVE-2021-22567) ki te koze pa itilizasyon karaktè unicode nan kòd ki chanje lòd ekspozisyon an.
  • Fikse yon vilnerabilite (CVE-2021-22568) ki pèmèt ou imite yon lòt itilizatè pub.dev lè w ap pibliye pakè sou yon sèvè twazyèm pati ki aksepte jeton aksè pub.dev oauth2. Pou egzanp, vilnerabilite a ta ka itilize pou atake serveurs pake entèn ak antrepriz. Pwoblèm sa a pa afekte devlopè ki sèlman òganize pakè sou pub.dev.

An menm tan an, yo te prezante yon lage enpòtan nan kad koòdone itilizatè Flutter 2.8, ki konsidere kòm yon altènativ a React Native epi ki pèmèt, ki baze sou yon sèl baz kòd, lage aplikasyon pou iOS, Android, Windows, macOS ak Linux platfòm, osi byen ke kreye aplikasyon pou kouri nan navigatè yo. Yon kokiy koutim pou sistèm operasyon mikrokernel Fuchsia devlope pa Google bati sou baz Flutter. Li te note ke sou sis mwa ki sot pase yo, kantite aplikasyon Flutter 2 nan Google Play Store la te ogmante de 200 mil a 375 mil, i.e. prèske de fwa.

Se pati prensipal la nan kòd Flutter aplike nan lang Dart, ak motè a ègzekutabl pou egzekite aplikasyon yo ekri nan C++. Lè w ap devlope aplikasyon yo, anplis lang natif natal Flutter a, ou ka itilize koòdone Fonksyon etranje Dart pou rele kòd C/C++. Pèfòmans ekzekisyon segondè reyalize pa konpile aplikasyon nan kòd natif natal pou platfòm sib. Nan ka sa a, pwogram nan pa bezwen rekonpile apre chak chanjman - Dart bay yon mòd rechaje cho ki pèmèt ou fè chanjman nan yon aplikasyon kouri epi imedyatman evalye rezilta a.

Pami chanjman ki fèt nan nouvo lage Flutter, optimize vitès lansman ak konsomasyon memwa sou aparèy mobil yo note. Li pi fasil pou konekte aplikasyon yo ak sèvis backend tankou Firebase ak Google Cloud. Zouti pou entegrasyon ak Google Ads yo te estabilize. Sipò pou kamera ak grefon entènèt yo te amelyore anpil. Nouvo zouti yo te pwopoze pou senplifye devlopman, pou egzanp, yo te ajoute yon widget pou otantifikasyon lè l sèvi avèk Firebase. Motè flanm dife a, ki fèt pou devlope jwèt 2D lè l sèvi avèk Flutter, te mete ajou.

Sous: opennet.ru

Add nouvo kòmantè