Dart 2.15 ක්‍රමලේඛන භාෂාව සහ Flutter 2.8 රාමුව ඇත

Google විසින් Dart 2.15 ක්‍රමලේඛන භාෂාවේ නිකුතුව ප්‍රකාශයට පත් කර ඇත, එය රැඩිකල් ලෙස ප්‍රතිනිර්මාණය කරන ලද Dart 2 ශාඛාවේ සංවර්ධනය දිගටම කරගෙන යන අතර, එය ශක්තිමත් ස්ථිතික ටයිප් කිරීමේ භාවිතයේදී Dart භාෂාවේ මුල් පිටපතට වඩා වෙනස් වේ (වර්ග ස්වයංක්‍රීයව අනුමාන කළ හැක, එබැවින් නියම කිරීම වර්ග අවශ්‍ය නොවේ, නමුත් ගතික ටයිප් කිරීම තවදුරටත් භාවිතා නොකරන අතර මූලික ගණනය කිරීම වර්ගය විචල්‍යයට පවරා ඇති අතර දැඩි වර්ග පරීක්ෂාව පසුව යොදනු ලැබේ).

ඩාර්ට් භාෂාවේ විශේෂාංග:

  • හුරුපුරුදු සහ ඉගෙනීමට පහසු වාක්‍ය ඛණ්ඩය, JavaScript, C සහ Java ක්‍රමලේඛකයින් සඳහා ස්වභාවිකය.
  • අතේ ගෙන යා හැකි උපාංගවල සිට බලවත් සේවාදායකයන් දක්වා සියලුම නවීන වෙබ් බ්‍රව්සර් සහ විවිධ ආකාරයේ පරිසරයන් සඳහා වේගවත් දියත් කිරීම සහ ඉහළ කාර්ය සාධනය සහතික කිරීම.
  • පවතින ක්‍රම සහ දත්ත සංග්‍රහ කිරීමට සහ නැවත භාවිතා කිරීමට ඉඩ සලසන පන්ති සහ අතුරුමුහුණත් නිර්වචනය කිරීමේ හැකියාව.
  • වර්ග සඳහන් කිරීම දෝෂ නිදොස් කිරීම සහ හඳුනා ගැනීම පහසු කරයි, කේතය වඩාත් පැහැදිලි සහ වඩාත් කියවිය හැකි කරයි, සහ තෙවන පාර්ශවීය සංවර්ධකයින් විසින් එහි වෙනස් කිරීම සහ විශ්ලේෂණය සරල කරයි.
  • සහාය දක්වන වර්ගවලට ඇතුළත් වන්නේ: විවිධ වර්ගයේ හෑෂ්, අරා සහ ලැයිස්තු, පෝලිම්, සංඛ්‍යාත්මක සහ තන්තු වර්ග, දිනය සහ වේලාව තීරණය කිරීම සඳහා වර්ග, සාමාන්‍ය ප්‍රකාශන (RegExp). ඔබේම වර්ග නිර්මාණය කළ හැකිය.
  • සමාන්තර ක්‍රියාත්මක කිරීම සංවිධානය කිරීම සඳහා, හුදකලා ගුණාංගය සමඟ පන්ති භාවිතා කිරීමට යෝජනා කෙරේ, එහි කේතය වෙනම මතක ප්‍රදේශයක හුදකලා අවකාශයේ සම්පූර්ණයෙන්ම ක්‍රියාත්මක වේ, පණිවිඩ යැවීමෙන් ප්‍රධාන ක්‍රියාවලිය සමඟ අන්තර් ක්‍රියා කරයි.
  • විශාල වෙබ් ව්‍යාපෘති සඳහා සහය සහ නිදොස්කරණය සරල කරන පුස්තකාල භාවිතය සඳහා සහාය. ශ්‍රිතවල තුන්වන පාර්ශ්ව ක්‍රියාත්මක කිරීම් හවුල් පුස්තකාල ආකාරයෙන් ඇතුළත් කළ හැක. යෙදුම් කොටස් වලට බෙදිය හැකි අතර එක් එක් කොටසෙහි සංවර්ධනය වෙනම ක්‍රමලේඛක කණ්ඩායමකට භාර දිය හැකිය.
  • පියාසර කිරීමේදී කේත නිවැරදි කිරීම සමඟ ගතික සංවර්ධනය සහ නිදොස් කිරීමේ මෙවලම් ක්‍රියාත්මක කිරීම ඇතුළුව ඩාර්ට් භාෂාවේ සංවර්ධනයට සහාය වීම සඳහා සූදානම් කළ මෙවලම් කට්ටලයක් (“සංස්කරණය සහ දිගටම”).
  • ඩාර්ට් භාෂාවෙන් සංවර්ධනය සරල කිරීම සඳහා, එය SDK, පැකේජ කළමනාකරු පබ් එකක්, ස්ථිතික කේත විශ්ලේෂක dart_analyzer, පුස්තකාල කට්ටලයක්, IntelliJ IDEA, WebStorm, Emacs, Sublime Text සඳහා ඒකාබද්ධ සංවර්ධන පරිසරයක් DartPad සහ Dart-සක්‍රීය ප්ලගීන සමඟ පැමිණේ. 2 සහ Vim.
  • පුස්තකාල සහ උපයෝගිතා සහිත අමතර පැකේජ බෙදා හරිනු ලබන්නේ පැකේජ 22 ක් පමණ ඇති පබ් ගබඩාව හරහා ය.

Dart 2.15 නිකුතුවේ ප්‍රධාන වෙනස්කම්:

  • හසුරුවන්නන් හුදකලා කිරීම සමඟ කාර්යයන් වේගයෙන් සමාන්තර ලෙස ක්රියාත්මක කිරීම සඳහා මෙවලම් සපයයි. බහු-core පද්ධතිවල, ඩාර්ට් ධාවන කාලය පෙරනිමියෙන් එක් CPU හරයක් මත යෙදුම් කේතය ධාවනය කරන අතර අසමමුහුර්ත I/O, ගොනුවලට ලිවීම හෝ ජාල ඇමතුම් ලබා ගැනීම වැනි පද්ධති කාර්යයන් ඉටු කිරීමට වෙනත් හරයන් භාවිතා කරයි. ඔවුන්ගේ හසුරුවන්න සමාන්තරව ක්‍රියාත්මක කිරීමට අවශ්‍ය යෙදුම් සඳහා, උදාහරණයක් ලෙස, අතුරු මුහුණතෙහි සජීවිකරණ විදැහුම් කිරීම සඳහා, ප්‍රධාන යෙදුම් නූල් සමඟ එකවරම එකිනෙකින් හුදකලා වූ සහ අනෙකුත් CPU හරයන් මත ක්‍රියාත්මක කරන වෙනම කේත (හුදකලා) දියත් කළ හැකිය. . එකම දත්ත කට්ටලයක් සමඟ ක්‍රියා කරන කේතය එකවර ක්‍රියාත්මක කිරීමේදී පැන නගින දෝෂ වලින් ආරක්ෂා වීමට, වෙනස් කළ හැකි වස්තූන් විවිධ හුදකලා කොටස්වල බෙදා ගැනීම තහනම් කර ඇති අතර හසුරුවන්නන් අතර අන්තර්ක්‍රියා සඳහා පණිවිඩ යැවීමේ ආකෘතියක් භාවිතා කරයි.

    ඩාර්ට් 2.15 නව සංකල්පයක් හඳුන්වා දෙයි - හුදකලා බ්ලොක් කණ්ඩායම් (හුදකලා කණ්ඩායම්), එමඟින් එකම කණ්ඩායමක කොටසක් වන හුදකලා බ්ලොක් වල විවිධ අභ්‍යන්තර දත්ත ව්‍යුහයන්ට හවුල් ප්‍රවේශය සංවිධානය කිරීමට ඔබට ඉඩ සලසයි, එමඟින් කණ්ඩායමක හසුරුවන්නන් අතර අන්තර් ක්‍රියා කිරීමේදී පොදු කාර්ය සැලකිය යුතු ලෙස අඩු කළ හැකිය. . උදාහරණයක් ලෙස, දැනට පවතින කණ්ඩායමක අතිරේක හුදකලා බ්ලොක් එකක් දියත් කිරීම 100 ගුණයක් වේගවත් වන අතර වැඩසටහන් දත්ත ව්‍යුහයන් ආරම්භ කිරීමේ අවශ්‍යතාවය ඉවත් කිරීම හේතුවෙන් වෙනම හුදකලා බ්ලොක් එකක් දියත් කිරීමට වඩා 10-100 ගුණයකින් අඩු මතකයක් අවශ්‍ය වේ.

    සමූහයක ඇති හුදකලා බ්ලොක් තවමත් වෙනස් කළ හැකි වස්තූන් වෙත හවුල් ප්‍රවේශය තහනම් කර ඇතත්, කණ්ඩායම් හවුල් ගොඩ මතකයක් භාවිතා කරයි, එමඟින් සම්පත්-දැඩි පිටපත් මෙහෙයුම් සිදු කිරීමේ අවශ්‍යතාවයකින් තොරව එක් කොටසක සිට තවත් කොටසකට වස්තු මාරු කිරීම සැලකිය යුතු ලෙස වේගවත් කළ හැකිය. මෙහෙයුම් පිටපත් කිරීමකින් තොරව මව් හුදකලා බ්ලොක් වෙත දත්ත මාරු කිරීම සඳහා Isolate.exit() ඇමතීමේ දී හසුරුවන්නාගේ ප්‍රතිඵලය සම්මත කිරීමට නව අනුවාදය ඔබට ඉඩ සලසයි. ඊට අමතරව, පණිවිඩ සම්ප්‍රේෂණ යාන්ත්‍රණය ප්‍රශස්ත කර ඇත - කුඩා සහ මධ්‍යම පණිවිඩ දැන් දළ වශයෙන් 8 ගුණයකින් වේගයෙන් සකසනු ලැබේ. SendPort.send() ඇමතුම භාවිතයෙන් හුදකලා අතර ගමන් කළ හැකි වස්තුවලට සමහර ආකාරයේ ශ්‍රිත, වසා දැමීම් සහ ස්ටැක් ට්‍රේස් ඇතුළත් වේ.

  • වෙනත් වස්තු (ඉරීම-ඕෆ්) තුළ තනි කාර්යයන් සඳහා පොයින්ටර් සෑදීමේ මෙවලම් තුළ, කන්ස්ට්‍රක්ටර් කේතයේ සමාන පොයින්ටර් සෑදීමේ සීමාවන් ඉවත් කර ඇත, එය ෆ්ලටර් පුස්තකාලය මත පදනම් වූ අතුරු මුහුණත් තැනීමේදී ප්‍රයෝජනවත් විය හැකිය. උදාහරණයක් ලෙස, බහු පෙළ විජට් ඇතුළත් තීරු විජට් එකක් සෑදීමට, ඔබට ".map()" ඇමතීමට සහ Text වස්තුවේ Text.new constructor වෙත පොයින්ටර් පාස් කළ හැක: class FruitWidget විසින් StatelessWidget {@override Widget build(BuildContext සන්දර්භය) දිගු කරයි. { return Column(ළමයින්: ['ඇපල්', 'තැඹිලි'].map(Text.new).toList()); }}
  • ශ්‍රිත දර්ශක භාවිතය හා සම්බන්ධ හැකියාවන් පුළුල් කර ඇත. සාමාන්‍ය නොවන ක්‍රමයක් සහ දර්ශකයක් නිර්මාණය කිරීමට සාමාන්‍ය ක්‍රම සහ ක්‍රියාකාරී දර්ශක භාවිතා කිරීමේ හැකියාව එක් කරන ලදී: T id (T අගය) => අගය; var intId = id ; // "int Function(int) intId = id;" වෙනුවට 2.15 අනුවාදයේ අවසර ඇත const fo = id; // ක්‍රියාකාරී හැඳුනුම්පතට දර්ශකය. const c1 = fo ;
  • dart:core library enums සඳහා වැඩි දියුණු කළ සහාය ඇත, උදාහරණයක් ලෙස, ඔබට දැන් ".name" ක්‍රමය භාවිතයෙන් එක් එක් enum අගයෙන් තන්තු අගයක් ප්‍රතිදානය කිරීමට, නම අනුව අගයන් තෝරා ගැනීමට හෝ අගයන් යුගල ගැලපිය හැක: enum MyEnum {එක. , දෙක, තුන } හිස් ප්රධාන() {print(MyEnum.one.name); // "එකක්" මුද්‍රණය කෙරේ. මුද්රණය (MyEnum.values.byName('දෙක') == MyEnum.two); // "ඇත්ත" මුද්‍රණය කෙරේ. අවසාන සිතියම = MyEnum.values.asNameMap(); මුද්‍රණය (සිතියම['තුන'] == MyEnum.three); // "සැබෑ". }
  • ආමන්ත්‍රණය සඳහා 64-bit ලිපින ඉඩ ප්‍රමාණවත් නම් (32 GB ට වැඩි මතකයක් භාවිතා නොවේ) 4-bit පරිසරයන් තුළ පොයින්ටර් වඩාත් සංයුක්ත නිරූපණයක් භාවිතා කිරීමට ඉඩ සලසන පොයින්ටර් සම්පීඩන ක්‍රමයක් ක්‍රියාත්මක කර ඇත. එවැනි ප්‍රශස්තිකරණය මඟින් ගොඩ ප්‍රමාණය ආසන්න වශයෙන් 10% කින් අඩු කිරීමට හැකි වන බව පරීක්ෂණ මගින් පෙන්වා දී ඇත. Flutter SDK හි, නව මාදිලිය පෙරනිමියෙන් Android සඳහා දැනටමත් සක්‍රීය කර ඇති අතර, අනාගත නිකුතුවකදී iOS සඳහා සක්‍රීය කිරීමට සැලසුම් කර ඇත.
  • Dart SDK හි නිදොස්කරණය සහ කාර්ය සාධන විශ්ලේෂණය සඳහා මෙවලම් ඇතුළත් වේ (DevTools), ඒවා කලින් වෙනම පැකේජයකින් සපයන ලදී.
  • රහසිගත තොරතුරු අහම්බෙන් ප්‍රකාශ කිරීම නිරීක්ෂණය කිරීම සඳහා මෙවලම් “dart pub” විධානයට සහ pub.dev පැකේජ ගබඩාවලට එක් කර ඇත, උදාහරණයක් ලෙස, පැකේජය තුළ අඛණ්ඩ ඒකාබද්ධතා පද්ධති සහ වලාකුළු පරිසරයන් සඳහා අක්තපත්‍ර තබයි. එවැනි කාන්දුවීම් අනාවරණය වුවහොත්, "dart pub publish" විධානය ක්‍රියාත්මක කිරීම දෝෂ පණිවිඩයක් සමඟ බාධා කරනු ඇත. ව්‍යාජ ධනාත්මක එකක් තිබුනේ නම්, සුදු ලැයිස්තුවක් හරහා චෙක්පත මඟ හැරිය හැක.
  • පැකේජයක දැනටමත් ප්‍රකාශිත අනුවාදයක් අවලංගු කිරීමේ හැකියාව pub.dev ගබඩාවට එක් කර ඇත, උදාහරණයක් ලෙස, භයානක දෝෂ හෝ දුර්වලතා අනාවරණය වුවහොත්. මීට පෙර, එවැනි නිවැරදි කිරීම් සඳහා, නිවැරදි කිරීමේ අනුවාදයක් ප්‍රකාශයට පත් කිරීම පුරුද්දක් විය, නමුත් සමහර අවස්ථාවන්හිදී පවතින නිකුතුව අවලංගු කර එය තවදුරටත් බෙදා හැරීම වහාම නැවැත්වීම අවශ්‍ය වේ (නිදසුනක් ලෙස, නිවැරදි කිරීම තවමත් සූදානම් නැතිනම් හෝ සම්පූර්ණ නිකුතුවක් නම් පරීක්ෂණ අනුවාදයක් වෙනුවට වැරදීමකින් ප්‍රකාශයට පත් කර ඇත). අවලංගු කිරීමෙන් පසුව, පැකේජය තවදුරටත් "pub get" සහ "pub upgrade" විධානයන් තුළ හඳුනා නොගන්නා අතර, එය දැනටමත් ස්ථාපනය කර ඇති පද්ධති මත, ඊළඟ වතාවේ "pub get" ක්රියාත්මක වන විට විශේෂ අනතුරු ඇඟවීමක් නිකුත් කරනු ලැබේ.
  • සංදර්ශක අනුපිළිවෙල වෙනස් කරන කේතයේ යුනිකෝඩ් අක්ෂර භාවිතය නිසා ඇති වන අවදානමකට (CVE-2021-22567) එරෙහිව ආරක්ෂාව එකතු කරන ලදී.
  • pub.dev oauth2021 ප්‍රවේශ ටෝකන පිළිගන්නා තුන්වන පාර්ශ්ව සේවාදායකයකට පැකේජ ප්‍රකාශනය කිරීමේදී වෙනත් pub.dev පරිශීලකයෙකු ලෙස පෙනී සිටීමට ඔබට ඉඩ සලසන අවදානමක් (CVE-22568-2) නිරාකරණය කර ඇත. උදාහරණයක් ලෙස, අභ්‍යන්තර සහ ආයතනික පැකේජ සේවාදායකයන්ට පහර දීමට අවදානම භාවිතා කළ හැක. pub.dev හි පැකේජ පමණක් සත්කාරකත්වය සපයන සංවර්ධකයින්ට මෙම ගැටලුව බලපාන්නේ නැත.

ඒ අතරම, පරිශීලක අතුරුමුහුණත් රාමුවේ සැලකිය යුතු නිකුතුවක් Flutter 2.8 ඉදිරිපත් කරන ලදී, එය ප්‍රතික්‍රියා ස්වදේශීය සඳහා විකල්පයක් ලෙස සලකනු ලබන අතර, තනි කේත පදනමක් මත පදනම්ව, iOS, Android, Windows, macOS සහ යෙදුම් මුදා හැරීමට ඉඩ සලසයි. ලිනක්ස් වේදිකා, මෙන්ම බ්‍රව්සර්වල ක්‍රියාත්මක වීමට යෙදුම් සාදන්න. Google විසින් වැඩි දියුණු කරන ලද Fuchsia microkernel මෙහෙයුම් පද්ධතිය සඳහා අභිරුචි කවචයක් Flutter පදනම මත ගොඩනගා ඇත. පසුගිය මාස හය තුළ, Google Play Store හි Flutter 2 යෙදුම් ගණන 200 සිට 375 දක්වා වැඩි වී ඇති බව සටහන් වේ, එනම්. දෙවරක් පාහේ.

Flutter කේතයේ ප්‍රධාන කොටස Dart භාෂාවෙන් ක්‍රියාත්මක වන අතර යෙදුම් ක්‍රියාත්මක කිරීම සඳහා ධාවන කාල එන්ජිම C++ වලින් ලියා ඇත. යෙදුම් සංවර්ධනය කිරීමේදී, Flutter ගේ මව් භාෂාවට අමතරව, ඔබට C/C++ කේතය ඇමතීමට Dart Foreign Function අතුරුමුහුණත භාවිතා කළ හැක. ඉලක්ක වේදිකා සඳහා ස්වදේශීය කේතයට යෙදුම් සම්පාදනය කිරීමෙන් ඉහළ ක්‍රියාත්මක කිරීමේ කාර්ය සාධනයක් ලබා ගත හැකිය. මෙම අවස්ථාවෙහිදී, එක් එක් වෙනස් කිරීමෙන් පසු වැඩසටහන නැවත සම්පාදනය කිරීම අවශ්ය නොවේ - ඩාර්ට් ඔබට ක්රියාත්මක වන යෙදුමකට වෙනස්කම් කිරීමට සහ ප්රතිඵලය වහාම ඇගයීමට ඉඩ සලසන උණුසුම් රීලෝඩ් මාදිලියක් සපයයි.

Flutter හි නව නිකුතුවේ වෙනස්කම් අතර, ජංගම උපාංගවල දියත් කිරීමේ වේගය සහ මතක පරිභෝජනය ප්‍රශස්ත කිරීම සටහන් වේ. Firebase සහ Google Cloud වැනි පසුපෙළ සේවා වෙත යෙදුම් සම්බන්ධ කිරීම පහසුය. Google දැන්වීම් සමඟ ඒකාබද්ධ කිරීම සඳහා මෙවලම් ස්ථාවර කර ඇත. කැමරා සහ වෙබ් ප්ලගීන සඳහා සහය සැලකිය යුතු ලෙස වැඩිදියුණු කර ඇත. සංවර්ධනය සරල කිරීම සඳහා නව මෙවලම් යෝජනා කර ඇත, උදාහරණයක් ලෙස, Firebase භාවිතයෙන් සත්‍යාපනය සඳහා විජට් එකක් එකතු කර ඇත. Flutter භාවිතයෙන් 2D ක්‍රීඩා සංවර්ධනය කිරීම සඳහා නිර්මාණය කර ඇති Flame එන්ජිම යාවත්කාලීන කර ඇත.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න