Забони барномасозии Dart 2.15 ва чаҳорчӯбаи Flutter 2.8 дастрасанд

Google нашри забони барномасозии Dart 2.15-ро нашр кард, ки рушди шохаи ба таври куллӣ аз нав тарҳрезишудаи Dart 2-ро идома медиҳад, ки аз версияи аслии забони Dart бо истифодаи чопкунии сахти статикӣ фарқ мекунад (намудҳоро ба таври худкор хулоса кардан мумкин аст, аз ин рӯ мушаххас кардани намудҳо лозим нест, аммо чопкунии динамикӣ дигар истифода намешавад ва ҳисобкунии ибтидоии навъи он ба тағирёбанда таъин карда мешавад ва баъдан санҷиши сахти навъи истифода мешавад).

Хусусиятҳои забони Dart:

  • Синтаксиси шинос ва омӯхтан осон, табиӣ барои барномасозони JavaScript, C ва Java.
  • Таъмини оғози зуд ва иҷрои баланд барои ҳама браузерҳои муосири веб ва намудҳои гуногуни муҳитҳо, аз дастгоҳҳои сайёр то серверҳои пурқувват.
  • Қобилияти муайян кардани синфҳо ва интерфейсҳо, ки имкон медиҳанд, ки инкапсуляция ва истифодаи дубораи усулҳо ва додаҳои мавҷуда.
  • Муайян кардани намудҳо ислоҳ ва муайян кардани хатогиҳоро осонтар мекунад, кодро равшантар ва хондантар мекунад ва тағирот ва таҳлили онро аз ҷониби таҳиягарони тарафи сеюм осон мекунад.
  • Намудҳои дастгиришаванда иборатанд аз: намудҳои гуногуни хэшҳо, массивҳо ва рӯйхатҳо, навбатҳо, намудҳои рақамӣ ва сатр, намудҳо барои муайян кардани сана ва вақт, ифодаҳои муқаррарӣ (RegExp). Намудҳои худро эҷод кардан мумкин аст.
  • Барои ташкили иҷрои параллелӣ, истифодаи синфҳои дорои атрибути изолятсия пешниҳод карда мешавад, ки коди онҳо пурра дар фазои ҷудошуда дар минтақаи алоҳидаи хотира иҷро карда мешавад, ки бо раванди асосӣ тавассути ирсоли паёмҳо ҳамкорӣ мекунад.
  • Дастгирии истифодаи китобхонаҳое, ки дастгирӣ ва ислоҳи лоиҳаҳои бузурги вебро содда мекунанд. Амалисозии функсияҳои тарафи сеюмро метавон ба шакли китобхонаҳои муштарак дохил кард. Барномаҳоро метавон ба қисмҳо тақсим кард ва таҳияи ҳар як қисмро ба як гурӯҳи алоҳидаи барномасозон вогузор кард.
  • Маҷмӯи абзорҳои омода барои дастгирии рушд дар забони Dart, аз ҷумла татбиқи абзорҳои рушди динамикӣ ва ислоҳи ислоҳи код дар парвоз ("таҳрир кардан ва идома додан").
  • Барои содда кардани таҳия дар забони Dart, он бо SDK, паб менеҷери бастаҳо, таҳлилгари коди статикӣ dart_analyzer, маҷмӯи китобхонаҳо, муҳити ҳамгирошудаи рушд DartPad ва плагинҳои бо Dart фаъол барои IntelliJ IDEA, WebStorm, Emacs, Sublime Text меояд. 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 васеъ мекунад StatelessWidget { @override Виҷети сохтани(контексти BuildContext) { баргардонидани Сутун (кӯдакон: ['Apple', 'Orange'].map(Text.new).toList()); } }
  • Имкониятҳои марбут ба истифодабарии нишондиҳандаҳои функсия васеъ карда шуданд. Имконияти истифодаи усулҳои умумӣ ва нишондиҳандаҳои функсионалӣ барои сохтани усул ва нишондиҳандаи ғайримуқаррарӣ илова карда шуд: T id (арзиши T) => арзиш; var intId = id ; // дар версияи 2.15 ба ҷои "int Function(int) intId = id;" иҷозат дода шудааст. const fo = id; // ишора ба функсияи id. const c1 = fo ;
  • Китобхонаи dart:core дастгирии рақамҳоро беҳтар кардааст, масалан, шумо ҳоло метавонед аз ҳар як арзиши enum бо истифода аз усули ".name" арзиши сатрро бароваред, арзишҳоро аз рӯи ном интихоб кунед ё ҷуфтҳои арзишҳоро мувофиқат кунед: enum MyEnum { як , ду, се } void main() { чоп (MyEnum.one.name); // "як" чоп карда мешавад. чоп (MyEnum.values.byName('ду') == MyEnum.two); // "ҳақиқат" чоп карда мешавад. харитаи ниҳоӣ = MyEnum.values.asNameMap(); чоп (харитаи ['се'] == MyEnum.three); // "ҳақиқат". }
  • Технологияи фишурдани нишондиҳандаҳо амалӣ карда шудааст, ки имкон медиҳад, ки тасвири бештари нишондодҳоро дар муҳитҳои 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), ки дар натиҷаи истифодаи аломатҳои юникод дар код, ки тартиби намоишро тағир медиҳанд, ба вуҷуд омадааст.
  • Ҳассосияти осебпазирро (CVE-2021-22568) ислоҳ кард, ки ба шумо имкон медиҳад, ки ҳангоми нашри бастаҳо ба сервери тарафи сеюм, ки аломатҳои дастрасии pub.dev oauth2-ро қабул мекунад, ба корбари дигари pub.dev тақлид кунед. Масалан, осебпазирӣ метавонад барои ҳамла ба серверҳои бастаҳои дохилӣ ва корпоративӣ истифода шавад. Таҳиягароне, ки танҳо бастаҳоро дар pub.dev ҷойгир мекунанд, аз ин масъала таъсир намерасонанд.

Ҳамзамон, версияи назарраси чаҳорчӯбаи интерфейси корбар Flutter 2.8 муаррифӣ шуд, ки он ҳамчун алтернатива ба React Native ҳисобида мешавад ва имкон медиҳад, ки дар асоси як базаи кодҳо барномаҳоро барои iOS, Android, Windows, macOS ва платформаҳои Linux, инчунин эҷоди барномаҳо барои кор дар браузерҳо. Як қабати фармоишӣ барои системаи амалиётии микро ядрои Fuchsia, ки аз ҷониби Google таҳия шудааст, дар асоси Flutter сохта шудааст. Қайд карда мешавад, ки дар шаш моҳи охир шумораи замимаҳои Flutter 2 дар Google Play Store аз 200 ҳазор то 375 ҳазор афзоиш ёфтааст, яъне. кариб ду баробар.

Қисми асосии рамзи Flutter бо забони Dart амалӣ карда мешавад ва муҳаррики вақти корӣ барои иҷрои барномаҳо дар C++ навишта шудааст. Ҳангоми таҳияи барномаҳо, ба ғайр аз забони модарии Dart Flutter, шумо метавонед интерфейси Dart Foreign Function-ро барои занг задан ба рамзи C/C++ истифода баред. Иҷрои баланд тавассути тартиб додани барномаҳо ба коди аслӣ барои платформаҳои мақсаднок ба даст оварда мешавад. Дар ин ҳолат, пас аз ҳар як тағирот, барномаро дубора тартиб додан лозим нест - Dart режими пурборкуниро таъмин мекунад, ки ба шумо имкон медиҳад ба замимаи иҷрошаванда тағирот ворид кунед ва натиҷаро фавран арзёбӣ кунед.

Дар байни тағйирот дар версияи нави Flutter, оптимизатсияи суръати оғоз ва истеъмоли хотира дар дастгоҳҳои мобилӣ қайд карда шудааст. Пайваст кардани барномаҳо ба хидматҳои пуштибонӣ ба монанди Firebase ва Google Cloud осонтар аст. Асбобҳо барои ҳамгироӣ бо Google Ads устувор карда шуданд. Дастгирии камераҳо ва плагинҳои веб ба таври назаррас беҳтар шудааст. Асбобҳои нав барои содда кардани таҳия пешниҳод карда шуданд, масалан, виджет барои аутентификатсия бо истифода аз Firebase илова карда шуд. Муҳаррики Flame, ки барои таҳияи бозиҳои 2D бо истифода аз Flutter тарҳрезӣ шудааст, нав карда шуд.

Манбаъ: opennet.ru

Илова Эзоҳ