Dart 2.14 -kieli ja Flutter 2.5 -kehys saatavilla

Google on julkaissut Dart 2.14 -ohjelmointikielen julkaisun, joka jatkaa radikaalisti uudelleen suunnitellun Dart 2 -haaran kehitystä, joka eroaa Dart-kielen alkuperäisestä versiosta vahvan staattisen kirjoittamisen suhteen (tyypit voidaan päätellä automaattisesti, joten tyyppejä ei tarvita, mutta dynaamista kirjoittamista ei enää käytetä ja alkuperäinen tyyppi määritetään muuttujalle ja sen jälkeen sovelletaan tiukkaa tyyppitarkistusta).

Dart-kielen ominaisuudet:

  • Tuttu ja helposti opittava syntaksi, luonnollinen JavaScript-, C- ja Java-ohjelmoijille.
  • Nopea käynnistys ja korkea suorituskyky kaikille nykyaikaisille verkkoselaimille ja erilaisille ympäristöille kannettavista laitteista tehokkaisiin palvelimiin.
  • Kyky määritellä luokkia ja rajapintoja, jotka mahdollistavat olemassa olevien menetelmien ja tietojen kapseloinnin ja uudelleenkäytön.
  • Tyyppien määrittäminen helpottaa virheenkorjausta ja virheiden tunnistamista, tekee koodista selkeämmän ja luettavamman ja yksinkertaistaa sen muokkaamista ja analysointia kolmannen osapuolen kehittäjien toimesta.
  • Tuettuja tyyppejä ovat: erilaiset tiivisteet, taulukot ja luettelot, jonot, numeeriset ja merkkijonotyypit, tyypit päivämäärän ja kellonajan määrittämiseen, säännölliset lausekkeet (RegExp). On mahdollista luoda omia tyyppejä.
  • Rinnakkaissuorituksen järjestämiseksi ehdotetaan käytettäväksi isolate-attribuutilla varustettuja luokkia, joiden koodi suoritetaan kokonaan eristetyssä tilassa erillisellä muistialueella, vuorovaikutuksessa pääprosessin kanssa lähettämällä viestejä.
  • Tuki kirjastojen käytölle, jotka yksinkertaistavat suurten verkkoprojektien tukea ja virheenkorjausta. Kolmannen osapuolen funktioiden toteutukset voidaan sisällyttää jaettujen kirjastojen muodossa. Sovellukset voidaan jakaa osiin ja antaa kunkin osan kehittäminen erilliselle ohjelmoijatiimille.
  • Joukko valmiita työkaluja tukemaan kehitystä Dart-kielellä, mukaan lukien dynaamisen kehitys- ja virheenkorjaustyökalujen käyttöönotto koodin korjauksella lennossa ("edit-and-continue").
  • Dart-kielen kehityksen yksinkertaistamiseksi sen mukana tulee SDK, paketinhallintapubi, staattinen koodin analysoija dart_analyzer, joukko kirjastoja, integroitu kehitysympäristö DartPad ja Dart-yhteensopivia laajennuksia IntelliJ IDEA:lle, WebStormille, Emacsille, Sublime Textille. 2 ja Vim.
  • Lisäpaketteja kirjastoineen ja apuohjelmineen jaetaan pubivaraston kautta, jossa on yli 20 tuhatta pakettia.

Tärkeimmät muutokset Dart 2.14 -julkaisussa:

  • Uusi kolmivuorooperaattori (>>>) on lisätty, joka toisin kuin ">>"-operaattori ei suorita aritmeettista, vaan loogista siirtoa, joka toimii ottamatta huomioon etumerkkibittiä (siirto suoritetaan ilman jakamista positiiviset ja negatiiviset luvut).
  • Poistettu tyyppiargumenttien rajoitus, joka esti yleisten funktiotyyppien käytön tyyppiargumentteina. Nyt voit esimerkiksi määrittää: myöhäinen lista (T)>idFunctions; var callback = [ (T-arvo) => arvo]; myöhäinen S-funktio (T)>(S) f;
  • Salli argumenttien määrittäminen merkinnöissä tyypeillä, kuten @Deprecated. Voit nyt esimerkiksi määrittää: @TypeHelper (42, "merkitys")
  • Staattiset menetelmät hash, hashAll ja hashAllUnordered on lisätty Object-luokan vakiokirjastoon (ydin). DateTime-luokka on parantanut paikallisen ajan käsittelyä muunnettaessa kelloja kesä- ja talviajan välillä, jotka eivät ole jaollisia yhdellä tunnilla (esimerkiksi Australiassa käytetään 30 minuutin siirtymää). ffi-paketti on lisännyt tuen areenan muistin varausmekanismille, joka vapauttaa resursseja automaattisesti. ffigen-paketti on lisännyt mahdollisuuden luoda typedef-määritelmiä Dart-tyypeille C-kielestä.
  • Pub.dev-arkiston 250 suosituinta pakettia ja 94 % 1000 suosituimmasta paketista on siirretty käyttämään "nolla-turvallisuus"-tilaa, mikä välttää kaatumiset, jotka johtuvat yrityksistä käyttää muuttujia, joiden arvo on määrittelemätön ja asetettu "Null". "" Tila tarkoittaa, että muuttujilla ei voi olla nolla-arvoja, ellei niille ole nimenomaisesti määritetty arvoa null. Tila kunnioittaa tiukasti muuttujatyyppejä, mikä antaa kääntäjälle mahdollisuuden käyttää lisäoptimointeja. Tyyppiyhteensopivuus tarkistetaan käännösvaiheessa, jos esimerkiksi yrität antaa arvon "Null" muuttujalle, jonka tyyppi ei tarkoita määrittelemätöntä tilaa, kuten "int", näyttöön tulee virheilmoitus.
  • Koodianalysaattorille (linterille) ehdotetaan yhtenäisiä sääntöjoukkoja, jotka tarjoavat samanaikaista tukea Dartin ja Flutter-kehyksen koodityyliohjeiden noudattamisen tarkistamiseen. Historiallisista syistä Flutterin ja Dartin koodaussäännöt olivat erilaiset, lisäksi Dartissa oli käytössä kaksi sääntösarjaa - Googlen pedanttiset säännöt ja Dart-kehittäjäyhteisön säännöt. Dart 2.14 esittelee uudet yhteiset säännöt linterille, jota päätetään oletuksena käyttää uusissa Dart-projekteissa ja Flutter SDK:ssa. Sarja sisältää perussäännöt (lints/core.yaml-paketti), suositellut lisäsäännöt (lints/recommended.yaml) ja Flutter-kohtaiset suositukset (flutter_lints/flutter.yaml). Pedanttisten sääntöjen käyttäjiä kehotetaan siirtymään käyttämään uutta koodaustyyliä Dart-dokumentaation suositusten perusteella.
  • Muotoilussa on tehty optimointeja peräkkäisten koodilohkojen muotoiluun, mikä voi merkittävästi parantaa muotoilun suorituskykyä ja välttää lausekeelementtien omistajuuden epäselvä tulkinta. Esimerkiksi "..doIt" kutsuminen lausekkeessa "var result = errorState ? foo : bad..doIt()” ei koske ”bad”-lohkon ehdollista osaa, vaan koko lauseketta, joten muotoilussa se on nyt erotettu: var result = errorState ? foo : huono ..doIt();
  • SDK:hon on lisätty tuki Apple M1 (Silicon) -suorittimille, mikä tarkoittaa sekä kykyä ajaa Dart VM:ää, apuohjelmia ja SDK-komponentteja järjestelmissä, joissa on Apple Silicon -suoritin, että tukea suoritettavien tiedostojen kääntämiselle näille siruille.
  • "Dart pub" -komento on lisännyt tuen uudelle palvelutiedostolle ".pubignore", jonka avulla voit määrittää luettelon tiedostoista, jotka ohitetaan, kun paketti julkaistaan ​​pub.dev-tietovarastoon. Nämä asetukset eivät häiritse ".gitignore"- ohituslistaa (joissakin tilanteissa pub.dev saattaa haluta välttää Gitissä tarvittavien tiedostojen, esimerkiksi kehityksen aikana käytettyjen sisäisten komentosarjojen, siirtämisen).
  • On tehty työtä "dart test" -komennon suorituskyvyn parantamiseksi, mikä nyt ei vaadi testien uudelleenkääntämistä pubspecin vaihtamisen jälkeen, jos versionumero ei ole muuttunut.
  • ECMAScript 5 -yhteensopivuustilassa kääntämisen tuki on lopetettu (muutos johtaa yhteensopivuuden menetykseen IE11-selaimen kanssa).
  • Yksittäiset apuohjelmat stagehand, dartfmt ja dart2native on julistettu vanhentuneiksi, ja ne on korvattu dart-apuohjelman kautta kutsutuilla sisäänrakennetuilla komennoilla.
  • VM Native Extensions -mekanismi on vanhentunut. Natiivikoodin kutsumiseen Dart-koodista on suositeltavaa käyttää uutta Dart FFI:tä (Foreign Function Interface).

Samalla esiteltiin merkittävä julkaisu käyttöliittymäkehyksestä Flutter 2.5, jota pidetään vaihtoehtona React Nativelle ja jonka avulla voidaan julkaista yhden koodipohjan perusteella sovelluksia iOS-, Android-, Windows-, macOS- ja Linux-alustoilla sekä luoda selaimissa toimivia sovelluksia. Googlen kehittämän Fuchsia-mikroytimen käyttöjärjestelmän mukautettu kuori on rakennettu Flutterin pohjalta.

Suurin osa Flutter-koodista on toteutettu Dart-kielellä ja ajonaikainen moottori sovellusten suorittamiseen on kirjoitettu C++-kielellä. Sovelluksia kehitettäessä voit Flutterin alkuperäisen Dart-kielen lisäksi käyttää Dart Foreign Function -käyttöliittymää kutsumaan C/C++-koodia. Korkea suoritusteho saavutetaan kääntämällä sovelluksia alkuperäiseen koodiin kohdealustoille. Tässä tapauksessa ohjelmaa ei tarvitse kääntää uudelleen jokaisen muutoksen jälkeen - Dart tarjoaa kuuman uudelleenlataustilan, jonka avulla voit tehdä muutoksia käynnissä olevaan sovellukseen ja arvioida tuloksen välittömästi.

Tärkeimmät muutokset Flutter 2.5:ssä:

  • Teki merkittäviä suorituskyvyn optimointeja. iOS- ja macOS-alustoilla on toteutettu varjostajien esikäännös Metal-grafiikkasovellusliittymälle. Parempi tehokkuus asynkronisten tapahtumien käsittelyssä. Ratkaistiin ongelma, joka liittyy viiveisiin, kun roskankerääjä palauttaa muistin käyttämättömistä kuvista (esimerkiksi 20 sekunnin animoidun GIF:n toiston aikana roskienkeruutoimintojen määrä väheni 400:sta 4:ään. Viiveitä siirrettäessä viestejä Dartin ja Objective- C/Swift vähennettiin 50 prosenttiin (iOS) tai Java/Kotlin (Android). Lisätty natiivi koontituki Apple Silicon -siruun perustuville järjestelmille.
    Dart 2.14 -kieli ja Flutter 2.5 -kehys saatavilla
  • Android-alustalle on perustettu tuki sovellusten suorittamiselle koko näytön tilassa. Seuraavan sukupolven Material Design -vaihtoehtona esitellyn ”Material You” -suunnittelukonseptin toteuttaminen jatkui. Lisättiin uusi tila MaterialState.scrolledUnder, otettiin käyttöön vierityspalkkien dynaaminen näyttö kokoa muutettaessa ja ehdotettiin uutta käyttöliittymää ilmoitusbannerien näyttämiseen.
  • Kameralaajennuksen ominaisuuksia on laajennettu merkittävästi lisäämällä työkaluja automaattisen tarkennuksen, valotuksen, salaman, zoomauksen, kohinanpoiston ja resoluution hallintaan.
  • Kehittäjätyökaluja (DevTools) on parannettu sisältämään päivitetyn widget-tarkastustilan sekä työkalut renderöintiviiveiden tunnistamiseen ja varjostimen kokoamisen seurantaan.
    Dart 2.14 -kieli ja Flutter 2.5 -kehys saatavilla
  • Parannetut lisäosat Visual Studio Codelle ja IntelliJ/Android Studiolle.

Lähde: opennet.ru

Lisää kommentti