Dart 2.15 basa programming jeung Flutter 2.8 kerangka sadia

Google parantos nyebarkeun sékrési basa pamrograman Dart 2.15, anu neraskeun pamekaran cabang Dart 2 anu didesain deui sacara radikal, anu bénten ti versi asli basa Dart dina ngagunakeun ngetik statik anu kuat (jenis tiasa disimpulkeun sacara otomatis, janten khususna. jenis teu perlu, tapi ketikan dinamis teu dipaké deui jeung itungan awal tipe ieu ditugaskeun ka variabel jeung mariksa tipe ketat salajengna dilarapkeun).

Fitur tina basa Dart:

  • Sintaksis anu biasa sareng gampang diajar, alami pikeun programer JavaScript, C sareng Java.
  • Mastikeun peluncuran gancang sareng kinerja anu luhur pikeun sadaya panyungsi wéb modern sareng sababaraha jinis lingkungan, tina alat portabel dugi ka server anu kuat.
  • Kamampuhan pikeun ngartikeun kelas sareng antarmuka anu ngamungkinkeun enkapsulasi sareng dianggo deui metode sareng data anu tos aya.
  • Nangtukeun jenis ngagampangkeun pikeun debug sareng ngaidentipikasi kasalahan, ngajantenkeun kodeu langkung jelas sareng langkung dibaca, sareng nyederhanakeun modifikasi sareng analisa ku pamekar pihak katilu.
  • Jenis anu dirojong kalebet: rupa-rupa jinis hashes, susunan sareng daptar, antrian, jinis angka sareng senar, jinis pikeun nangtukeun tanggal sareng waktos, ekspresi biasa (RegExp). Kasebut nyaéta dimungkinkeun pikeun nyieun tipe anjeun sorangan.
  • Pikeun ngatur palaksanaan paralel, éta diusulkeun ngagunakeun kelas kalawan atribut isolate, kodeu nu geus dieksekusi sagemblengna dina spasi terasing di wewengkon memori misah, interacting jeung prosés utama ku ngirim pesen.
  • Rojongan pikeun pamakéan perpustakaan nu simplify rojongan tur debugging proyék web badag. Palaksanaan fungsi pihak katilu tiasa kalebet dina bentuk perpustakaan anu dibagikeun. Aplikasi tiasa dibagi kana sababaraha bagian sareng mercayakeun pamekaran unggal bagian ka tim programer anu misah.
  • Hiji set parabot siap-dijieun pikeun ngarojong ngembangkeun dina basa Dart, kaasup palaksanaan ngembangkeun dinamis sarta parabot debugging kalawan koreksi kode on laleur ("édit-jeung-terus").
  • Pikeun nyederhanakeun pamekaran dina basa Dart, éta hadir sareng SDK, manajer pakét pub, analisa kode statik dart_analyzer, sakumpulan perpustakaan, lingkungan pangembangan terpadu DartPad sareng plugins Dart-diaktipkeun pikeun IntelliJ IDEA, WebStorm, Emacs, Sublime Text. 2 sareng Vim.
  • Bungkusan tambahan sareng perpustakaan sareng utilitas disebarkeun ngaliwatan gudang pub, anu ngagaduhan sakitar 22 rébu bungkusan.

Parobihan utama dina sékrési Dart 2.15:

  • Nyadiakeun alat pikeun palaksanaan paralel gancang tugas kalawan isolasi pawang. Dina sistem multi-inti, runtime Dart sacara standar ngajalankeun kode aplikasi dina hiji inti CPU sareng nganggo inti-inti sanés pikeun ngalaksanakeun tugas sistem sapertos I/O asinkron, nyerat kana file, atanapi nelepon jaringan. Pikeun aplikasi anu kedah ngaéksekusi pananganana sacara paralel, contona, pikeun ngajantenkeun animasi dina antarmuka, anjeun tiasa ngaluncurkeun blok kode anu misah (ngasingkeun), terasing sareng dieksekusi dina inti CPU sanés sakaligus sareng utas aplikasi utama. . Pikeun ngajagaan tina kasalahan anu timbul nalika palaksanaan sakaligus kode anu dianggo sareng set data anu sami, ngabagi objék anu tiasa dirobih dina blok isolasi anu béda dilarang, sareng modél pangiriman pesen dianggo pikeun interaksi antara pawang.

    Dart 2.15 ngenalkeun konsép anyar - grup blok terasing (kelompok ngasingkeun), anu ngamungkinkeun anjeun ngatur aksés anu dibagi kana sababaraha struktur data internal dina blok ngasingkeun anu mangrupikeun bagian tina grup anu sami, anu tiasa sacara signifikan ngirangan overhead nalika berinteraksi antara pawang dina grup. . Salaku conto, ngaluncurkeun blok isolat tambahan dina grup anu tos aya 100 kali langkung gancang sareng peryogi 10-100 kali kirang memori tibatan ngaluncurkeun blok isolasi anu misah, kusabab ngaleungitkeun kabutuhan pikeun ngamimitian struktur data program.

    Najan kanyataan yén blok ngasingkeun dina grup tetep nyaram aksés dibagikeun ka objék mutable, grup ngagunakeun memori numpuk dibagikeun, nu nyata bisa nyepetkeun mindahkeun objék tina hiji blok ka sejen tanpa kudu ngalakukeun operasi salinan sumberdaya-intensif. Versi anyar ogé ngidinan Anjeun pikeun lulus hasil tina Handler nalika nelepon Isolate.exit () pikeun mindahkeun data ka blok indungna ngasingkeun tanpa operasi salinan. Salaku tambahan, mékanisme pangiriman pesen parantos dioptimalkeun - pesen leutik sareng sedeng ayeuna diolah sakitar 8 kali langkung gancang. Objék nu bisa diliwatan antara isolates maké SendPort.send () panggero ngawengku sababaraha jenis fungsi, closures, sarta ngambah tumpukan.

  • Dina alat pikeun nyieun pointers kana fungsi individu dina objék séjén (cacah-off), larangan dina nyieun pointers sarupa dina kode constructor geus dihapus, nu bisa jadi mangpaat nalika ngawangun interfaces dumasar kana perpustakaan Flutter. Contona, pikeun nyieun widget Kolom nu ngawengku sababaraha widget Téks, anjeun tiasa nelepon ". peta ()" tur ngalirkeun pointers ka Text.new constructor objék téks: kelas FruitWidget ngalegaan StatelessWidget { @override Widget ngawangun (BuildContext konteks) {balik Kolom (barudak: ['Apple', 'Oranyeu'] .map (Text.new).toList ()); }}
  • Kamungkinan pakait sareng pamakéan pointers fungsi geus dimekarkeun. Ditambahkeun kamampuan ngagunakeun metodeu umum sareng petunjuk fungsi pikeun nyiptakeun metode sareng penunjuk non-generik: T id (Nilai T) => nilai; var intId = id ; // diwenangkeun dina versi 2.15 tinimbang "int Fungsi (int) intId = id;" const fo = id; // pointer pikeun fungsi id. const c1 = fo ;
  • Dart: perpustakaan inti parantos ningkatkeun dukungan pikeun enum, contona, anjeun ayeuna tiasa ngaluarkeun nilai string ti unggal nilai enum nganggo metode ".name", pilih nilai dumasar nami, atanapi cocog pasangan nilai: enum MyEnum {hiji , dua, tilu} batal utama () {print (MyEnum.one.name); // "hiji" bakal dicitak. print (MyEnum.values.byName ( 'dua') == MyEnum.two); // "leres" bakal dicitak. peta ahir = MyEnum.values.asNameMap(); print (peta [ 'tilu'] == MyEnum.three); // "leres". }
  • Téhnik komprési pointer parantos dilaksanakeun anu ngamungkinkeun pawakilan pointer anu langkung kompak dina lingkungan 64-bit upami rohangan alamat 32-bit cekap pikeun alamat (henteu langkung ti 4 memori GB dianggo). Tés nunjukkeun yén optimasi sapertos kitu ngamungkinkeun pikeun ngirangan ukuran tumpukan sakitar 10%. Dina Flutter SDK, mode anyar parantos diaktipkeun pikeun Android sacara standar, sareng rencanana bakal diaktipkeun pikeun ios dina rilis anu bakal datang.
  • Dart SDK ngawengku parabot pikeun debugging jeung analisis kinerja (DevTools), nu saméméhna disadiakeun dina pakét misah.
  • Parabot geus ditambahkeun kana paréntah "dart pub" jeung repositories pakét pub.dev pikeun ngalacak publikasi teu kahaja inpormasi rahasia, contona, ninggalkeun Kapercayaan pikeun sistem integrasi kontinyu jeung lingkungan awan di jero iket. Upami bocor sapertos dideteksi, palaksanaan paréntah "dart pub publish" bakal diganggu ku pesen kasalahan. Upami aya positip palsu, anjeun tiasa ngaliwat cek ngaliwatan daptar bodas.
  • Kamampuhan pikeun nyabut vérsi pakét anu parantos diémbarkeun parantos ditambah kana gudang pub.dev, contona, upami aya kasalahan atanapi kerentanan anu bahaya. Saméméhna, pikeun koréksi sapertos kitu, prakna nyaéta nyebarkeun versi koréksi, tapi dina sababaraha kaayaan perlu ngabatalkeun sékrési anu tos aya sareng urgently ngeureunkeun distribusi salajengnana (contona, upami koreksi henteu acan siap atanapi upami sékrési pinuh parantos aya. diterbitkeun ku kasalahan tinimbang versi test). Saatos panyabutan, pakét henteu diidentifikasi deui dina paréntah "pub get" sareng "pub upgrade", sareng dina sistem anu parantos dipasang, peringatan khusus dikaluarkeun dina waktos salajengna "pub get" dieksekusi.
  • Ditambahkeun panyalindungan ngalawan kerentanan (CVE-2021-22567) disababkeun ku pamakéan karakter unicode dina kode nu ngarobah urutan tampilan.
  • Ngalereskeun kerentanan (CVE-2021-22568) anu ngamungkinkeun anjeun nyamar pangguna pub.dev anu sanés nalika nyebarkeun bungkusan ka server pihak katilu anu nampi token aksés pub.dev oauth2. Salaku conto, kerentanan tiasa dianggo pikeun nyerang server pakét internal sareng perusahaan. Pamekar anu ngan ukur host bungkusan dina pub.dev henteu kapangaruhan ku masalah ieu.

Dina waktos anu sami, sékrési anu signifikan tina kerangka antarmuka pangguna Flutter 2.8 diwakilan, anu dianggap salaku alternatif pikeun React Native sareng ngamungkinkeun, dumasar kana dasar kode tunggal, ngaleupaskeun aplikasi pikeun ios, Android, Windows, macOS sareng. Platform Linux, ogé nyiptakeun aplikasi pikeun dijalankeun dina browser. Cangkang khusus pikeun sistem operasi mikrokernel Fuchsia anu dikembangkeun ku Google diwangun dina dasar Flutter. Catet yén dina genep bulan katukang, jumlah aplikasi Flutter 2 di Google Play Store parantos ningkat tina 200 rébu dugi ka 375 rébu, nyaéta. ampir dua kali.

Bagian utama kode Flutter dilaksanakeun dina basa Dart, jeung mesin runtime pikeun executing aplikasi ditulis dina C ++. Nalika ngembangkeun aplikasi, salian basa DART pituin Flutter, anjeun tiasa nganggo antarmuka Dart Foreign Function pikeun nelepon C / C ++ kode. Kinerja palaksanaan anu luhur dihontal ku nyusun aplikasi kana kode asli pikeun platform target. Dina hal ieu, program teu perlu recompiled sanggeus unggal robah - Dart nyadiakeun modeu ulang panas nu ngidinan Anjeun pikeun nyieun parobahan dina aplikasi jalan jeung geura evaluate hasilna.

Diantara parobahan dina sékrési anyar Flutter, optimasi laju peluncuran sareng konsumsi mémori dina alat sélulér kacatet. Langkung gampang pikeun nyambungkeun aplikasi kana jasa backend sapertos Firebase sareng Google Cloud. Alat pikeun integrasi sareng Google Ads parantos distabilkeun. Rojongan pikeun kaméra sareng plugin wéb parantos ningkat sacara signifikan. Parabot anyar parantos diajukeun pikeun nyederhanakeun pangwangunan, contona, widget parantos ditambah pikeun auténtikasi nganggo Firebase. Mesin Flame, dirancang pikeun ngembangkeun kaulinan 2D nganggo Flutter, parantos diropéa.

sumber: opennet.ru

Tambahkeun komentar