Google డార్ట్ 2.15 ప్రోగ్రామింగ్ లాంగ్వేజ్ విడుదలను ప్రచురించింది, ఇది డార్ట్ 2 యొక్క సమూలంగా పునఃరూపకల్పన చేయబడిన శాఖ యొక్క అభివృద్ధిని కొనసాగిస్తుంది, ఇది డార్ట్ భాష యొక్క అసలు వెర్షన్ నుండి బలమైన స్టాటిక్ టైపింగ్ (రకాలు స్వయంచాలకంగా ఊహించవచ్చు, కాబట్టి రకాలను పేర్కొనడం అవసరం లేదు, కానీ డైనమిక్ టైపింగ్ ఇకపై ఉపయోగించబడదు మరియు మొదట్లో లెక్కించిన రకం వేరియబుల్కు కేటాయించబడుతుంది మరియు కఠినమైన టైప్ చెకింగ్ తర్వాత వర్తించబడుతుంది).
డార్ట్ భాష యొక్క లక్షణాలు:
- JavaScript, C మరియు Java ప్రోగ్రామర్లకు సుపరిచితమైన మరియు సులభంగా నేర్చుకోగల సింటాక్స్.
- పోర్టబుల్ పరికరాల నుండి శక్తివంతమైన సర్వర్ల వరకు అన్ని ఆధునిక వెబ్ బ్రౌజర్లు మరియు వివిధ రకాల వాతావరణాల కోసం వేగవంతమైన లాంచ్ మరియు అధిక పనితీరును నిర్ధారిస్తుంది.
- ఇప్పటికే ఉన్న పద్ధతులు మరియు డేటా యొక్క ఎన్క్యాప్సులేషన్ మరియు పునర్వినియోగాన్ని అనుమతించే తరగతులు మరియు ఇంటర్ఫేస్లను నిర్వచించే సామర్థ్యం.
- రకాలను పేర్కొనడం వలన డీబగ్ చేయడం మరియు లోపాలను గుర్తించడం సులభతరం చేస్తుంది, కోడ్ను స్పష్టంగా మరియు మరింత చదవగలిగేలా చేస్తుంది మరియు మూడవ పక్ష డెవలపర్ల ద్వారా దాని సవరణ మరియు విశ్లేషణను సులభతరం చేస్తుంది.
- మద్దతు ఉన్న రకాలు: వివిధ రకాల హాష్లు, శ్రేణులు మరియు జాబితాలు, క్యూలు, సంఖ్యా మరియు స్ట్రింగ్ రకాలు, తేదీ మరియు సమయాన్ని నిర్ణయించే రకాలు, సాధారణ వ్యక్తీకరణలు (RegExp). మీ స్వంత రకాలను సృష్టించడం సాధ్యమవుతుంది.
- సమాంతర అమలును నిర్వహించడానికి, ఐసోలేట్ లక్షణంతో తరగతులను ఉపయోగించాలని ప్రతిపాదించబడింది, దీని కోడ్ పూర్తిగా ప్రత్యేక మెమరీ ప్రాంతంలో వివిక్త ప్రదేశంలో అమలు చేయబడుతుంది, సందేశాలను పంపడం ద్వారా ప్రధాన ప్రక్రియతో పరస్పర చర్య చేస్తుంది.
- పెద్ద వెబ్ ప్రాజెక్ట్ల మద్దతు మరియు డీబగ్గింగ్ను సులభతరం చేసే లైబ్రరీల వినియోగానికి మద్దతు. ఫంక్షన్ల యొక్క మూడవ-పక్షం అమలులను షేర్డ్ లైబ్రరీల రూపంలో చేర్చవచ్చు. అప్లికేషన్లను భాగాలుగా విభజించవచ్చు మరియు ప్రతి భాగం యొక్క అభివృద్ధిని ప్రత్యేక ప్రోగ్రామర్ల బృందానికి అప్పగించవచ్చు.
- డార్ట్ లాంగ్వేజ్లో డెవలప్మెంట్కు తోడ్పాటునిచ్చే రెడీమేడ్ టూల్స్ సమితి, ఇందులో డైనమిక్ డెవలప్మెంట్ అమలు చేయడం మరియు ఫ్లైలో కోడ్ కరెక్షన్తో డీబగ్గింగ్ టూల్స్ ("సవరించు మరియు కొనసాగించు").
- డార్ట్ భాషలో అభివృద్ధిని సులభతరం చేయడానికి, ఇది SDK, ప్యాకేజీ మేనేజర్ పబ్, స్టాటిక్ కోడ్ ఎనలైజర్ డార్ట్_అనలైజర్, లైబ్రరీల సమితి, ఇంటిగ్రేటెడ్ డెవలప్మెంట్ ఎన్విరాన్మెంట్ డార్ట్ప్యాడ్ మరియు IntelliJ IDEA, WebStorm, Emacs, Sublime Text కోసం డార్ట్-ఎనేబుల్డ్ ప్లగిన్లతో వస్తుంది. 2 మరియు Vim.
- లైబ్రరీలు మరియు యుటిలిటీలతో అదనపు ప్యాకేజీలు పబ్ రిపోజిటరీ ద్వారా పంపిణీ చేయబడతాయి, ఇందులో సుమారు 22 వేల ప్యాకేజీలు ఉన్నాయి.
డార్ట్ 2.15 విడుదలలో ప్రధాన మార్పులు:
- హ్యాండ్లర్ల ఐసోలేషన్తో పనులు వేగంగా సమాంతరంగా అమలు చేయడానికి సాధనాలను అందిస్తుంది. బహుళ-కోర్ సిస్టమ్లలో, డార్ట్ రన్టైమ్ డిఫాల్ట్గా ఒక CPU కోర్లో అప్లికేషన్ కోడ్ని అమలు చేస్తుంది మరియు అసమకాలిక I/O, ఫైల్లకు వ్రాయడం లేదా నెట్వర్క్ కాల్లు చేయడం వంటి సిస్టమ్ విధులను నిర్వహించడానికి ఇతర కోర్లను ఉపయోగిస్తుంది. వాటి హ్యాండ్లర్లను సమాంతరంగా అమలు చేయాల్సిన అప్లికేషన్ల కోసం, ఉదాహరణకు, ఇంటర్ఫేస్లో యానిమేషన్ను అందించడానికి, ఒకదానికొకటి వేరుచేయబడిన మరియు ప్రధాన అప్లికేషన్ థ్రెడ్తో ఏకకాలంలో ఇతర CPU కోర్లలో అమలు చేయబడిన ప్రత్యేక కోడ్ బ్లాక్లను (ఐసోలేట్) ప్రారంభించడం సాధ్యమవుతుంది. . ఒకే డేటా సెట్తో కోడ్ని ఏకకాలంలో అమలు చేసినప్పుడు ఉత్పన్నమయ్యే లోపాల నుండి రక్షించడానికి, వివిధ ఐసోలేట్ బ్లాక్లలో మార్చగల వస్తువులను భాగస్వామ్యం చేయడం నిషేధించబడింది మరియు హ్యాండ్లర్ల మధ్య పరస్పర చర్య కోసం సందేశం-పాసింగ్ మోడల్ ఉపయోగించబడుతుంది.
డార్ట్ 2.15 ఒక కొత్త కాన్సెప్ట్ను పరిచయం చేస్తుంది - ఐసోలేటెడ్ బ్లాక్ గ్రూపులు (ఐసోలేట్ గ్రూపులు), ఇది ఒకే గ్రూప్లో భాగమైన ఐసోలేట్ బ్లాక్లలో వివిధ అంతర్గత డేటా స్ట్రక్చర్లకు షేర్డ్ యాక్సెస్ని నిర్వహించడానికి మిమ్మల్ని అనుమతిస్తుంది, ఇది గ్రూప్లోని హ్యాండ్లర్ల మధ్య పరస్పర చర్య చేసేటప్పుడు ఓవర్హెడ్ను గణనీయంగా తగ్గిస్తుంది. . ఉదాహరణకు, ఇప్పటికే ఉన్న సమూహంలో అదనపు ఐసోలేట్ బ్లాక్ను ప్రారంభించడం 100 రెట్లు వేగంగా ఉంటుంది మరియు ప్రోగ్రామ్ డేటా స్ట్రక్చర్లను ప్రారంభించాల్సిన అవసరాన్ని తొలగించడం వల్ల ప్రత్యేక ఐసోలేట్ బ్లాక్ను ప్రారంభించడం కంటే 10-100 రెట్లు తక్కువ మెమరీ అవసరం.
సమూహంలోని ఐసోలేట్ బ్లాక్లు ఇప్పటికీ మార్చగల వస్తువులకు భాగస్వామ్య ప్రాప్యతను నిషేధిస్తున్నప్పటికీ, సమూహాలు షేర్డ్ హీప్ మెమరీని ఉపయోగిస్తాయి, ఇది వనరుల-ఇంటెన్సివ్ కాపీ కార్యకలాపాలను నిర్వహించాల్సిన అవసరం లేకుండా ఒక బ్లాక్ నుండి మరొక బ్లాక్కు వస్తువుల బదిలీని గణనీయంగా వేగవంతం చేస్తుంది. ఆపరేషన్లను కాపీ చేయకుండా పేరెంట్ ఐసోలేట్ బ్లాక్కి డేటాను బదిలీ చేయడానికి Isolate.exit()కి కాల్ చేస్తున్నప్పుడు హ్యాండ్లర్ యొక్క ఫలితాన్ని పాస్ చేయడానికి కొత్త వెర్షన్ మిమ్మల్ని అనుమతిస్తుంది. అదనంగా, సందేశ ప్రసార విధానం ఆప్టిమైజ్ చేయబడింది - చిన్న మరియు మధ్యస్థ సందేశాలు ఇప్పుడు దాదాపు 8 రెట్లు వేగంగా ప్రాసెస్ చేయబడతాయి. SendPort.send() కాల్ని ఉపయోగించి ఐసోలేట్ల మధ్య పాస్ చేయగల ఆబ్జెక్ట్లలో కొన్ని రకాల ఫంక్షన్లు, క్లోజర్లు మరియు స్టాక్ ట్రేస్లు ఉంటాయి.
- ఇతర ఆబ్జెక్ట్లలో (టియర్-ఆఫ్) వ్యక్తిగత ఫంక్షన్లకు పాయింటర్లను సృష్టించే సాధనాల్లో, కన్స్ట్రక్టర్ కోడ్లో సారూప్య పాయింటర్లను సృష్టించడంపై పరిమితులు తొలగించబడ్డాయి, ఫ్లట్టర్ లైబ్రరీ ఆధారంగా ఇంటర్ఫేస్లను నిర్మించేటప్పుడు ఇది ఉపయోగపడుతుంది. ఉదాహరణకు, బహుళ టెక్స్ట్ విడ్జెట్లను కలిగి ఉన్న నిలువు వరుస విడ్జెట్ని సృష్టించడానికి, మీరు ".map()"కి కాల్ చేయవచ్చు మరియు టెక్స్ట్ ఆబ్జెక్ట్ యొక్క Text.new కన్స్ట్రక్టర్కి పాయింటర్లను పాస్ చేయవచ్చు: class FruitWidget స్టేట్లెస్ విడ్జెట్ను విస్తరిస్తుంది {@ఓవర్రైడ్ విడ్జెట్ బిల్డ్(బిల్డ్కాంటెక్స్ట్ సందర్భం) {రిటర్న్ కాలమ్( పిల్లలు: ['యాపిల్', 'ఆరెంజ్'].మ్యాప్(Text.new).toList()); } }
- ఫంక్షన్ పాయింటర్ల ఉపయోగంతో అనుబంధించబడిన అవకాశాలు విస్తరించబడ్డాయి. నాన్-జెనరిక్ మెథడ్ మరియు పాయింటర్ను రూపొందించడానికి జెనరిక్ మెథడ్స్ మరియు ఫంక్షన్ పాయింటర్లను ఉపయోగించగల సామర్థ్యాన్ని జోడించారు: T id (T విలువ) => విలువ; var intId = ఐడి ; // వెర్షన్ 2.15లో "int ఫంక్షన్(int) intId = id;"కి బదులుగా అనుమతించబడింది const fo = id; // ఫంక్షన్ ఐడికి పాయింటర్. const c1 = fo ;
- డార్ట్:కోర్ లైబ్రరీ enums కోసం మెరుగైన మద్దతును కలిగి ఉంది, ఉదాహరణకు, మీరు ఇప్పుడు ".name" పద్ధతిని ఉపయోగించి ప్రతి enum విలువ నుండి స్ట్రింగ్ విలువను అవుట్పుట్ చేయవచ్చు, పేరు ద్వారా విలువలను ఎంచుకోవచ్చు లేదా విలువల జతలను సరిపోల్చవచ్చు: enum MyEnum {ఒకటి , రెండు, మూడు } శూన్యమైన ప్రధాన() {print(MyEnum.one.name); // "ఒకటి" ముద్రించబడుతుంది. ప్రింట్(MyEnum.values.byName('two') == MyEnum.two); // "నిజం" ముద్రించబడుతుంది. చివరి పటం = MyEnum.values.asNameMap(); ప్రింట్(మ్యాప్['త్రీ'] == MyEnum.three); // "నిజం". }
- ఒక పాయింటర్ కంప్రెషన్ టెక్నిక్ అమలు చేయబడింది, ఇది 64-బిట్ పరిసరాలలో పాయింటర్ల యొక్క మరింత కాంపాక్ట్ ప్రాతినిధ్యాన్ని ఉపయోగించడాన్ని అనుమతిస్తుంది, ఒకవేళ చిరునామా కోసం 32-బిట్ చిరునామా స్థలం సరిపోతుంది (4 GB కంటే ఎక్కువ మెమరీ ఉపయోగించబడదు). అటువంటి ఆప్టిమైజేషన్ కుప్ప పరిమాణాన్ని సుమారు 10% తగ్గించడం సాధ్యమవుతుందని పరీక్షలు చూపించాయి. ఫ్లట్టర్ SDKలో, కొత్త మోడ్ ఇప్పటికే డిఫాల్ట్గా Android కోసం ప్రారంభించబడింది మరియు భవిష్యత్తులో విడుదలలో iOS కోసం ప్రారంభించబడాలని ప్లాన్ చేయబడింది.
- డార్ట్ SDK డీబగ్గింగ్ మరియు పనితీరు విశ్లేషణ (DevTools) కోసం సాధనాలను కలిగి ఉంది, ఇవి గతంలో ప్రత్యేక ప్యాకేజీలో అందించబడ్డాయి.
- రహస్య సమాచారం యొక్క ప్రమాదవశాత్తూ ప్రచురణను ట్రాక్ చేయడానికి “dart pub” కమాండ్ మరియు pub.dev ప్యాకేజీ రిపోజిటరీలకు సాధనాలు జోడించబడ్డాయి, ఉదాహరణకు, ప్యాకేజీ లోపల నిరంతర ఏకీకరణ సిస్టమ్లు మరియు క్లౌడ్ ఎన్విరాన్మెంట్ల కోసం ఆధారాలను వదిలివేస్తుంది. అటువంటి లీక్లు గుర్తించబడితే, "డార్ట్ పబ్ పబ్లిష్" కమాండ్ యొక్క అమలు దోష సందేశంతో అంతరాయం కలిగిస్తుంది. తప్పు పాజిటివ్ ఉన్నట్లయితే, వైట్ లిస్ట్ ద్వారా చెక్ను దాటవేయడం సాధ్యమవుతుంది.
- ప్యాకేజీ యొక్క ఇప్పటికే ప్రచురించబడిన సంస్కరణను ఉపసంహరించుకునే సామర్థ్యం pub.dev రిపోజిటరీకి జోడించబడింది, ఉదాహరణకు, ప్రమాదకరమైన లోపాలు లేదా దుర్బలత్వం కనుగొనబడితే. ఇంతకు ముందు, అటువంటి దిద్దుబాట్ల కోసం, దిద్దుబాటు సంస్కరణను ప్రచురించడం ఆచారం, కానీ కొన్ని సందర్భాల్లో ఇప్పటికే ఉన్న విడుదలను రద్దు చేయడం మరియు దాని తదుపరి పంపిణీని అత్యవసరంగా నిలిపివేయడం అవసరం (ఉదాహరణకు, దిద్దుబాటు ఇంకా సిద్ధంగా లేకుంటే లేదా పూర్తి విడుదల అయితే పరీక్ష సంస్కరణకు బదులుగా పొరపాటున ప్రచురించబడింది). రద్దు చేసిన తర్వాత, ప్యాకేజీ ఇకపై “పబ్ గెట్” మరియు “పబ్ అప్గ్రేడ్” ఆదేశాలలో గుర్తించబడదు మరియు ఇప్పటికే దీన్ని ఇన్స్టాల్ చేసిన సిస్టమ్లలో, తదుపరిసారి “పబ్ గెట్” అమలు చేయబడినప్పుడు ప్రత్యేక హెచ్చరిక జారీ చేయబడుతుంది.
- డిస్ప్లే క్రమాన్ని మార్చే కోడ్లోని యూనికోడ్ అక్షరాలను ఉపయోగించడం వల్ల కలిగే హాని (CVE-2021-22567) నుండి రక్షణ జోడించబడింది.
- pub.dev oauth2021 యాక్సెస్ టోకెన్లను ఆమోదించే థర్డ్-పార్టీ సర్వర్కు ప్యాకేజీలను ప్రచురించేటప్పుడు మరొక pub.dev వినియోగదారు వలె నటించడానికి మిమ్మల్ని అనుమతించే దుర్బలత్వం (CVE-22568-2) పరిష్కరించబడింది. ఉదాహరణకు, అంతర్గత మరియు కార్పొరేట్ ప్యాకేజీ సర్వర్లపై దాడి చేయడానికి దుర్బలత్వం ఉపయోగించబడుతుంది. pub.devలో ప్యాకేజీలను మాత్రమే హోస్ట్ చేసే డెవలపర్లు ఈ సమస్య వల్ల ప్రభావితం కాలేదు.
అదే సమయంలో, వినియోగదారు ఇంటర్ఫేస్ ఫ్రేమ్వర్క్ ఫ్లట్టర్ 2.8 యొక్క ముఖ్యమైన విడుదల ప్రదర్శించబడింది, ఇది రియాక్ట్ నేటివ్కు ప్రత్యామ్నాయంగా పరిగణించబడుతుంది మరియు iOS, Android, Windows, macOS మరియు కోసం అప్లికేషన్లను విడుదల చేయడానికి ఒకే కోడ్ బేస్ ఆధారంగా అనుమతిస్తుంది. Linux ప్లాట్ఫారమ్లు, అలాగే బ్రౌజర్లలో అమలు చేయడానికి అప్లికేషన్లను సృష్టించండి. Google అభివృద్ధి చేసిన Fuchsia మైక్రోకెర్నల్ ఆపరేటింగ్ సిస్టమ్ కోసం అనుకూల షెల్ ఫ్లట్టర్ ఆధారంగా నిర్మించబడింది. గత ఆరు నెలల్లో, Google Play Storeలో Flutter 2 అప్లికేషన్ల సంఖ్య 200 వేల నుండి 375 వేలకు పెరిగింది, అనగా. దాదాపు రెండుసార్లు.
ఫ్లట్టర్ కోడ్ యొక్క ప్రధాన భాగం డార్ట్ భాషలో అమలు చేయబడుతుంది మరియు అప్లికేషన్లను అమలు చేయడానికి రన్టైమ్ ఇంజిన్ C++లో వ్రాయబడింది. అప్లికేషన్లను అభివృద్ధి చేస్తున్నప్పుడు, ఫ్లట్టర్ యొక్క స్థానిక డార్ట్ భాషతో పాటు, మీరు C/C++ కోడ్కి కాల్ చేయడానికి డార్ట్ ఫారిన్ ఫంక్షన్ ఇంటర్ఫేస్ని ఉపయోగించవచ్చు. లక్ష్య ప్లాట్ఫారమ్ల కోసం స్థానిక కోడ్కు అప్లికేషన్లను కంపైల్ చేయడం ద్వారా అధిక అమలు పనితీరు సాధించబడుతుంది. ఈ సందర్భంలో, ప్రతి మార్పు తర్వాత ప్రోగ్రామ్ మళ్లీ కంపైల్ చేయవలసిన అవసరం లేదు - డార్ట్ హాట్ రీలోడ్ మోడ్ను అందిస్తుంది, ఇది నడుస్తున్న అప్లికేషన్లో మార్పులు చేయడానికి మరియు ఫలితాన్ని వెంటనే అంచనా వేయడానికి మిమ్మల్ని అనుమతిస్తుంది.
ఫ్లట్టర్ యొక్క కొత్త విడుదలలో మార్పులలో, మొబైల్ పరికరాలలో ప్రయోగ వేగం మరియు మెమరీ వినియోగం యొక్క ఆప్టిమైజేషన్ గుర్తించబడింది. Firebase మరియు Google Cloud వంటి బ్యాకెండ్ సేవలకు యాప్లను కనెక్ట్ చేయడం సులభం. Google ప్రకటనలతో అనుసంధానం కోసం సాధనాలు స్థిరీకరించబడ్డాయి. కెమెరాలు మరియు వెబ్ ప్లగిన్లకు మద్దతు గణనీయంగా మెరుగుపరచబడింది. అభివృద్ధిని సులభతరం చేయడానికి కొత్త సాధనాలు ప్రతిపాదించబడ్డాయి, ఉదాహరణకు, Firebaseని ఉపయోగించి ప్రమాణీకరణ కోసం ఒక విడ్జెట్ జోడించబడింది. ఫ్లట్టర్ని ఉపయోగించి 2D గేమ్లను అభివృద్ధి చేయడానికి రూపొందించిన ఫ్లేమ్ ఇంజిన్ నవీకరించబడింది.
మూలం: opennet.ru