Dart 2.15 програмчлалын хэл болон Flutter 2.8 фреймворк ашиглах боломжтой

Google компани Dart 2.15 програмчлалын хэлийг гаргасан бөгөөд энэ нь Dart 2-ын үндсэн хувилбараас хүчтэй статик бичих (төрлийг автоматаар дүгнэх боломжтой) ашиглан эрс өөрчилсөн Dart XNUMX салбарыг үргэлжлүүлэн хөгжүүлж байна. төрлүүд шаардлагагүй, гэхдээ динамик бичихийг ашиглахаа больсон бөгөөд анхны тооцооллыг тухайн төрлийг хувьсагчдад оноож, дараа нь хатуу төрлийн шалгалтыг хэрэглэнэ).

Дарт хэлний онцлог:

  • JavaScript, C, Java программистуудад зориулсан танил, сурахад хялбар синтакс.
  • Зөөврийн төхөөрөмжөөс эхлээд хүчирхэг серверүүд хүртэл орчин үеийн бүх вэб хөтчүүд болон янз бүрийн төрлийн орчныг хурдан эхлүүлэх, өндөр гүйцэтгэлийг хангах.
  • Одоо байгаа арга, өгөгдлийг багтаах, дахин ашиглах боломжийг олгодог анги, интерфейсийг тодорхойлох чадвар.
  • Төрлийг зааж өгөх нь дибаг хийх, алдааг тодорхойлоход хялбар болгож, кодыг илүү ойлгомжтой, уншихад хялбар болгож, гуравдагч этгээдийн хөгжүүлэгчид өөрчлөх, дүн шинжилгээ хийхэд хялбар болгодог.
  • Дэмжигдсэн төрлүүдэд: төрөл бүрийн хэш, массив ба жагсаалт, дараалал, тоон болон мөрийн төрлүүд, огноо, цагийг тодорхойлох төрөл, ердийн илэрхийлэл (RegExp) орно. Өөрийнхөө төрлийг бий болгох боломжтой.
  • Зэрэгцээ гүйцэтгэлийг зохион байгуулахын тулд код нь тусдаа санах ойн бүсэд бүхэлдээ тусгаарлагдсан орон зайд, мессеж илгээх замаар үндсэн процесстой харьцдаг, тусгаарлах шинж чанартай ангиудыг ашиглахыг санал болгож байна.
  • Томоохон вэб төслүүдийг дэмжих, дибаг хийхийг хялбаршуулдаг номын сангуудыг ашиглахад дэмжлэг үзүүлэх. Гуравдагч этгээдийн функцүүдийн хэрэгжилтийг дундын номын сангийн хэлбэрээр оруулж болно. Аппликейшнүүдийг хэсэг болгон хувааж, хэсэг тус бүрийн боловсруулалтыг програмистуудын тусдаа багт даатгаж болно.
  • Dart хэл дээрх хөгжлийг дэмжих бэлэн хэрэгслүүдийн багц, үүнд код засах динамик хөгжүүлэлт, дибаг хийх хэрэгслийг шууд хэрэгжүүлэх (“засварлах, үргэлжлүүлэх”).
  • Dart хэл дээрх хөгжлийг хялбарчлахын тулд энэ нь SDK, багц менежер паб, статик код анализатор dart_analyzer, номын сангуудын багц, DartPad хөгжүүлэлтийн нэгдсэн орчин, IntelliJ IDEA, WebStorm, Emacs, Sublime Text-д зориулсан Dart-ийг идэвхжүүлсэн залгаасуудтай ирдэг. 2 ба Vim.
  • Номын сан, хэрэгслүүд бүхий нэмэлт багцуудыг 22 мянга орчим багц бүхий паб репозитороор дамжуулан түгээдэг.

Dart 2.15 хувилбарт гарсан томоохон өөрчлөлтүүд:

  • Ажиллагчдыг тусгаарлах замаар даалгавруудыг хурдан зэрэгцүүлэн гүйцэтгэх хэрэгслээр хангадаг. Олон цөмт системүүд дээр Dart ажиллах хугацаа нь анхдагчаар нэг CPU-ийн цөм дээр програмын кодыг ажиллуулж, асинхрон оролт/гаралт, файл руу бичих, сүлжээний дуудлага хийх зэрэг системийн даалгавруудыг гүйцэтгэхэд бусад цөмүүдийг ашигладаг. Ажиллагчидаа зэрэгцүүлэн ажиллуулах шаардлагатай програмуудын хувьд, жишээлбэл, интерфэйс дээр хөдөлгөөнт дүрс үзүүлэхийн тулд үндсэн програмын урсгалтай нэгэн зэрэг бие биенээсээ тусгаарлагдсан, бусад CPU цөм дээр гүйцэтгэсэн тусдаа кодын блокуудыг (тусгаарлах) эхлүүлэх боломжтой. . Ижил өгөгдлийн багцтай ажилладаг кодыг нэгэн зэрэг гүйцэтгэхэд гарч болох алдаанаас хамгаалахын тулд өөр өөр тусгаарлах блокуудад хувирах объектуудыг хуваалцахыг хориглодог бөгөөд зохицуулагчид хоорондын харилцан үйлчлэлд мессеж дамжуулах загварыг ашигладаг.

    Dart 2.15 нь шинэ үзэл баримтлалыг нэвтрүүлсэн - тусгаарлагдсан блокийн бүлгүүд (тусгаарлах бүлгүүд) нь нэг бүлгийн хэсэг болох тусгаарлагдсан блокууд дахь янз бүрийн дотоод өгөгдлийн бүтцэд хуваалцах хандалтыг зохион байгуулах боломжийг олгодог бөгөөд энэ нь бүлгийн зохицуулагчид хоорондын харилцан үйлчлэлийн зардлыг мэдэгдэхүйц бууруулах боломжтой юм. . Жишээлбэл, одоо байгаа бүлэгт нэмэлт тусгаарлах блок ажиллуулах нь 100 дахин хурдан бөгөөд тусдаа тусгаарлах блок ажиллуулахаас 10-100 дахин бага санах ой шаарддаг бөгөөд энэ нь програмын өгөгдлийн бүтцийг эхлүүлэх хэрэгцээг арилгадаг.

    Бүлэг дэх тусгаарлах блокууд нь хувьсах объектуудад хуваалцсан хандалтыг хориглосон хэвээр байгаа ч бүлгүүд хуваалцсан овоолгын санах ойг ашигладаг бөгөөд энэ нь нөөц их шаарддаг хуулбарлах үйлдлийг хийх шаардлагагүйгээр объектыг нэг блокоос нөгөө блок руу шилжүүлэх ажлыг ихээхэн хурдасгах боломжтой. Шинэ хувилбар нь мөн Isolate.exit() руу залгах үед боловсруулагчийн үр дүнг хуулбарлах үйлдлүүдгүйгээр эх тусгаарлах блок руу шилжүүлэх боломжийг олгодог. Үүнээс гадна мессеж дамжуулах механизмыг оновчтой болгосон - одоо жижиг, дунд мессежийг ойролцоогоор 8 дахин хурдан боловсруулж байна. SendPort.send() дуудлагыг ашиглан тусгаарлагдмал хооронд дамжуулж болох объектуудад зарим төрлийн функц, хаалт, стекийн мөрүүд орно.

  • Бусад объектын бие даасан функцүүдэд заагч үүсгэх хэрэгслүүдэд (урагдалт) бүтээгчийн кодонд ижил төстэй заагч үүсгэх хязгаарлалтыг арилгасан бөгөөд энэ нь Flutter номын сан дээр суурилсан интерфейсийг бүтээхэд хэрэг болно. Жишээ нь, олон Текст виджет агуулсан Баганын виджет үүсгэхийн тулд та ".map()" гэж дуудаж, Текст объектын Text.new үүсгэгч рүү заагчийг дамжуулж болно: анги FruitWidget extends StatelessWidget { @override Widget build(BuildContext context) { буцаах багана(хүүхдүүд: ['Apple', 'Orange'].map(Text.new).toList()); } }
  • Функцийн заагчийг ашиглахтай холбоотой боломжуудыг өргөжүүлсэн. Ерөнхий бус арга, заагч үүсгэхийн тулд ерөнхий арга, функцийн заагчийг ашиглах чадварыг нэмсэн: T id (T утга) => утга; var intId = id ; // "int Function(int) intId = id;"-ийн оронд 2.15 хувилбарт зөвшөөрөгдсөн. const fo = id; // функц id руу заагч. const c1 = fo ;
  • Dart:core номын сан нь тоонуудын дэмжлэгийг сайжруулсан, жишээлбэл, та одоо ".name" аргыг ашиглан тоон утга бүрээс мөрийн утгыг гаргаж, утгуудыг нэрээр нь сонгох эсвэл хос утгуудыг тааруулах боломжтой: enum MyEnum { one , хоёр, гурав } void main() { хэвлэх(MyEnum.one.name); // "нэг" хэвлэгдэх болно. хэвлэх(MyEnum.values.byName('хоёр') == MyEnum.two); // "үнэн" хэвлэгдэх болно. эцсийн газрын зураг = MyEnum.values.asNameMap(); хэвлэх(газрын зураг['гурван'] == MyEnum.гурван); // "үнэн". }
  • Хаяглахад 64 битийн зай хангалттай байвал (32 ГБ-аас ихгүй санах ой ашигладаг) 4 битийн орчинд заагчийг илүү нягт дүрслэх боломжийг олгодог заагчийг шахах техникийг хэрэгжүүлсэн. Туршилтууд нь ийм оновчлол нь овоолгын хэмжээг ойролцоогоор 10% -иар бууруулах боломжтой болохыг харуулсан. Flutter SDK-д шинэ горим нь анхдагчаар Android-д аль хэдийн идэвхжсэн бөгөөд дараагийн хувилбарт iOS-д идэвхжүүлэхээр төлөвлөж байна.
  • Dart SDK нь дибаг хийх, гүйцэтгэлд дүн шинжилгээ хийх хэрэгслүүдийг (DevTools) агуулдаг бөгөөд эдгээрийг өмнө нь тусдаа багцаар нийлүүлдэг байсан.
  • "Dart pub" команд болон pub.dev багцын репозиторуудад нууц мэдээллийг санамсаргүйгээр нийтлэх, тухайлбал багц доторх тасралтгүй интеграцийн систем болон үүлэн орчинд зориулсан итгэмжлэлүүдийг үлдээх зэрэг хэрэгслүүдийг нэмсэн. Хэрэв ийм алдагдал илэрсэн бол "dart pub publish" командын гүйцэтгэл алдааны мэдэгдлээр таслагдах болно. Хэрэв худал эерэг гарсан бол шалгалтыг цагаан жагсаалтаар давж гарах боломжтой.
  • Аюултай алдаа эсвэл эмзэг байдал илэрсэн тохиолдолд багцын аль хэдийн хэвлэгдсэн хувилбарыг хүчингүй болгох боломжийг pub.dev репозитор дээр нэмсэн. Өмнө нь ийм залруулга хийхдээ залруулах хувилбарыг нийтлэх практик байсан боловч зарим тохиолдолд одоо байгаа хувилбарыг цуцалж, цаашдын түгээлтийг яаралтай зогсоох шаардлагатай байдаг (жишээлбэл, засвар хараахан бэлэн болоогүй эсвэл бүрэн хувилбар гарсан бол). туршилтын хувилбарын оронд алдаагаар нийтлэгдсэн). Хүчингүй болгосны дараа багцыг "pub get" болон "pub upgrade" командуудад тодорхойлохоо больсон бөгөөд үүнийг суулгасан системд дараагийн удаа "pub get"-ийг гүйцэтгэхэд тусгай анхааруулга өгдөг.
  • Дэлгэцийн дарааллыг өөрчилдөг кодонд юникод тэмдэгт ашигласнаас үүссэн эмзэг байдлын (CVE-2021-22567) хамгаалалт нэмэгдсэн.
  • pub.dev oauth2021 хандалтын жетоныг хүлээн авдаг гуравдагч талын серверт багц нийтлэх үед өөр pub.dev хэрэглэгчийн дүрд хувирах боломжийг олгодог эмзэг байдлыг (CVE-22568-2) зассан. Жишээлбэл, эмзэг байдлыг дотоод болон корпорацийн багц серверүүд рүү халдахад ашиглаж болно. Зөвхөн pub.dev дээр багц байршуулдаг хөгжүүлэгчид энэ асуудалд өртөхгүй.

Үүний зэрэгцээ, Flutter 2.8 хэрэглэгчийн интерфэйсийн хүрээний томоохон хувилбарыг танилцуулсан бөгөөд энэ нь React Native-ийн өөр хувилбар гэж тооцогддог бөгөөд нэг кодын суурь дээр үндэслэн iOS, Android, Windows, macOS болон бусад үйлдлийн системд зориулсан програмуудыг гаргах боломжийг олгодог. Линукс платформууд, түүнчлэн хөтөч дээр ажиллах програмуудыг бий болгох. Google-ийн боловсруулсан Fuchsia microkernel үйлдлийн системд зориулсан тусгай бүрхүүл нь Flutter-ийн үндсэн дээр бүтээгдсэн. Сүүлийн зургаан сарын хугацаанд Google Play Store дахь Flutter 2 програмын тоо 200 мянгаас 375 мянга болж нэмэгдсэн гэж тэмдэглэжээ. бараг хоёр дахин.

Flutter кодын үндсэн хэсэг нь Dart хэл дээр хэрэгждэг бөгөөд програмуудыг гүйцэтгэх ажиллах үеийн хөдөлгүүр нь C++ хэл дээр бичигдсэн байдаг. Аппликэйшнүүдийг боловсруулахдаа Flutter-ийн төрөлх Dart хэлээс гадна Dart Foreign Function интерфейсийг ашиглан C/C++ код руу залгаж болно. Зорилтот платформд зориулсан програмуудыг эх код болгон хөрвүүлэх замаар гүйцэтгэлийн өндөр гүйцэтгэлд хүрдэг. Энэ тохиолдолд програмыг өөрчлөлт бүрийн дараа дахин хөрвүүлэх шаардлагагүй - Dart нь ажиллаж байгаа програмд ​​өөрчлөлт оруулах, үр дүнг шууд үнэлэх боломжийг олгодог халуун дахин ачаалах горимыг өгдөг.

Flutter-ийн шинэ хувилбарт гарсан өөрчлөлтүүдийн дунд гар утасны төхөөрөмж дээрх эхлүүлэх хурд, санах ойн зарцуулалтыг оновчтой болгохыг тэмдэглэв. Firebase болон Google Cloud зэрэг арын үйлчилгээнд програмуудыг холбоход илүү хялбар байдаг. Google зартай нэгтгэх хэрэгслүүд тогтворжсон. Камер болон вэб залгаасуудын дэмжлэг мэдэгдэхүйц сайжирсан. Хөгжлийг хялбарчлах шинэ хэрэгслүүдийг санал болгосон, жишээлбэл, Firebase ашиглан баталгаажуулах виджетийг нэмсэн. Flutter ашиглан 2D тоглоом бүтээхэд зориулагдсан Flame хөдөлгүүр шинэчлэгдлээ.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх