Dart 2.15 programmeartaal en Flutter 2.8 framework beskikber

Google hat de frijlitting fan 'e programmeartaal Dart 2.15 publisearre, dy't de ûntwikkeling fan in radikaal opnij ûntworpen tûke fan Dart 2 trochgiet, dy't ferskilt fan' e orizjinele ferzje fan 'e Dart-taal troch it brûken fan sterke statyske typen (typen kinne automatysk ôfliede, dus it opjaan fan typen is net nedich, mar dynamysk typen wurdt net mear brûkt en earst berekkene wurdt it type tawiisd oan de fariabele en strikte typekontrôle wurdt dêrnei tapast).

Funksjes fan 'e Dart-taal:

  • Fertroude en maklik te learen syntaksis, natuerlik foar JavaSkript-, C- en Java-programmeurs.
  • Snelle lansearring en hege prestaasjes garandearje foar alle moderne webbrowsers en ferskate soarten omjouwings, fan draachbere apparaten oant krêftige servers.
  • De mooglikheid om klassen en ynterfaces te definiearjen dy't ynkapseling en opnij brûke fan besteande metoaden en gegevens.
  • It opjaan fan typen makket it makliker om flaters te debuggen en te identifisearjen, makket de koade dúdliker en lêsber, en simplifies de wiziging en analyse derfan troch ûntwikkelders fan tredden.
  • Stipe typen omfetsje: ferskate soarten hashes, arrays en listen, wachtrijen, numerike en tekenrige typen, typen foar it bepalen fan datum en tiid, reguliere útdrukkingen (RegExp). It is mooglik om jo eigen soarten te meitsjen.
  • Om parallelle útfiering te organisearjen, wurdt it foarsteld om klassen te brûken mei it isolate-attribút, wêrfan de koade folslein yn isolearre romte wurdt útfierd yn in apart ûnthâldgebiet, ynteraksje mei it haadproses troch berjochten te ferstjoeren.
  • Stipe foar it brûken fan biblioteken dy't de stipe en debuggen fan grutte webprojekten ferienfâldigje. Implementaasjes fan funksjes fan tredden kinne wurde opnommen yn 'e foarm fan dielde bibleteken. Applikaasjes kinne wurde ferdield yn dielen en fertrouwe de ûntwikkeling fan elk diel oan in apart team fan programmeurs.
  • In set fan klearmakke ark om ûntwikkeling te stypjen yn 'e Dart-taal, ynklusyf de ymplemintaasje fan dynamyske ûntwikkeling en debuggen-ark mei koadekorreksje op 'e flecht ("bewurkje-en-trochgean").
  • Om ûntwikkeling yn 'e Dart-taal te ferienfâldigjen, komt it mei in SDK, in pakketbehearder pub, in statyske koadeanalysator dart_analyzer, in set biblioteken, in yntegreare ûntwikkelingsomjouwing DartPad en Dart-ynskeakele plugins foar IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 en wim.
  • Дополнительные пакеты с библиотеками и утилитами распространяются через репозиторий pub, который насчитывает около 22 тысяч пакетов.

Grutte feroaringen yn Dart 2.15 release:

  • Biedt ark foar flugge parallelle útfiering fan taken mei isolaasje fan handlers. Op multy-kearnsystemen rint de Dart-runtime standert applikaasjekoade op ien CPU-kearn en brûkt oare kearnen om systeemtaken út te fieren lykas asynchrone I/O, skriuwen nei bestannen, of netwurkoproppen meitsje. Foar applikaasjes dy't har handlers parallel moatte útfiere, bygelyks om animaasje yn 'e ynterface te werjaan, is it mooglik om aparte blokken koade te starten (isolearje), isolearre fan elkoar en tagelyk útfierd op oare CPU-kearnen mei de haadapplikaasjetried . Om te beskermjen tsjin flaters dy't ûntsteane as de simultane útfiering fan koade wurket mei deselde set fan gegevens, is it dielen fan mutable objekten yn ferskate isolate blokken ferbean, en in berjocht-trochjaan model wurdt brûkt foar ynteraksje tusken handlers.

    Dart 2.15 yntrodusearret in nij konsept - isolearre blokgroepen (isolate groepen), wêrmei jo dielde tagong kinne organisearje foar ferskate ynterne gegevensstruktueren yn isoleare blokken dy't diel útmeitsje fan deselde groep, wat de overhead signifikant kin ferminderje by ynteraksje tusken handlers yn in groep . Bygelyks, it lansearjen fan in ekstra isolaasjeblok yn in besteande groep is 100 kear flugger en fereasket 10-100 kear minder ûnthâld dan it lansearjen fan in apart isolaatblok, fanwege it eliminearjen fan 'e needsaak om programmagegevensstruktueren te inisjalisearjen.

    Nettsjinsteande it feit dat isolearre blokken yn in groep noch dielde tagong ta mutable objekten ferbiede, brûke de groepen in dielde heapûnthâld, dat de oerdracht fan objekten fan it iene blok nei it oare signifikant kin fersnelle sûnder de needsaak om boarne-yntinsive kopiearaksjes út te fieren. De nije ferzje kinne jo ek trochjaan it resultaat fan de handler doe't calling Isolate.exit () foar in oerdracht fan gegevens nei de âlder isolearje blok sûnder kopiearjen operaasjes. Derneist is it meganisme foar oerdracht fan berjochten optimalisearre - lytse en middelgrutte berjochten wurde no sawat 8 kear rapper ferwurke. Objekten dy't kinne wurde trochjûn tusken isolaten mei help fan de SendPort.send()-oprop omfetsje guon soarten funksjes, slutingen en stapelspoaren.

  • Yn 'e ark foar it meitsjen fan pointers nei yndividuele funksjes yn oare objekten (tear-off), binne beheiningen foar it meitsjen fan ferlykbere pointers yn constructorkoade fuortsmiten, wat nuttich kin wêze by it bouwen fan ynterfaces basearre op de Flutter-bibleteek. Om bygelyks in Column-widget te meitsjen dy't meardere tekstwidgets omfettet, kinne jo ".map()" neame en oanwizers trochjaan oan de Text.new-konstruktor fan it Text-objekt: klasse FruitWidget ferlingt StatelessWidget { @override Widget build(BuildContext context) { return Column( bern: ['Apple', 'Oranje'].map(Text.new).toList()); } }
  • De mooglikheden ferbûn mei it brûken fan funksje pointers binne útwreide. De mooglikheid tafoege om generyske metoaden en funksje-oanwizers te brûken om in net-generyske metoade en oanwizer te meitsjen: T id (T wearde) => wearde; var intId = id ; // tastien yn ferzje 2.15 ynstee fan "int Function(int) intId = id;" const fo = id; // oanwizer nei funksje id. const c1 = fo ;
  • De dart:core bibleteek hat ferbettere stipe foar enums, bygelyks kinne jo no in tekenrige wearde útfiere fan elke enumwearde mei de ".name" metoade, wearden selektearje op namme, of oerienkomme mei weardepearen: enum MyEnum { ien , twa, trije } void main() { print(MyEnum.one.name); // "ien" sil printe wurde. print(MyEnum.values.byName('two') == MyEnum.two); // "wier" sil printe wurde. final map = MyEnum.values.asNameMap(); print(map['trije'] == MyEnum.three); // "wier". }
  • In oanwizer kompresje technyk is ymplemintearre dy't mooglik makket it brûken fan in mear kompakte fertsjintwurdiging fan oanwizers yn 64-bit omjouwings as in 32-bit adres romte is genôch foar adressen (net mear as 4 GB ûnthâld wurdt brûkt). Tests hawwe sjen litten dat sa'n optimalisaasje it mooglik makket om de heapgrutte mei likernôch 10% te ferminderjen. Yn 'e Flutter SDK is de nije modus al standert ynskeakele foar Android, en is pland om yn in takomstige release ynskeakele te wurden foar iOS.
  • В состав Dart SDK включены инструменты для отладки и анализа производительности (DevTools), которые раньше поставлялись в отдельном пакете.
  • Tools binne tafoege oan it kommando "dart pub" en de pub.dev-pakketrepositories om de tafallige publikaasje fan fertroulike ynformaasje te folgjen, bygelyks it litten fan bewiisbrieven foar trochgeande yntegraasjesystemen en wolkomjouwings binnen it pakket. As sokke lekkages wurde ûntdutsen, sil de útfiering fan it kommando "dart pub publisearje" wurde ûnderbrutsen mei in flaterberjocht. As der in falske posityf wie, is it mooglik om de kontrôle troch in wite list te omgean.
  • De mooglikheid om in al publisearre ferzje fan in pakket yn te lûken is tafoege oan it pub.dev repository, bygelyks as gefaarlike flaters of kwetsberens ûntdutsen wurde. Eartiids, foar sokke korreksjes, wie de praktyk om in korrektyf ferzje te publisearjen, mar yn guon situaasjes is it nedich om de besteande release te annulearjen en de fierdere distribúsje driuwend te stopjen (bygelyks as de korreksje noch net klear is of as in folsleine release wie by fersin publisearre ynstee fan in testferzje). Nei it ynlûken wurdt it pakket net mear identifisearre yn 'e kommando's "pub get" en "pub upgrade", en op systemen dy't it al ynstalleare hawwe, wurdt in spesjale warskôging útjûn de folgjende kear dat "pub get" wurdt útfierd.
  • Добавлена защита от уязвимости (CVE-2021-22567), вызванной применением в коде unicode-символов, меняющих порядок отображения.
  • In kwetsberens reparearre (CVE-2021-22568) wêrmei jo in oare pub.dev-brûker kinne imitearje by it publisearjen fan pakketten nei in tsjinner fan tredden dy't pub.dev oauth2 tagongstokens akseptearret. De kwetsberens kin bygelyks brûkt wurde om ynterne en bedriuwspakketservers oan te fallen. Untwikkelders dy't allinich pakketten hostje op pub.dev wurde net beynfloede troch dit probleem.

Tagelyk waard in wichtige release fan it brûkersynterface-ramt Flutter 2.8 presintearre, dat wurdt beskôge as in alternatyf foar React Native en lit, basearre op ien koadebasis, applikaasjes frijlitte foar de iOS, Android, Windows, macOS en Linux-platfoarms, lykas ek applikaasjes meitsje om te rinnen yn browsers. In oanpaste shell foar it Fuchsia-mikrokernel-bestjoeringssysteem ûntwikkele troch Google is boud op basis fan Flutter. It wurdt opmurken dat yn 'e ôfrûne seis moannen it oantal Flutter 2-applikaasjes yn' e Google Play Store is ferhege fan 200 tûzen nei 375 tûzen, d.w.s. hast twa kear.

It haaddiel fan 'e Flutter-koade wurdt ymplementearre yn' e Dart-taal, en de runtime-motor foar it útfieren fan applikaasjes is skreaun yn C ++. By it ûntwikkeljen fan applikaasjes, neist Flutter's memmetaal Dart, kinne jo de Dart Foreign Function-ynterface brûke om C/C++-koade op te roppen. Hege útfieringsprestaasjes wurde berikt troch it kompilearjen fan applikaasjes nei native koade foar doelplatfoarms. Yn dit gefal hoecht it programma nei elke wiziging net opnij te kompilearjen - Dart biedt in hot reload-modus wêrmei jo wizigingen kinne meitsje oan in rinnende applikaasje en it resultaat daliks evaluearje kinne.

Under de wizigingen yn 'e nije release fan Flutter wurdt optimisaasje fan lansearsnelheid en ûnthâldferbrûk op mobile apparaten opmurken. It is makliker om apps te ferbinen mei backend-tsjinsten lykas Firebase en Google Cloud. Tools foar yntegraasje mei Google Ads binne stabilisearre. Stipe foar kamera's en webplugins is signifikant ferbettere. Nije ark binne foarsteld om ûntwikkeling te ferienfâldigjen, bygelyks in widget is tafoege foar ferifikaasje mei Firebase. De Flame-motor, ûntworpen foar it ûntwikkeljen fan 2D-spultsjes mei Flutter, is bywurke.

Boarne: opennet.ru

Add a comment