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