Dart 2.14 тили жана Flutter 2.5 алкагы жеткиликтүү

Google Dart 2.14 программалоо тилинин чыгарылышын жарыялады, ал түп тамырынан бери кайра иштелип чыккан Dart 2 бутагын өнүктүрүүнү улантат, ал Dart тилинин баштапкы версиясынан күчтүү статикалык терүүнү колдонуу менен айырмаланат (түрлөр автоматтык түрдө чыгарылат, ошондуктан тактоо менен түрлөрүнүн кереги жок, бирок динамикалык терүү мындан ары колдонулбайт жана баштапкы эсептөө түрү өзгөрмөгө дайындалат жана кийинчерээк типти катуу текшерүү колдонулат).

Дарт тилинин өзгөчөлүктөрү:

  • Тааныш жана үйрөнүүгө оңой синтаксис, JavaScript, C жана Java программисттери үчүн табигый.
  • Бардык заманбап веб-браузерлер жана портативдик түзүлүштөрдөн күчтүү серверлерге чейин ар кандай чөйрөлөр үчүн тез ишке киргизүүнү жана жогорку өндүрүмдүүлүктү камсыз кылуу.
  • Учурдагы ыкмаларды жана маалыматтарды инкапсуляциялоого жана кайра колдонууга мүмкүндүк берген класстарды жана интерфейстерди аныктоо мүмкүнчүлүгү.
  • Типтерди көрсөтүү каталарды оңдоону жана аныктоону жеңилдетет, кодду ачык-айкын жана окула турган кылып, үчүнчү тараптын иштеп чыгуучулары тарабынан аны өзгөртүүнү жана талдоону жөнөкөйлөтөт.
  • Колдоого алынган түрлөрүнө төмөнкүлөр кирет: хэштердин ар кандай түрлөрү, массивдер жана тизмелер, кезектер, сандык жана саптык типтер, дата менен убакытты аныктоо үчүн типтер, регулярдуу туюнтмалар (RegExp). Бул өз түрлөрүн түзүү мүмкүн.
  • Параллелдүү аткарууну уюштуруу үчүн изоляция атрибуту бар класстарды колдонуу сунушталат, алардын коду толугу менен өзүнчө эстутумдун зонасында обочолонгон мейкиндикте аткарылат, билдирүүлөрдү жөнөтүү аркылуу негизги процесс менен өз ара аракеттенет.
  • Чоң веб-долбоорлорду колдоону жана мүчүлүштүктөрдү оңдоону жөнөкөйлөштүрүүчү китепканаларды колдонууну колдоо. Үчүнчү тараптын функцияларды ишке ашыруулары жалпы китепканалар түрүндө киргизилиши мүмкүн. Тиркемелер бөлүктөргө бөлүнүп, ар бир бөлүгүн иштеп чыгууну өзүнчө программисттер тобуна тапшырса болот.
  • Дарт тилинде иштеп чыгууну колдоо үчүн даяр инструменттердин жыйындысы, анын ичинде динамикалык иштеп чыгууну ишке ашыруу жана кодду тез оңдоо менен мүчүлүштүктөрдү оңдоо куралдары («түзөтүү жана улантуу»).
  • Dart тилинде иштеп чыгууну жөнөкөйлөтүү үчүн ал SDK, пакет менеджери паб, dart_analyzer статикалык код анализатору, китепканалар топтому, DartPad интегралдык өнүктүрүү чөйрөсү жана IntelliJ IDEA, WebStorm, Emacs, Sublime Text үчүн Dart иштетилген плагиндер менен келет. 2 жана Vim.
  • Китепканалары жана коммуналдык кызматтары бар кошумча пакеттер 20 миңден ашык пакеттери бар паб репозиторийлери аркылуу таратылат.

Dart 2.14 релизиндеги негизги өзгөрүүлөр:

  • Жаңы үч нөөмөт оператору (>>>) кошулду, ал “>>” операторунан айырмаланып, арифметиканы эмес, белгинин битин эсепке албастан иштеген логикалык жылышты аткарат (нөөмөт бөлүккө бөлүнбөй аткарылат). оң жана терс сандар).
  • Жалпы функция түрлөрүн тип аргументи катары колдонууга тоскоол болгон аргументтердин түрү боюнча чектөө алынып салынды. Мисалы, азыр сиз белгилей аласыз: кеч тизме (T)>idFunctions; var back call = [ (T мааниси) => мааниси]; кеч S Function (T)>(S) f;
  • @Deprecated сыяктуу аннотацияларда аргументтерди көрсөтүүгө уруксат бериңиз. Мисалы, сиз азыр көрсөтсөңүз болот: @TypeHelper (42, "Мааниси")
  • Hash, hashAll жана hashAllUnordered статикалык ыкмалары Object классындагы стандарттык китепканага (негизги) кошулган. DateTime классы бир саатка бөлүнбөгөн жай менен кышкы убакыттын ортосундагы сааттарды которууда жергиликтүү убакытты башкарууну жакшыртты (мисалы, Австралияда 30 мүнөттүн жылышуусу колдонулат). Ffi пакети арена эстутумун бөлүштүрүү механизмин колдоону кошту, ал ресурстарды автоматтык түрдө чыгарат. Ffigen пакети Си тилинен Dart түрлөрүнүн typedef аныктамаларын түзүү мүмкүнчүлүгүн кошту.
  • pub.dev репозиторийиндеги 250 эң популярдуу пакеттер жана 94 топтун 1000% "нөлдүк коопсуздук" режимин колдонууга которулду, бул мааниси аныкталбаган өзгөрмөлөрдү колдонуу аракетинен келип чыккан кыйроолордон сактайт жана "Null" деп коюлган. ” " Режим өзгөрмөлөр нөл мааниге ээ боло албастыгын билдирет, эгерде алар нөл маанисин ыйгармайынча. Режим өзгөрмөлөрдүн түрлөрүн катуу сыйлайт, бул компиляторго кошумча оптималдаштырууларды колдонууга мүмкүндүк берет. Типтин шайкештиги компиляция учурунда текшерилет, мисалы, "Int" сыяктуу аныкталбаган абалды билдирбеген түрдөгү өзгөрмөгө "Null" маанисин ыйгарууга аракет кылсаңыз, ката көрсөтүлөт.
  • 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 : bad ..doIt();
  • Apple M1 (Silicon) процессорлорун колдоо SDKга кошулду, бул Apple Silicon процессору бар системаларда Dart VM, утилиталарды жана SDK компоненттерин иштетүү мүмкүнчүлүгүн жана бул чиптер үчүн аткарылуучу файлдарды компиляциялоону билдирет.
  • "Dart pub" буйругу жаңы ".pubignore" сервистик файлын колдоону кошту, ал пакетти pub.dev репозиторийине жарыялоодо өткөрүп жибере турган файлдардын тизмесин аныктоого мүмкүндүк берет. Бул жөндөөлөр ".gitignore" этибарсыз тизмесине тоскоол болбойт (айрым учурларда, pub.dev Gitке керектүү файлдарды, мисалы, иштеп чыгууда колдонулган ички скрипттерди өткөрүп жибербөөнү каалашы мүмкүн).
  • "Дарт тест" буйругунун иштешин жакшыртуу боюнча иштер жасалды, ал эми версиянын номери өзгөрбөсө, pubspecди өзгөрткөндөн кийин кайра компиляциялоону талап кылбайт.
  • ECMAScript 5 шайкештик режиминде компиляцияны колдоо токтотулду (өзгөртүү IE11 браузери менен шайкештикти жоготууга алып келет).
  • Stephand, dartfmt жана dart2native жеке утилиталары эскирген деп жарыяланып, дарт утилитасы аркылуу чакырылган орнотулган буйруктар менен алмаштырылды.
  • VM Native Extensions механизми эскирген. Дарт кодунан жергиликтүү кодду чакыруу үчүн жаңы Dart FFI (Чет элдик функция интерфейси) колдонуу сунушталат.

Ошол эле учурда Flutter 2.5 колдонуучу интерфейсинин маанилүү релизинин бет ачары болду, ал React Nativeге альтернатива катары каралат жана бир коддук базанын негизинде iOS, Android, Windows, macOS жана Linux үчүн тиркемелерди чыгарууга мүмкүндүк берет. платформалар, ошондой эле браузерлерде иштөө үчүн тиркемелерди түзүү. Google тарабынан иштелип чыккан Fuchsia микро ядролук операциялык системасы үчүн ыңгайлаштырылган кабык Flutter негизинде курулган.

Flutter кодунун негизги бөлүгү Dart тилинде ишке ашырылат, ал эми тиркемелерди аткаруу үчүн иштөө механизми C++ тилинде жазылган. Тиркемелерди иштеп чыгууда, Флуттердин дарт тилинен тышкары, сиз C/C++ кодун чакыруу үчүн Dart Foreign Function интерфейсин колдоно аласыз. Жогорку аткаруу көрсөткүчү максаттуу платформалар үчүн жергиликтүү кодго тиркемелерди түзүү аркылуу жетишилет. Бул учурда, программаны ар бир өзгөртүүдөн кийин кайра компиляциялоонун кереги жок - Dart иштеп жаткан тиркемеге өзгөртүүлөрдү киргизүүгө жана натыйжаны дароо баалоого мүмкүндүк берүүчү ысык кайра жүктөө режимин камсыз кылат.

Flutter 2.5теги негизги өзгөрүүлөр:

  • Маанилүү аткаруу оптималдаштырууларды жасады. iOS жана macOS платформаларында Metal graphics API үчүн шейдерлерди алдын ала компиляциялоо ишке ашырылган. Асинхрондук окуяларды иштетүүнүн натыйжалуулугу жогорулады. Таштанды жыйноочу колдонулбаган сүрөттөрдөн эстутумду калыбына келтиргенде кечигүү маселеси чечилди (мисалы, 20 секунддук анимацияланган GIF ойнотуу учурунда, таштанды чогултуу операцияларынын саны 400дөн 4кө чейин кыскарган. Dart жана Objective- ортосунда билдирүүлөрдү өткөрүүдөгү кечигүүлөр. C/Swift 50% (iOS) же Java/Kotlin (Android) чейин кыскартылды, Apple Silicon чипине негизделген системалар үчүн жергиликтүү куруу колдоосу кошулду.
    Dart 2.14 тили жана Flutter 2.5 алкагы жеткиликтүү
  • Android платформасы үчүн толук экран режиминде тиркемелерди иштетүү үчүн колдоо орнотулган. Кийинки муундагы Материалдык Дизайн варианты катары сунушталган "Материал Сиз" дизайн концепциясын ишке ашыруу улантылды. MaterialState.scrolledUnder жаңы абалы кошулду, өлчөмүн өзгөртүүдө жылдыруу тилкелеринин динамикалык дисплейин ишке ашырды жана эскертме баннерлерин көрсөтүү үчүн жаңы интерфейс сунушталды.
  • Камеранын плагининин мүмкүнчүлүктөрү кыйла кеңейтилип, автофокусту, экспозицияны, жарк этүүнү, масштабды, ызы-чууну азайтуу жана чечүүнү башкаруу үчүн куралдар кошулду.
  • Иштеп чыгуучунун куралдары (DevTools) жаңыртылган виджетти текшерүү режимин, ошондой эле рендерингдин кечигүүлөрүн аныктоо жана шейдердин компиляциясына көз салуу куралдарын камтуу үчүн жакшыртылды.
    Dart 2.14 тили жана Flutter 2.5 алкагы жеткиликтүү
  • Visual Studio Code жана IntelliJ/Android Studio үчүн жакшыртылган плагиндер.

Source: opennet.ru

Комментарий кошуу