Bahasa Dart 2.14 dan rangka kerja Flutter 2.5 tersedia

Google telah menerbitkan keluaran bahasa pengaturcaraan Dart 2.14, yang meneruskan pembangunan cawangan Dart 2 yang direka bentuk semula secara radikal, yang berbeza daripada versi asal bahasa Dart dengan menggunakan penaipan statik yang kuat (jenis boleh disimpulkan secara automatik, jadi menentukan jenis tidak perlu, tetapi penaipan dinamik tidak lagi digunakan dan pada mulanya dikira jenis diberikan kepada pembolehubah dan pemeriksaan jenis yang ketat kemudiannya digunakan).

Ciri-ciri bahasa Dart:

  • Sintaks yang biasa dan mudah dipelajari, semula jadi untuk pengaturcara JavaScript, C dan Java.
  • Memastikan pelancaran pantas dan prestasi tinggi untuk semua pelayar web moden dan pelbagai jenis persekitaran, daripada peranti mudah alih kepada pelayan berkuasa.
  • Keupayaan untuk menentukan kelas dan antara muka yang membenarkan enkapsulasi dan penggunaan semula kaedah dan data sedia ada.
  • Menentukan jenis menjadikannya lebih mudah untuk nyahpepijat dan mengenal pasti ralat, menjadikan kod lebih jelas dan lebih mudah dibaca serta memudahkan pengubahsuaian dan analisisnya oleh pembangun pihak ketiga.
  • Jenis yang disokong termasuk: pelbagai jenis cincang, tatasusunan dan senarai, baris gilir, jenis angka dan rentetan, jenis untuk menentukan tarikh dan masa, ungkapan biasa (RegExp). Ia adalah mungkin untuk mencipta jenis anda sendiri.
  • Untuk mengatur pelaksanaan selari, adalah dicadangkan untuk menggunakan kelas dengan atribut terpencil, yang kodnya dilaksanakan sepenuhnya dalam ruang terpencil di kawasan memori yang berasingan, berinteraksi dengan proses utama dengan menghantar mesej.
  • Sokongan untuk penggunaan perpustakaan yang memudahkan sokongan dan penyahpepijatan projek web yang besar. Pelaksanaan fungsi pihak ketiga boleh disertakan dalam bentuk perpustakaan kongsi. Aplikasi boleh dibahagikan kepada bahagian dan mempercayakan pembangunan setiap bahagian kepada pasukan pengaturcara yang berasingan.
  • Satu set alatan siap sedia untuk menyokong pembangunan dalam bahasa Dart, termasuk pelaksanaan pembangunan dinamik dan alatan penyahpepijatan dengan pembetulan kod dengan segera ("edit-dan-teruskan").
  • Untuk memudahkan pembangunan dalam bahasa Dart, ia disertakan dengan SDK, pub pengurus pakej, penganalisis kod statik dart_analyzer, satu set perpustakaan, persekitaran pembangunan bersepadu DartPad dan pemalam berdaya Dart untuk IntelliJ IDEA, WebStorm, Emacs, Teks Sublime 2 dan Vim.
  • Pakej tambahan dengan perpustakaan dan utiliti diedarkan melalui repositori pub, yang mempunyai lebih daripada 20 ribu pakej.

Perubahan utama dalam keluaran Dart 2.14:

  • Pengendali anjakan tiga kali (>>>) baharu telah ditambah, yang, tidak seperti pengendali ">>", tidak melakukan aritmetik, tetapi anjakan logik yang berfungsi tanpa mengambil kira bit tanda (anjakan dilakukan tanpa membahagikan nombor positif dan negatif).
  • Mengalih keluar sekatan pada argumen jenis yang menghalang jenis fungsi generik daripada digunakan sebagai argumen jenis. Sebagai contoh, kini anda boleh menentukan: Senarai lewat (T)>idFunctions; var panggil balik = [ (nilai T) => nilai]; Fungsi S lewat (T)>(S) f;
  • Benarkan menentukan argumen dengan jenis dalam anotasi seperti @Dihentikan. Sebagai contoh, anda kini boleh menentukan: @TypeHelper (42, "Maksudnya")
  • Kaedah statik hash, hashAll dan hashAllUnordered telah ditambahkan pada perpustakaan standard (teras) dalam kelas Objek. Kelas DateTime telah menambah baik pengendalian waktu tempatan apabila menukar jam antara waktu musim panas dan musim sejuk yang tidak boleh dibahagikan dengan satu jam (contohnya, di Australia, offset 30 minit digunakan). Pakej ffi telah menambah sokongan untuk mekanisme peruntukan memori arena, yang secara automatik mengeluarkan sumber. Pakej ffigen telah menambah keupayaan untuk menjana definisi typedef jenis Dart daripada bahasa C.
  • 250 pakej paling popular daripada repositori pub.dev dan 94% daripada 1000 teratas telah ditukar kepada menggunakan mod "keselamatan nol", yang akan mengelakkan ranap sistem yang disebabkan oleh percubaan untuk menggunakan pembolehubah yang nilainya tidak ditentukan dan ditetapkan kepada "Null ” " Mod ini membayangkan bahawa pembolehubah tidak boleh mempunyai nilai nol melainkan ia diberikan nilai null secara eksplisit. Mod ini sangat menghormati jenis pembolehubah, yang membolehkan pengkompil menggunakan pengoptimuman tambahan. Pematuhan jenis disemak pada masa penyusunan, contohnya, jika anda cuba memberikan nilai "Null" kepada pembolehubah dengan jenis yang tidak membayangkan keadaan tidak ditentukan, seperti "int", ralat akan dipaparkan.
  • Set peraturan bersatu untuk penganalisis kod (linter) dicadangkan, menyediakan sokongan serentak untuk menyemak pematuhan garis panduan gaya kod untuk rangka kerja Dart dan Flutter. Atas sebab sejarah, peraturan pengekodan untuk Flutter dan Dart adalah berbeza, di samping itu, untuk Dart terdapat dua set peraturan yang sedang digunakan - peraturan yang bertele-tele daripada Google dan peraturan daripada komuniti pembangun Dart. Dart 2.14 memperkenalkan set peraturan biasa baharu untuk linter, yang diputuskan untuk digunakan secara lalai dalam projek Dart baharu dan dalam Flutter SDK. Set termasuk peraturan teras (pakej lints/core.yaml), peraturan tambahan yang disyorkan (lints/recommended.yaml) dan pengesyoran khusus Flutter (flutter_lints/flutter.yaml). Pengguna peraturan pedantik dinasihatkan untuk beralih kepada menggunakan gaya pengekodan baharu berdasarkan pengesyoran daripada dokumentasi Dart.
  • Dalam pemformat, pengoptimuman telah dibuat pada pemformatan blok kod berlatarkan, yang boleh meningkatkan prestasi pemformatan dengan ketara dan mengelakkan tafsiran samar-samar tentang pemilikan elemen ekspresi. Sebagai contoh, memanggil "..doIt" dalam ungkapan "var result = errorState ? foo : bad..doIt()" tidak melibatkan bahagian bersyarat bagi blok "buruk", tetapi keseluruhan ungkapan, jadi apabila memformat ia kini dipisahkan: var result = errorState ? foo : teruk ..doIt();
  • Sokongan untuk pemproses Apple M1 (Silikon) telah ditambahkan pada SDK, membayangkan kedua-dua keupayaan untuk menjalankan Dart VM, utiliti dan komponen SDK pada sistem dengan pemproses Apple Silicon dan sokongan untuk menyusun fail boleh laku untuk cip ini.
  • Perintah "dart pub" telah menambah sokongan untuk fail perkhidmatan baharu ".pubignore", yang membolehkan anda menentukan senarai fail yang akan dilangkau semasa menerbitkan pakej ke repositori pub.dev. Tetapan ini tidak mengganggu senarai abaikan ".gitignore" (dalam beberapa situasi, pub.dev mungkin mahu mengelak daripada memindahkan fail yang diperlukan dalam Git, contohnya, skrip dalaman yang digunakan semasa pembangunan).
  • Kerja telah dilakukan untuk meningkatkan prestasi arahan "ujian dart", yang kini tidak memerlukan ujian penyusunan semula selepas menukar pubspec jika nombor versi tidak berubah.
  • Sokongan untuk penyusunan dalam mod keserasian ECMAScript 5 telah dihentikan (perubahan akan mengakibatkan kehilangan keserasian dengan penyemak imbas IE11).
  • Utiliti individu stagehand, dartfmt dan dart2native telah diisytiharkan usang, digantikan dengan arahan terbina dalam yang dipanggil melalui utiliti dart.
  • Mekanisme Sambungan Asli VM telah ditamatkan. Untuk memanggil kod asli daripada kod Dart, adalah disyorkan untuk menggunakan Dart FFI (Antara Muka Fungsi Asing) baharu.

Pada masa yang sama, keluaran penting rangka kerja antara muka pengguna Flutter 2.5 telah dibentangkan, yang dianggap sebagai alternatif kepada React Native dan membenarkan, berdasarkan satu asas kod, untuk mengeluarkan aplikasi untuk iOS, Android, Windows, macOS dan Linux. platform, serta mencipta aplikasi untuk dijalankan dalam pelayar. Cangkerang tersuai untuk sistem pengendalian mikrokernel Fuchsia yang dibangunkan oleh Google dibina berdasarkan Flutter.

Bahagian utama kod Flutter dilaksanakan dalam bahasa Dart, dan enjin masa jalan untuk melaksanakan aplikasi ditulis dalam C++. Apabila membangunkan aplikasi, sebagai tambahan kepada bahasa Dart asli Flutter, anda boleh menggunakan antara muka Dart Foreign Function untuk memanggil kod C/C++. Prestasi pelaksanaan yang tinggi dicapai dengan menyusun aplikasi kepada kod asli untuk platform sasaran. Dalam kes ini, program tidak perlu dikompilasi semula selepas setiap perubahan - Dart menyediakan mod tambah nilai panas yang membolehkan anda membuat perubahan pada aplikasi yang sedang berjalan dan segera menilai hasilnya.

Perubahan utama dalam Flutter 2.5:

  • Membuat pengoptimuman prestasi yang ketara. Pada platform iOS dan macOS, prapenyusun shader untuk API grafik Metal telah dilaksanakan. Peningkatan kecekapan pemprosesan peristiwa tak segerak. Menyelesaikan masalah kelewatan apabila pemungut sampah menuntut semula memori daripada imej yang tidak digunakan (contohnya, semasa main balik GIF animasi 20 saat, bilangan operasi kutipan sampah telah dikurangkan daripada 400 kepada 4. Kelewatan apabila menghantar mesej antara Dart dan Objektif- C/Swift telah dikurangkan kepada 50% (iOS) atau Java/Kotlin (Android) Menambah sokongan binaan asli untuk sistem berdasarkan cip Apple Silicon.
    Bahasa Dart 2.14 dan rangka kerja Flutter 2.5 tersedia
  • Untuk platform Android, sokongan untuk menjalankan aplikasi dalam mod skrin penuh telah diwujudkan. Pelaksanaan konsep reka bentuk "Material You", yang dibentangkan sebagai pilihan Reka Bentuk Bahan generasi akan datang, diteruskan. Menambah keadaan baharu MaterialState.scrolledUnder, melaksanakan paparan dinamik bar skrol apabila mengubah saiz dan mencadangkan antara muka baharu untuk memaparkan sepanduk pemberitahuan.
  • Keupayaan pemalam kamera telah diperluaskan dengan ketara, menambah alat untuk mengawal autofokus, pendedahan, denyar, zum, pengurangan hingar dan resolusi.
  • Alat pembangun (DevTools) telah dipertingkatkan untuk memasukkan mod pemeriksaan widget yang dikemas kini, serta alat untuk mengenal pasti kelewatan pemaparan dan menjejaki kompilasi shader.
    Bahasa Dart 2.14 dan rangka kerja Flutter 2.5 tersedia
  • Pemalam yang dipertingkatkan untuk Visual Studio Code dan IntelliJ/Android Studio.

Sumber: opennet.ru

Tambah komen