Iaith raglennu Dart 2.15 a fframwaith Flutter 2.8 ar gael

Mae Google wedi cyhoeddi rhyddhau iaith raglennu Dart 2.15, sy'n parhau â datblygiad cangen o Dart 2 wedi'i hailgynllunio'n radical, sy'n wahanol i fersiwn wreiddiol yr iaith Dart trwy ddefnyddio teipio statig cryf (gellir casglu mathau yn awtomatig, felly nid oes angen nodi mathau, ond nid yw teipio deinamig yn cael ei ddefnyddio mwyach a'i gyfrifo i ddechrau mae'r math yn cael ei neilltuo i'r newidyn a gwiriad math llym yn cael ei gymhwyso wedyn).

Nodweddion yr iaith Dart:

  • Cystrawen gyfarwydd a hawdd ei ddysgu, naturiol ar gyfer rhaglenwyr JavaScript, C a Java.
  • Sicrhau lansiad cyflym a pherfformiad uchel ar gyfer pob porwr gwe modern a gwahanol fathau o amgylcheddau, o ddyfeisiau cludadwy i weinyddion pwerus.
  • Y gallu i ddiffinio dosbarthiadau a rhyngwynebau sy'n caniatáu amgáu ac ailddefnyddio dulliau a data presennol.
  • Mae pennu mathau yn ei gwneud hi'n haws dadfygio a nodi gwallau, yn gwneud y cod yn gliriach ac yn fwy darllenadwy, ac yn symleiddio ei addasu a'i ddadansoddi gan ddatblygwyr trydydd parti.
  • Mae mathau a gefnogir yn cynnwys: gwahanol fathau o hashes, araeau a rhestrau, ciwiau, mathau rhifol a llinynnol, mathau ar gyfer pennu dyddiad ac amser, mynegiadau rheolaidd (RegExp). Mae'n bosibl creu eich mathau eich hun.
  • Er mwyn trefnu gweithrediad cyfochrog, cynigir defnyddio dosbarthiadau gyda'r priodoledd ynysu, y mae ei god yn cael ei weithredu'n gyfan gwbl mewn gofod ynysig mewn man cof ar wahân, gan ryngweithio â'r brif broses trwy anfon negeseuon.
  • Cefnogaeth i'r defnydd o lyfrgelloedd sy'n symleiddio cefnogaeth a dadfygio prosiectau gwe mawr. Gellir cynnwys gweithrediad swyddogaethau trydydd parti ar ffurf llyfrgelloedd a rennir. Gellir rhannu ceisiadau yn rhannau ac ymddiried datblygiad pob rhan i dîm ar wahân o raglenwyr.
  • Set o offer parod i gefnogi datblygiad yn yr iaith Dart, gan gynnwys gweithredu offer datblygu deinamig a dadfygio gyda chywiro cod ar y hedfan (“golygu a pharhau”).
  • Er mwyn symleiddio datblygiad yn yr iaith Dart, mae'n dod gyda SDK, tafarn rheolwr pecyn, dadansoddwr cod statig dart_analyzer, set o lyfrgelloedd, amgylchedd datblygu integredig DartPad ac ategion wedi'u galluogi gan Dart ar gyfer IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 a Vim.
  • Dosberthir pecynnau ychwanegol gyda llyfrgelloedd a chyfleustodau trwy'r ystorfa dafarnau, sydd â thua 22 mil o becynnau.

Newidiadau mawr yn natganiad Dart 2.15:

  • Yn darparu offer ar gyfer cyflawni tasgau'n gyfochrog yn gyflym gan ynysu'r trinwyr. Ar systemau aml-graidd, mae amser rhedeg Dart yn ddiofyn yn rhedeg cod cymhwysiad ar un craidd CPU ac yn defnyddio creiddiau eraill i gyflawni tasgau system fel I/O asyncronig, ysgrifennu at ffeiliau, neu wneud galwadau rhwydwaith. Ar gyfer cymwysiadau sydd angen gweithredu eu trinwyr yn gyfochrog, er enghraifft, i wneud animeiddiad yn y rhyngwyneb, mae'n bosibl lansio blociau o god ar wahân (ynysu), wedi'u hynysu oddi wrth ei gilydd a'u gweithredu ar greiddiau CPU eraill ar yr un pryd â phrif edefyn y cais . Er mwyn amddiffyn rhag gwallau sy'n codi wrth weithredu cod ar yr un pryd gan weithio gyda'r un set o ddata, gwaherddir rhannu gwrthrychau mutable mewn gwahanol flociau ynysu, a defnyddir model trosglwyddo negeseuon ar gyfer rhyngweithio rhwng trinwyr.

    Mae Dart 2.15 yn cyflwyno cysyniad newydd - grwpiau bloc ynysig (grwpiau ynysu), sy'n eich galluogi i drefnu mynediad a rennir i strwythurau data mewnol amrywiol mewn blociau ynysu sy'n rhan o'r un grŵp, a all leihau gorbenion yn sylweddol wrth ryngweithio rhwng trinwyr mewn grŵp . Er enghraifft, mae lansio bloc ynysu ychwanegol mewn grŵp presennol 100 gwaith yn gyflymach ac mae angen 10-100 gwaith yn llai o gof na lansio bloc ynysu ar wahân, oherwydd dileu'r angen i gychwyn strwythurau data rhaglen.

    Er gwaethaf y ffaith bod blociau ynysu mewn grŵp yn dal i wahardd mynediad a rennir i wrthrychau mutable, mae'r grwpiau'n defnyddio cof tomen a rennir, a all gyflymu'r broses o drosglwyddo gwrthrychau o un bloc i'r llall yn sylweddol heb yr angen i gyflawni gweithrediadau copi sy'n defnyddio llawer o adnoddau. Mae'r fersiwn newydd hefyd yn caniatáu ichi basio canlyniad y triniwr wrth ffonio Isolate.exit() i drosglwyddo data i'r rhiant ynysu bloc heb weithrediadau copïo. Yn ogystal, mae'r mecanwaith trosglwyddo negeseuon wedi'i optimeiddio - mae negeseuon bach a chanolig bellach yn cael eu prosesu tua 8 gwaith yn gyflymach. Mae gwrthrychau y gellir eu trosglwyddo rhwng unigion gan ddefnyddio'r alwad SendPort.send () yn cynnwys rhai mathau o swyddogaethau, cau, ac olion stac.

  • Yn yr offer ar gyfer creu awgrymiadau i swyddogaethau unigol mewn gwrthrychau eraill (rhwygo i ffwrdd), mae cyfyngiadau ar greu awgrymiadau tebyg mewn cod adeiladwr wedi'u dileu, a all fod yn ddefnyddiol wrth adeiladu rhyngwynebau yn seiliedig ar y llyfrgell Flutter. Er enghraifft, i greu teclyn Colofn sy'n cynnwys teclynnau Testun lluosog, gallwch ffonio ".map()" a phasio awgrymiadau i adeiladwr Text.new y gwrthrych Testun: dosbarth FruitWidget yn ymestyn StatelessWidget { @override Widget build(BuildContext context) { dychwelyd Colofn (plant: ['Afal', 'Orange'].map(Text.new).toList()); } }
  • Mae'r posibiliadau sy'n gysylltiedig â defnyddio awgrymiadau swyddogaeth wedi'u hehangu. Ychwanegwyd y gallu i ddefnyddio dulliau generig ac awgrymiadau swyddogaeth i greu dull a phwyntydd nad yw'n generig: T id (gwerth T) => gwerth; var intId = id ; // a ganiateir yn fersiwn 2.15 yn lle "int Function(int) intId = id;" const fo = id; // pwyntydd i swyddogaeth id. const c1 = fo ;
  • Mae'r llyfrgell dart:core wedi gwella cefnogaeth ar gyfer enums, er enghraifft, gallwch nawr allbynnu gwerth llinyn o bob gwerth enum gan ddefnyddio'r dull ".name", dewis gwerthoedd yn ôl enw, neu baru parau o werthoedd: enum MyEnum { un , dau, tri } gwag prif() { print(MyEnum.one.name); // Bydd "un" yn cael ei argraffu. print(MyEnum.values.byName('dau') == MyEnum.two); // Bydd "gwir" yn cael ei argraffu. map terfynol = MyEnum.values.asNameMap(); print(map['three'] == FyEnum.three); // "gwir". }
  • Mae techneg cywasgu pwyntydd wedi'i rhoi ar waith sy'n caniatáu defnyddio cynrychiolaeth fwy cryno o awgrymiadau mewn amgylcheddau 64-bit os yw gofod cyfeiriad 32-did yn ddigonol ar gyfer mynd i'r afael (dim mwy na 4 GB o gof yn cael ei ddefnyddio). Mae profion wedi dangos bod optimeiddio o'r fath yn ei gwneud hi'n bosibl lleihau maint y domen tua 10%. Yn y Flutter SDK, mae'r modd newydd eisoes wedi'i alluogi ar gyfer Android yn ddiofyn, a bwriedir ei alluogi ar gyfer iOS mewn datganiad yn y dyfodol.
  • Mae'r Dart SDK yn cynnwys offer ar gyfer dadfygio a dadansoddi perfformiad (DevTools), a gyflenwyd yn flaenorol mewn pecyn ar wahân.
  • Mae offer wedi'u hychwanegu at y gorchymyn “dart pub” a'r storfeydd pecyn pub.dev i olrhain cyhoeddi gwybodaeth gyfrinachol yn ddamweiniol, er enghraifft, gadael tystlythyrau ar gyfer systemau integreiddio parhaus ac amgylcheddau cwmwl y tu mewn i'r pecyn. Os canfyddir gollyngiadau o'r fath, bydd neges gwall yn ymyrryd â gweithrediad y gorchymyn “dart pub publish”. Os oedd positif ffug, mae'n bosibl osgoi'r siec trwy restr wen.
  • Mae'r gallu i ddirymu fersiwn o becyn a gyhoeddwyd eisoes wedi'i ychwanegu at ystorfa pub.dev, er enghraifft, os darganfyddir gwallau peryglus neu wendidau. Yn flaenorol, ar gyfer cywiriadau o'r fath, yr arfer oedd cyhoeddi fersiwn gywirol, ond mewn rhai sefyllfaoedd mae angen canslo'r datganiad presennol a rhoi'r gorau i'w ddosbarthu ymhellach ar fyrder (er enghraifft, os nad yw'r cywiriad yn barod eto neu os oedd datganiad llawn. cyhoeddi trwy gamgymeriad yn lle fersiwn prawf). Ar ôl ei ddirymu, nid yw'r pecyn bellach yn cael ei nodi yn y gorchmynion “pub get” ac “uwchraddio tafarndai”, ac ar systemau sydd eisoes wedi'i osod, rhoddir rhybudd arbennig y tro nesaf y bydd “pub get” yn cael ei weithredu.
  • Ychwanegwyd amddiffyniad rhag bregusrwydd (CVE-2021-22567) a achosir gan ddefnyddio nodau unicode yn y cod sy'n newid y drefn arddangos.
  • Wedi trwsio bregusrwydd (CVE-2021-22568) sy'n eich galluogi i ddynwared defnyddiwr pub.dev arall wrth gyhoeddi pecynnau i weinydd trydydd parti sy'n derbyn tocynnau mynediad pub.dev oauth2. Er enghraifft, gellid defnyddio'r bregusrwydd i ymosod ar weinyddion pecyn mewnol a chorfforaethol. Nid yw'r mater hwn yn effeithio ar ddatblygwyr sydd ond yn cynnal pecynnau ar pub.dev.

Ar yr un pryd, cyflwynwyd datganiad sylweddol o'r fframwaith rhyngwyneb defnyddiwr Flutter 2.8, sy'n cael ei ystyried fel dewis arall yn lle React Native ac sy'n caniatáu, yn seiliedig ar un sylfaen cod, i ryddhau cymwysiadau ar gyfer iOS, Android, Windows, macOS a Llwyfannau Linux, yn ogystal â chreu cymwysiadau i'w rhedeg mewn porwyr. Mae cragen arfer ar gyfer system weithredu microkernel Fuchsia a ddatblygwyd gan Google wedi'i hadeiladu ar sail Flutter. Nodir, dros y chwe mis diwethaf, fod nifer y cymwysiadau Flutter 2 yn Google Play Store wedi cynyddu o 200 mil i 375 mil, h.y. bron ddwywaith.

Gweithredir prif ran y cod Flutter yn yr iaith Dart, ac mae'r peiriant amser rhedeg ar gyfer gweithredu cymwysiadau wedi'i ysgrifennu yn C ++. Wrth ddatblygu cymwysiadau, yn ogystal ag iaith frodorol Dart Flutter, gallwch ddefnyddio rhyngwyneb Dart Foreign Function i alw cod C/C++. Cyflawnir perfformiad gweithredu uchel trwy lunio cymwysiadau i god brodorol ar gyfer llwyfannau targed. Yn yr achos hwn, nid oes angen ail-grynhoi'r rhaglen ar ôl pob newid - mae Dart yn darparu modd ail-lwytho poeth sy'n eich galluogi i wneud newidiadau i raglen redeg a gwerthuso'r canlyniad ar unwaith.

Ymhlith y newidiadau yn y datganiad newydd o Flutter, nodir optimeiddio cyflymder lansio a defnydd cof ar ddyfeisiau symudol. Mae'n haws cysylltu apiau â gwasanaethau backend fel Firebase a Google Cloud. Mae offer ar gyfer integreiddio â Google Ads wedi'u sefydlogi. Mae cefnogaeth i gamerâu ac ategion gwe wedi gwella'n sylweddol. Mae offer newydd wedi'u cynnig i symleiddio datblygiad, er enghraifft, mae teclyn wedi'i ychwanegu i'w ddilysu gan ddefnyddio Firebase. Mae'r injan Fflam, a gynlluniwyd ar gyfer datblygu gemau 2D gan ddefnyddio Flutter, wedi'i diweddaru.

Ffynhonnell: opennet.ru

Ychwanegu sylw