Забони Dart 2.14 ва чаҳорчӯбаи Flutter 2.5 дастрасанд

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

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

  • Синтаксиси шинос ва омӯхтан осон, табиӣ барои барномасозони JavaScript, C ва Java.
  • Таъмини оғози зуд ва иҷрои баланд барои ҳама браузерҳои муосири веб ва намудҳои гуногуни муҳитҳо, аз дастгоҳҳои сайёр то серверҳои пурқувват.
  • Қобилияти муайян кардани синфҳо ва интерфейсҳо, ки имкон медиҳанд, ки инкапсуляция ва истифодаи дубораи усулҳо ва додаҳои мавҷуда.
  • Муайян кардани намудҳо ислоҳ ва муайян кардани хатогиҳоро осонтар мекунад, кодро равшантар ва хондантар мекунад ва тағирот ва таҳлили онро аз ҷониби таҳиягарони тарафи сеюм осон мекунад.
  • Намудҳои дастгиришаванда иборатанд аз: намудҳои гуногуни хэшҳо, массивҳо ва рӯйхатҳо, навбатҳо, намудҳои рақамӣ ва сатр, намудҳо барои муайян кардани сана ва вақт, ифодаҳои муқаррарӣ (RegExp). Намудҳои худро эҷод кардан мумкин аст.
  • Барои ташкили иҷрои параллелӣ, истифодаи синфҳои дорои атрибути изолятсия пешниҳод карда мешавад, ки коди онҳо пурра дар фазои ҷудошуда дар минтақаи алоҳидаи хотира иҷро карда мешавад, ки бо раванди асосӣ тавассути ирсоли паёмҳо ҳамкорӣ мекунад.
  • Дастгирии истифодаи китобхонаҳое, ки дастгирӣ ва ислоҳи лоиҳаҳои бузурги вебро содда мекунанд. Амалисозии функсияҳои тарафи сеюмро метавон ба шакли китобхонаҳои муштарак дохил кард. Барномаҳоро метавон ба қисмҳо тақсим кард ва таҳияи ҳар як қисмро ба як гурӯҳи алоҳидаи барномасозон вогузор кард.
  • Маҷмӯи абзорҳои омода барои дастгирии рушд дар забони Dart, аз ҷумла татбиқи абзорҳои рушди динамикӣ ва ислоҳи ислоҳи код дар парвоз ("таҳрир кардан ва идома додан").
  • Барои содда кардани таҳия дар забони Dart, он бо SDK, паб менеҷери бастаҳо, таҳлилгари коди статикӣ dart_analyzer, маҷмӯи китобхонаҳо, муҳити ҳамгирошудаи рушд DartPad ва плагинҳои бо Dart фаъол барои IntelliJ IDEA, WebStorm, Emacs, Sublime Text меояд. 2 ва Vim.
  • Ба воситаи анбори паб, ки зиёда аз 20 хазор баста дорад, бастахои иловагй бо китобхонахо ва воситахои коммуналй таксим карда мешаванд.

Тағироти асосӣ дар нашри Dart 2.14:

  • Оператори нави сменаи сегона (>>>) илова карда шуд, ки бар хилофи оператори “>>” на арифметикӣ, балки ивази мантиқиро иҷро мекунад, ки бидуни ба инобат гирифтани бит аломат кор мекунад (смена бидуни тақсим ба рақамҳои мусбат ва манфӣ).
  • Маҳдудиятро дар аргументҳои намуд, ки аз истифодаи намудҳои функсияҳои умумӣ ҳамчун далели намуд пешгирӣ кард, хориҷ карда шуд. Масалан, ҳоло шумо метавонед муайян кунед: Рӯйхати дер (T)>idFunctions; var бозгашт занг = [ (қимати T) => арзиш]; дер S Функсияи (T)>(S) f;
  • Иҷозат додани далелҳо бо намудҳо дар эзоҳҳо ба монанди @Deprecated. Масалан, шумо ҳоло метавонед муайян кунед: @TypeHelper (42, "Маъно")
  • Усулҳои статикии hash, hashAll ва hashAllUnordered ба китобхонаи стандартӣ (аслӣ) дар синфи Object илова карда шудаанд. Синфи DateTime коркарди вақти маҳаллиро ҳангоми табдил додани соатҳо байни вақти тобистон ва зимистон, ки ба як соат тақсим намешавад, беҳтар кардааст (масалан, дар Австралия ҷуброни 30 дақиқа истифода мешавад). Бастаи ffi дастгирии механизми тақсимоти хотираи аренаро илова кардааст, ки захираҳоро ба таври худкор мебарорад. Бастаи ffigen қобилияти тавлиди таърифҳои typedef намудҳои Dart аз забони C-ро илова кардааст.
  • 250 бастаҳои маъмултарин аз анбори pub.dev ва 94% аз беҳтарин 1000 ба истифодаи режими "бехатарии нул" гузаштанд, ки аз садамаҳо дар натиҷаи кӯшиши истифодаи тағирёбандаҳое, ки арзиши онҳо муайян карда нашудааст ва ба "Null" гузошта шудааст, пешгирӣ мекунад. ” " Режим маънои онро дорад, ки тағирёбандаҳо қиматҳои сифр дошта наметавонанд, агар онҳо ба таври возеҳ арзиши null таъин карда нашаванд. Режим ба таври қатъӣ намудҳои тағирёбандаро эҳтиром мекунад, ки ба компилятор имкон медиҳад, ки оптимизатсияи иловагиро татбиқ кунад. Мутобиқати намуд дар вақти тартибдиҳӣ санҷида мешавад, масалан, агар шумо кӯшиш кунед, ки арзиши "Null" -ро ба тағирёбанда бо навъе, ки ҳолати номуайянро дар назар надорад, ба мисли "int" таъин кунед, хатогӣ нишон дода мешавад.
  • Маҷмӯи ягонаи қоидаҳо барои таҳлилгари код (линтер) пешниҳод карда мешаванд, ки ҳамзамон дастгирии санҷиши мувофиқати дастурҳои услуби кодро барои чаҳорчӯбаи Dart ва Flutter таъмин мекунанд. Бо сабабҳои таърихӣ, қоидаҳои рамзгузории Flutter ва Dart гуногун буданд, илова бар ин, барои Dart ду маҷмӯи қоидаҳо истифода мешуданд - қоидаҳои педантикӣ аз Google ва қоидаҳои ҷомеаи таҳиягарони Dart. Dart 2.14 маҷмӯи нави умумии қоидаҳоро барои линтер муаррифӣ мекунад, ки қарор аст ба таври нобаёнӣ дар лоиҳаҳои нави Dart ва Flutter SDK истифода шавад. Маҷмӯа қоидаҳои асосӣ (бастаи lints/core.yaml), қоидаҳои иловагии тавсияшуда (lints/recommended.yaml) ва тавсияҳои мушаххаси Flutter (flutter_lints/flutter.yaml) иборат аст. Ба корбарони қоидаҳои педантикӣ тавсия дода мешавад, ки ба истифодаи услуби нави рамзгузорӣ дар асоси тавсияҳои ҳуҷҷатҳои Dart гузаранд.
  • Дар форматтер барои форматкунии блокҳои коди каскадӣ оптимизатсияҳо анҷом дода шуданд, ки метавонанд иҷрои форматкуниро ба таври назаррас беҳтар созанд ва аз тафсири номуайяни моликияти унсурҳои ифода канорагирӣ кунанд. Масалан, даъват кардани "..doIt" дар ифодаи "var result = errorState ? foo : bad..doIt()" на ба қисми шартии блоки "бад", балки ба тамоми ифода дахл дорад, бинобар ин ҳангоми форматкунӣ он ҳоло ҷудо мешавад: var result = errorState ? foo : бад ..doIt();
  • Дастгирии протсессори Apple M1 (Silicon) ба SDK илова карда шудааст, ки ҳам қобилияти идора кардани Dart VM, утилитаҳо ва ҷузъҳои SDK дар системаҳо бо протсессори Apple Silicon ва дастгирии тартиб додани файлҳои иҷрошаванда барои ин чипҳо.
  • Фармони "dart pub" дастгирии файли нави хидматрасонии ".pubignore"-ро илова кардааст, ки ба шумо имкон медиҳад рӯйхати файлҳоеро, ки ҳангоми нашри баста ба анбори pub.dev гузаронида мешаванд, муайян кунед. Ин танзимот ба рӯйхати нодида гирифтани ".gitignore" халал намерасонанд (дар баъзе ҳолатҳо, pub.dev метавонад аз интиқоли файлҳое, ки дар Git лозиманд, худдорӣ кунад, масалан, скриптҳои дохилие, ки ҳангоми таҳия истифода мешаванд).
  • Корҳо барои беҳтар кардани иҷрои фармони "test test" анҷом дода шуданд, ки ҳоло пас аз тағир додани pubspec, агар рақами версия тағир наёфта бошад, санҷишҳои такрориро талаб намекунад.
  • Дастгирии компиляция дар реҷаи мутобиқати ECMAScript 5 қатъ карда шуд (тағйирот боиси аз даст додани мутобиқат бо браузери IE11 мегардад).
  • Утилитҳои инфиродии stephand, dartfmt ва dart2native кӯҳна эълон карда шуданд ва онҳоро бо фармонҳои дарунсохт, ки тавассути утилитаи dart даъват шудаанд, иваз карданд.
  • Механизми VM Native Extensions бекор карда шудааст. Барои занг задан ба рамзи модарӣ аз коди Dart, тавсия дода мешавад, ки Dart FFI нав (Интерфейси Функсияи хориҷӣ) истифода шавад.

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

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

Тағироти асосӣ дар Flutter 2.5:

  • Оптимизатсияи назарраси иҷроишро анҷом дод. Дар платформаҳои iOS ва macOS, пешакӣ тартиб додани шейдерҳо барои API графикии Metal амалӣ карда шудааст. Баланд бардоштани самаранокии коркарди рӯйдодҳои асинхронӣ. Масъалаи таъхир дар вақти барқароркунии хотираи партовгоҳ аз тасвирҳои истифоданашуда ҳал карда шуд (масалан, ҳангоми бозидани GIF-и аниматсионӣ 20 сония, шумораи амалиёти ҷамъоварии ахлот аз 400 то 4 кам карда шуд. Таъхирҳо ҳангоми интиқоли паёмҳо байни Dart ва Objective- C/Swift то 50% кам карда шуд (iOS) ё Java/Kotlin (Android) Дастгирии бунёдии маҳаллӣ барои системаҳо дар асоси чипи Apple Silicon илова карда шуд.
    Забони Dart 2.14 ва чаҳорчӯбаи Flutter 2.5 дастрасанд
  • Барои платформаи Android, дастгирии иҷро кардани барномаҳо дар ҳолати пурраи экран муқаррар карда шудааст. Татбиқи консепсияи тарроҳии "Material You", ки ҳамчун варианти насли ояндаи моддӣ пешниҳод шудааст, идома ёфт. Ҳолати нави MaterialState.scrolledUnder илова карда шуд, намоиши динамикии сатрҳои ҳаракат ҳангоми тағир додани андоза амалӣ карда шуд ва интерфейси нав барои намоиши баннерҳои огоҳӣ пешниҳод карда шуд.
  • Имкониятҳои плагини камера ба таври назаррас васеъ карда шуданд, ки асбобҳо барои идоракунии автофокус, экспозиция, флеш, масштаб, кам кардани садо ва ҳалкунандаро илова карданд.
  • Асбобҳои таҳиякунанда (DevTools) барои дохил кардани режими навшудаи санҷиши виджетҳо, инчунин асбобҳо барои муайян кардани таъхирҳои намоиш ва пайгирии компиляцияи шейдер такмил дода шуданд.
    Забони Dart 2.14 ва чаҳорчӯбаи Flutter 2.5 дастрасанд
  • Плагинҳои такмилёфта барои Visual Studio Code ва IntelliJ/Android Studio.

Манбаъ: opennet.ru

Илова Эзоҳ