Dart 2.15 プログラミング蚀語ず Flutter 2.8 フレヌムワヌクが利甚可胜

Google は、Dart 2.15 プログラミング蚀語のリリヌスを公開したした。これは、Dart 2 の根本的に再蚭蚈されたブランチの開発を継続しおいたす。このブランチは、匷力な静的型付けを䜿甚する点でオリゞナルのバヌゞョンの Dart 蚀語ずは異なりたす (型は自動的に掚論できるため、型を指定する必芁はありたせんが、動的型付けは䜿甚されなくなり、最初に蚈算された型が倉数に割り圓おられ、その埌厳密な型チェックが適甚されたす)。

Dart 蚀語の特城:

  • JavaScript、C、Java プログラマヌにずっお銎染みのある、孊習しやすい構文。
  • ポヌタブル デバむスから匷力なサヌバヌに至るたで、最新のすべおの Web ブラりザヌずさたざたなタむプの環境で高速起動ず高いパフォヌマンスを保蚌したす。
  • 既存のメ゜ッドずデヌタのカプセル化ず再利甚を可胜にするクラスずむンタヌフェむスを定矩する機胜。
  • タむプを指定するず、デバッグず゚ラヌの特定が容易になり、コヌドがより明確で読みやすくなり、サヌドパヌティ開発者によるコヌドの倉曎ず分析が簡玠化されたす。
  • サポヌトされおいる型には、さたざたな型のハッシュ、配列ずリスト、キュヌ、数倀型ず文字列型、日付ず時刻を決定する型、正芏衚珟 (RegExp) が含たれたす。 独自のタむプを䜜成するこずも可胜です。
  • 䞊列実行を組織するには、isolate 属性を持぀クラスを䜿甚するこずが提案されおいたす。そのコヌドは完党に別のメモリ領域の隔離された空間で実行され、メッセヌゞを送信するこずでメむン プロセスず察話したす。
  • 倧芏暡な Web プロゞェクトのサポヌトずデバッグを簡玠化するラむブラリの䜿甚のサポヌト。 サヌドパヌティの関数実装は、共有ラむブラリの圢匏で含めるこずができたす。 アプリケヌションを耇数の郚分に分割し、各郚分の開発を別のプログラマヌ チヌムに委蚗するこずができたす。
  • Dart 蚀語での開発をサポヌトする既補のツヌルのセット。動的開発の実装や、オンザフラむでコヌド修正 (「線集しお続行」) できるデバッグ ツヌルが含たれたす。
  • Dart 蚀語での開発を簡玠化するために、SDK、パッケヌゞ マネヌゞャヌ pub、静的コヌド アナラむザヌ dart_analyzer、ラむブラリのセット、統合開発環境 DartPad、IntelliJ IDEA、WebStorm、Emacs、Sublime Text 甚の Dart 察応プラグむンが付属しおいたす。 2ずノィム。
  • ラむブラリずナヌティリティを含む远加のパッケヌゞは、玄 22 個のパッケヌゞがある pub リポゞトリを通じお配垃されたす。

Dart 2.15 リリヌスの䞻な倉曎点:

  • ハンドラヌを分離しおタスクを高速に䞊列実行するためのツヌルを提䟛したす。 マルチコア システムでは、Dart ランタむムはデフォルトで XNUMX ぀の CPU コアでアプリケヌション コヌドを実行し、他のコアを䜿甚しお非同期 I/O、ファむルぞの曞き蟌み、ネットワヌク呌び出しなどのシステム タスクを実行したす。 たずえば、むンタヌフェむスでアニメヌションをレンダリングするなど、ハンドラヌを䞊行しお実行する必芁があるアプリケヌションの堎合、コヌドの個別のブロックを起動 (分離) しお互いに分離し、メむン アプリケヌション スレッドず同時に他の CPU コアで実行するこずができたす。 。 同じデヌタセットを扱うコヌドを同時に実行するずきに発生する゚ラヌを防ぐために、異なる分離ブロックでの可倉オブゞェクトの共有は犁止されおおり、ハンドラヌ間の察話にはメッセヌゞパッシングモデルが䜿甚されたす。

    Dart 2.15 では、新しい抂念である分離ブロック グルヌプ (分離グルヌプ) が導入されおいたす。これにより、同じグルヌプの䞀郚である分離ブロック内のさたざたな内郚デヌタ構造ぞの共有アクセスを敎理でき、グルヌプ内のハンドラヌ間で察話する際のオヌバヌヘッドを倧幅に削枛できたす。 。 たずえば、既存のグルヌプで远加の分離ブロックを起動するず、プログラム デヌタ構造を初期化する必芁がなくなるため、別の分離ブロックを起動するよりも 100 倍高速になり、必芁なメモリも 10  100 倍少なくなりたす。

    グルヌプ内の分離ブロックでは可倉オブゞェクトぞの共有アクセスが䟝然ずしお犁止されおいるずいう事実にもかかわらず、グルヌプは共有ヒヌプ メモリを䜿甚するため、リ゜ヌスを倧量に消費するコピヌ操䜜を実行するこずなく、あるブロックから別のブロックぞのオブゞェクトの転送を倧幅に高速化できたす。 新しいバヌゞョンでは、Isolate.exit() を呌び出すずきにハンドラヌの結果を枡しお、操䜜をコピヌせずに芪分離ブロックにデヌタを転送するこずもできたす。 さらに、メッセヌゞ送信メカニズムが最適化され、小芏暡および䞭芏暡のメッセヌゞが玄 8 倍の速床で凊理されるようになりたした。 SendPort.send() 呌び出しを䜿甚しおアむ゜レヌト間で受け枡すこずができるオブゞェクトには、いく぀かのタむプの関数、クロヌゞャ、スタック トレヌスが含たれたす。

  • 他のオブゞェクトの個々の関数ぞのポむンタヌを䜜成するツヌル (ティアオフ) では、コンストラクタヌ コヌドで同様のポむンタヌを䜜成する際の制限が削陀されたした。これは、Flutter ラむブラリに基づいおむンタヌフェむスを構築するずきに圹立ちたす。 たずえば、耇数のテキスト りィゞェットを含む列りィゞェットを䜜成するには、「.map()」を呌び出しお、Text オブゞェクトの Text.new コンストラクタヌにポむンタヌを枡すこずができたす。 class FruitWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Column(children: ['Apple', 'Orange'].map(Text.new).toList()); } }
  • 関数ポむンタヌの䜿甚に関連する可胜性が拡匵されたした。 ゞェネリック メ゜ッドず関数ポむンタを䜿甚しお非ゞェネリック メ゜ッドずポむンタを䜜成する機胜を远加したした: T id (T 倀) => 倀; var intId = ID ; // バヌゞョン 2.15 では、「int Function(int) intId = id;」の代わりに䜿甚できたす。 const fo = ID; // 関数 ID ぞのポむンタ。 const c1 = fo ;
  • dart:core ラむブラリは列挙型のサポヌトを改善したした。たずえば、「.name」メ゜ッドを䜿甚しお各列挙型倀から文字列倀を出力したり、名前で倀を遞択したり、倀のペアを䞀臎させたりできるようになりたした: enum MyEnum { one 、XNUMX、XNUMX } void main() { print(MyEnum.one.name); // 「XNUMX」が出力されたす。 print(MyEnum.values.byName('two') == MyEnum.two); // "true" が出力されたす。 最終マップ = MyEnum.values.asNameMap(); print(map['three'] == MyEnum.three); // "真実"。 }
  • ポむンタヌ圧瞮技術が実装されおおり、アドレス指定に 64 ビットのアドレス空間で十分な堎合 (䜿甚するメモリヌが 32 GB 以䞋である堎合)、4 ビット環境でよりコンパクトなポむンタヌ衚珟を䜿甚できるようになりたした。 テストの結果、このような最適化によりヒヌプ サむズを玄 10% 削枛できるこずがわかりたした。 Flutter SDK では、新しいモヌドはデフォルトで Android に察しおすでに有効になっおおり、将来のリリヌスでは iOS に察しおも有効になる予定です。
  • Dart SDK には、以前は別のパッケヌゞで提䟛されおいたデバッグおよびパフォヌマンス分析甚のツヌル (DevTools) が含たれおいたす。
  • 「dart pub」コマンドず pub.dev パッケヌゞ リポゞトリに、機密情報の誀った公開を远跡するツヌルが远加されたした。たずえば、継続的統合システムやクラりド環境の資栌情報をパッケヌゞ内に残すなどです。 このようなリヌクが怜出された堎合、「dart pub public」コマンドの実行ぱラヌ メッセヌゞずずもに䞭断されたす。 誀怜知があった堎合は、ホワむト リストを䜿甚しおチェックを回避するこずができたす。
  • たずえば、危険な゚ラヌや脆匱性が発芋された堎合に、パッケヌゞのすでに公開されおいるバヌゞョンを取り消す機胜が pub.dev リポゞトリに远加されたした。 以前は、このような修正に぀いおは、修正バヌゞョンを公開するのが䞀般的でしたが、状況によっおは、既存のリリヌスをキャンセルし、それ以降の配垃を緊急に停止する必芁がある堎合がありたすたずえば、修正の準備がただ敎っおいない堎合や、完党なリリヌスが䜜成された堎合などテスト版ではなく誀っお公開されたした。 倱効埌、そのパッケヌゞは「pub get」および「pub upgrade」コマンドで識別されなくなり、すでにそのパッケヌゞがむンストヌルされおいるシステムでは、次回「pub get」が実行されるずきに特別な譊告が発行されたす。
  • 衚瀺順序を倉曎するコヌド内での Unicode 文字の䜿甚によっお匕き起こされる脆匱性 (CVE-2021-22567) に察する保護が远加されたした。
  • pub.dev oauth2021 アクセス トヌクンを受け入れるサヌドパヌティ サヌバヌにパッケヌゞを公開するずきに、別の pub.dev ナヌザヌになりすたすこずができる脆匱性 (CVE-22568-2) を修正したした。 たずえば、この脆匱性を利甚しお瀟内および䌁業のパッケヌゞ サヌバヌが攻撃される可胜性がありたす。 pub.dev でのみパッケヌゞをホストする開発者は、この問題の圱響を受けたせん。

同時に、ナヌザヌ むンタヌフェむス フレヌムワヌク Flutter 2.8 の重芁なリリヌスが発衚されたした。これは、React Native の代替ずしお考慮されおおり、単䞀のコヌド ベヌスに基づいお、iOS、Android、Windows、macOS、およびLinux プラットフォヌムだけでなく、ブラりザヌで実行するアプリケヌションも䜜成できたす。 Google が開発した Fuchsia マむクロカヌネル オペレヌティング システムのカスタム シェルは、Flutter に基づいお構築されおいたす。 過去 2 か月間に、Google Play ストアの Flutter 200 アプリケヌションの数が 375 䞇から XNUMX 侇 XNUMX 千に増加したこずに泚目しおください。 ほがXNUMX回。

Flutter コヌドの䞻芁郚分は Dart 蚀語で実装され、アプリケヌションを実行するランタむム ゚ンゞンは C++ で曞かれおいたす。 アプリケヌションを開発するずきは、Flutter のネむティブ Dart 蚀語に加えお、Dart 倖郚関数むンタヌフェむスを䜿甚しお C/C++ コヌドを呌び出すこずができたす。 アプリケヌションをタヌゲット プラットフォヌムのネむティブ コヌドにコンパむルするこずで、高い実行パフォヌマンスが実珟されたす。 この堎合、倉曎のたびにプログラムを再コンパむルする必芁はありたせん。Dart には、実行䞭のアプリケヌションに倉曎を加えお結果をすぐに評䟡できるホット リロヌド モヌドが甚意されおいたす。

Flutterの新リリヌスにおける倉曎点ずしおは、モバむルデバむスでの起動速床ずメモリ消費量の最適化が挙げられる。 アプリを Firebase や Google Cloud などのバック゚ンド サヌビスに接続するのが簡単になりたす。 Google 広告ず統合するためのツヌルが安定したした。 カメラず Web プラグむンのサポヌトが倧幅に改善されたした。 開発を簡玠化するための新しいツヌルが提案されおいたす。たずえば、Firebase を䜿甚した認蚌甚のりィゞェットが远加されおいたす。 Flutter を䜿甚しお 2D ゲヌムを開発するために蚭蚈された Flame ゚ンゞンが曎新されたした。

出所 オヌプンネット.ru

コメントを远加したす