Dart 2.14 lingvo kaj Flutter 2.5 kadro haveblaj

Guglo publikigis la eldonon de la programlingvo Dart 2.14, kiu daŭrigas la evoluon de radikale restrukturita branĉo de Dart 2, kiu diferencas de la originala versio de la Dart-lingvo per la uzo de forta senmova tajpado (tipoj povas esti konkludeblaj aŭtomate, do specifi tipojn ne estas necesa, sed dinamika tajpado ne plu estas uzata kaj komence komputita la tipo estas atribuita al la variablo kaj strikta tipkontrolo estas poste aplikata).

Karakterizaĵoj de la Dart-lingvo:

  • Konata kaj facile lernebla sintakso, natura por JavaScript, C kaj Java programistoj.
  • Certigante rapidan lanĉon kaj altan rendimenton por ĉiuj modernaj retumiloj kaj diversaj specoj de medioj, de porteblaj aparatoj ĝis potencaj serviloj.
  • La kapablo difini klasojn kaj interfacojn kiuj permesas enkapsuligon kaj reuzon de ekzistantaj metodoj kaj datenoj.
  • Specifado de tipoj faciligas sencimigi kaj identigi erarojn, igas la kodon pli klara kaj pli legebla, kaj simpligas ĝian modifon kaj analizon de triaj programistoj.
  • Subtenataj tipoj inkluzivas: diversajn tipojn de hashoj, tabeloj kaj listoj, vostoj, nombraj kaj ĉenoj, tipoj por determini daton kaj horon, regulajn esprimojn (RegExp). Eblas krei viajn proprajn tipojn.
  • Por organizi paralelan ekzekuton, oni proponas uzi klasojn kun la izolita atributo, kies kodo estas ekzekutita tute en izolita spaco en aparta memorareo, interagante kun la ĉefa procezo sendante mesaĝojn.
  • Subteno por la uzo de bibliotekoj, kiuj simpligas la subtenon kaj elpurigon de grandaj retprojektoj. Triapartaj efektivigoj de funkcioj povas esti inkluditaj en la formo de komunaj bibliotekoj. Aplikoj povas esti dividitaj en partojn kaj konfidi la disvolviĝon de ĉiu parto al aparta teamo de programistoj.
  • Aro da pretaj iloj por subteni evoluon en la Dart-lingvo, inkluzive de la efektivigo de dinamika evoluo kaj sencimigaj iloj kun koda korekto sur la flugo ("redaktu-kaj-daŭrigi").
  • Por simpligi evoluon en la Dart-lingvo, ĝi venas kun SDK, pakaĵmanaĝera drinkejo, senmova kodanalizilo dart_analyzer, aro da bibliotekoj, integra evolumedio DartPad kaj Dart-ebligitaj kromaĵoj por IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 kaj Vim.
  • Pliaj pakaĵoj kun bibliotekoj kaj utilecoj estas distribuataj per la pub-deponejo, kiu havas pli ol 20 mil pakojn.

Gravaj ŝanĝoj en Dart 2.14-eldono:

  • Aldoniĝis nova operatoro de triobla movo (>>>), kiu, malsame de la operatoro “>>”, faras ne aritmetikon, sed logikan movon, kiu funkcias sen konsideri la signobiton (la movo estas farata sen dividi en pozitivaj kaj negativaj nombroj).
  • Forigis la limigon pri tipargumentoj, kiuj malhelpis ĝeneralajn funkciotipojn esti uzataj kiel tipargumento. Ekzemple, nun vi povas specifi: malfrua Listo (T)>idFunkcioj; var revoko = [ (T valoro) => valoro]; malfrua S Funkcio (T)>(S) f;
  • Permesu specifi argumentojn kun tipoj en komentarioj kiel @Malrekomendita. Ekzemple, vi nun povas specifi: @TypeHelper (42, "La signifo")
  • La senmovaj metodoj hash, hashAll kaj hashAllUnordered estis aldonitaj al la norma biblioteko (kerno) en la Object-klaso. La DateTime-klaso plibonigis pritraktadon de loka tempo dum konvertado de horloĝoj inter somera kaj vintra tempo kiuj ne estas disigeblaj je unu horo (ekzemple, en Aŭstralio ofseto de 30 minutoj estas uzata). La ffi-pakaĵo aldonis subtenon por la arena memor-atribua mekanismo, kiu aŭtomate liberigas resursojn. La ffigen-pakaĵo aldonis la kapablon generi typedef-difinojn de Dart-tipoj el la C-lingvo.
  • La 250 plej popularaj pakaĵoj de la deponejo pub.dev kaj 94% de la supraj 1000 estis ŝanĝitaj al uzado de la "nula sekureco" reĝimo, kiu evitos kraŝojn kaŭzitajn de provoj uzi variablojn kies valoro estas nedifinita kaj agordita al "Nula". " " La reĝimo implicas, ke variabloj ne povas havi nulvalorojn krom se ili estas eksplicite asignitaj la valoro nul. La reĝimo strikte respektas variajn tipojn, kio permesas al la kompililo apliki pliajn optimumigojn. Tipo-konformeco estas kontrolita je kompilo, ekzemple, se vi provas asigni la valoron "Null" al variablo kun tipo, kiu ne implicas nedifinitan staton, kiel "int", eraro estos montrata.
  • Unuigitaj aroj de reguloj por la kodanalizilo (linter) estas proponitaj, disponigante samtempan subtenon por kontrolado de konformeco al kodstilaj gvidlinioj por Dart kaj la Flutter-kadro. Pro historiaj kialoj, la kodigaj reguloj por Flutter kaj Dart estis malsamaj, krome, por Dart estis du aroj de reguloj uzataj - pedantaj de Guglo kaj reguloj de la Dart-programkomunumo. Dart 2.14 enkondukas novan komunan aron de reguloj por linter, kiu estas decidata esti uzata defaŭlte en novaj Dart-projektoj kaj en la Flutter SDK. La aro inkluzivas kernajn regulojn (lints/core.yaml-pakaĵo), rekomenditajn kromajn regulojn (lints/recommended.yaml), kaj Flutter-specifajn rekomendojn (flutter_lints/flutter.yaml). Uzantoj de pedantaj reguloj estas konsilitaj ŝanĝi al uzado de nova kodstilo bazita sur la rekomendoj de la Dart-dokumentado.
  • En formatilo, optimumigoj estis faritaj al la formatado de kaskadaj kodblokoj, kiuj povas signife plibonigi formatigadon kaj eviti ambiguan interpreton de la proprieto de esprimelementoj. Ekzemple, voki "..doIt" en la esprimo "var result = errorState ? foo : bad..doIt()” ne koncernas la kondiĉan parton de la “malbona” bloko, sed la tutan esprimon, do dum formatado ĝi nun estas apartigita: var result = errorState ? foo : malbona ..doIt();
  • Subteno por Apple M1 (Silicon) procesoroj estis aldonita al la SDK, implicante kaj la kapablon prizorgi Dart VM, servaĵojn kaj SDK-komponentojn sur sistemoj kun Apple Silicon-procesoro, kaj subtenon por kompilado de ruleblaj dosieroj por ĉi tiuj fritoj.
  • La komando "dart pub" aldonis subtenon por nova servodosiero ".pubignore", kiu ebligas al vi difini liston de dosieroj, kiuj estos preterlasitaj dum eldonado de pakaĵo al la deponejo pub.dev. Ĉi tiuj agordoj ne malhelpas la ignoran liston ".gitignore" (en iuj situacioj, pub.dev eble volas eviti transdoni dosierojn necesajn en Git, ekzemple internajn skriptojn uzatajn dum evoluo).
  • Oni laboris por plibonigi la agadon de la komando "darttest", kiu nun ne postulas rekompili testojn post ŝanĝado de pubspec se la versio-numero ne ŝanĝiĝis.
  • Subteno por kompilo en ECMAScript 5 kongrua reĝimo estis nuligita (la ŝanĝo rezultigos perdon de kongruo kun la retumilo IE11).
  • La individuaj servaĵoj stagehand, dartfmt kaj dart2native estis deklaritaj malnoviĝintaj, anstataŭigitaj per enkonstruitaj komandoj nomitaj per la sageto-servaĵo.
  • La mekanismo de VM Native Extensions estis malrekomendita. Por voki denaskan kodon el Dart-kodo, oni rekomendas uzi la novan Dart FFI (Foreign Function Interface).

Samtempe, estis prezentita grava eldono de la uzantinterfaca kadro Flutter 2.5, kiu estas konsiderata kiel alternativo al React Native kaj permesas, surbaze de unu kodbazo, liberigi aplikojn por iOS, Android, Vindozo, macOS kaj Linukso. platformoj, kaj ankaŭ krei aplikojn por funkcii en retumiloj. Propra ŝelo por la Fuchsia mikrokerna operaciumo evoluigita de Guglo estas konstruita surbaze de Flutter.

La ĉefparto de la Flutter-kodo estas efektivigita en la Dart-lingvo, kaj la rultempa motoro por ekzekuti aplikojn estas skribita en C++. Dum disvolvado de aplikaĵoj, krom la denaska Dart-lingvo de Flutter, vi povas uzi la interfacon de Dart Foreign Function por voki C/C++-kodon. Alta ekzekuta rendimento estas atingita kompilante aplikojn al indiĝena kodo por celplatformoj. En ĉi tiu kazo, la programo ne bezonas esti rekompilita post ĉiu ŝanĝo - Dart provizas varman reŝargan reĝimon, kiu ebligas al vi fari ŝanĝojn al funkcianta aplikaĵo kaj tuj taksi la rezulton.

Gravaj ŝanĝoj en Flutter 2.5:

  • Faris signifajn agado-optimumigojn. Sur la iOS kaj macOS-platformoj, antaŭkompilo de ombriloj por la Metala grafika API estis efektivigita. Plibonigita efikeco de prilaborado de nesinkronaj eventoj. Solvis problemon kun prokrastoj kiam la rubkolektisto reakiras memoron de neuzataj bildoj (ekzemple, dum reproduktado de 20-sekunda vigla GIF, la nombro da rubkolektaj operacioj estis reduktita de 400 al 4. Prokrastoj dum pasado de mesaĝoj inter Dart kaj Objective- C/Swift estis reduktitaj al 50% (iOS) aŭ Java/Kotlin (Android) Aldonita denaska konstrusubteno por sistemoj bazitaj sur la Apple Silicon-peceto.
    Dart 2.14 lingvo kaj Flutter 2.5 kadro haveblaj
  • Por la Android-platformo, subteno por ruli aplikaĵojn en plenekrana reĝimo estis establita. La efektivigo de la "Material You" dezajnokoncepto, prezentita kiel venontgeneracia Material Design-opcio, daŭris. Aldonis novan staton MaterialState.scrolledUnder, efektivigis dinamikan montradon de rulstangoj dum regrandigo, kaj proponis novan interfacon por montri sciigajn standardojn.
  • La kapabloj de la fotila kromprogramo estis signife pligrandigitaj, aldonante ilojn por kontroli aŭtomatan fokuson, ekspozicion, ekbrilon, zomon, bruoredukton kaj rezolucion.
  • Programiloj (DevTools) estis plibonigitaj por inkludi ĝisdatigitan fenestraĵan inspektadreĝimon, same kiel ilojn por identigi bildigajn prokrastojn kaj spuri ombrilkompilon.
    Dart 2.14 lingvo kaj Flutter 2.5 kadro haveblaj
  • Plibonigitaj aldonaĵoj por Visual Studio Code kaj IntelliJ/Android Studio.

fonto: opennet.ru

Aldoni komenton