Go 1.18 ప్రోగ్రామింగ్ లాంగ్వేజ్ యొక్క విడుదల ప్రదర్శించబడింది, ఇది సంకలనం చేయబడిన భాషల యొక్క అధిక పనితీరును స్క్రిప్టింగ్ లాంగ్వేజెస్ యొక్క ప్రయోజనాలతో కోడ్ రాయడం సులభం వంటి ప్రయోజనాలతో కూడిన హైబ్రిడ్ పరిష్కారంగా సంఘం భాగస్వామ్యంతో Google చే అభివృద్ధి చేయబడుతోంది. , అభివృద్ధి వేగం మరియు లోపం రక్షణ. ప్రాజెక్ట్ కోడ్ BSD లైసెన్స్ క్రింద పంపిణీ చేయబడింది.
గో యొక్క వాక్యనిర్మాణం పైథాన్ భాష నుండి కొన్ని అరువులతో సి భాష యొక్క సుపరిచితమైన మూలకాలపై ఆధారపడి ఉంటుంది. భాష చాలా సంక్షిప్తంగా ఉంది, కానీ కోడ్ చదవడం మరియు అర్థం చేసుకోవడం సులభం. వర్చువల్ మెషీన్ (ప్రొఫైలింగ్, డీబగ్గింగ్ మాడ్యూల్స్ మరియు ఇతర రన్టైమ్ ప్రాబ్లమ్ డిటెక్షన్ సబ్సిస్టమ్లు రన్టైమ్ కాంపోనెంట్లుగా విలీనం చేయబడ్డాయి) ఉపయోగించకుండా స్థానికంగా అమలు చేసే స్టాండ్-ఏలోన్ బైనరీ ఎక్జిక్యూటబుల్ ఫైల్లలో గో కోడ్ కంపైల్ చేయబడింది, ఇది C ప్రోగ్రామ్లతో పోల్చదగిన పనితీరును అనుమతిస్తుంది.
ప్రాజెక్ట్ ప్రారంభంలో బహుళ-థ్రెడ్ ప్రోగ్రామింగ్ మరియు బహుళ-కోర్ సిస్టమ్లపై సమర్థవంతమైన ఆపరేషన్ను దృష్టిలో ఉంచుకుని, సమాంతర కంప్యూటింగ్ను నిర్వహించడానికి ఆపరేటర్-స్థాయి మార్గాలను అందించడం మరియు సమాంతర-ఎగ్జిక్యూటెడ్ పద్ధతుల మధ్య పరస్పర చర్యతో సహా అభివృద్ధి చేయబడింది. భాష ఎక్కువగా కేటాయించిన మెమరీ బ్లాక్లకు వ్యతిరేకంగా అంతర్నిర్మిత రక్షణను అందిస్తుంది మరియు చెత్త కలెక్టర్ను ఉపయోగించగల సామర్థ్యాన్ని అందిస్తుంది.
కొత్త వెర్షన్ జెనరిక్ ఫంక్షన్లు మరియు రకాలు (జెనరిక్స్) కోసం మద్దతును జోడిస్తుంది, దీని సహాయంతో డెవలపర్ ఒకేసారి అనేక రకాలతో పని చేయడానికి రూపొందించిన ఫంక్షన్లను నిర్వచించవచ్చు మరియు ఉపయోగించవచ్చు. బహుళ డేటా రకాలను విస్తరించే మిశ్రమ రకాలను సృష్టించడానికి ఇంటర్ఫేస్లను ఉపయోగించడం కూడా సాధ్యమే. ఇప్పటికే ఉన్న కోడ్తో బ్యాక్వర్డ్ అనుకూలతను విచ్ఛిన్నం చేయకుండా జెనరిక్స్కు మద్దతు అమలు చేయబడుతుంది. // సమ్ సెట్ విలువలు, int64 మరియు float64 రకాల ఫంక్ SumIntsOrFloats[K పోల్చదగినవి, V int64 | float64](m మ్యాప్[K]V) V {var s V for _, v := శ్రేణి m { s += v } రిటర్న్ s } // ఒక సాధారణ రకం నిర్వచనంతో మరో ఎంపిక: టైప్ నంబర్ ఇంటర్ఫేస్ { int64 | float64 } func SumNumbers[K పోల్చదగినది, V సంఖ్య](m మ్యాప్[K]V) V {var s V for _, v:= పరిధి m { s += v } రిటర్న్ s }
ఇతర మెరుగుదలలు:
- ఫజింగ్ కోడ్ టెస్టింగ్ కోసం యుటిలిటీలు ప్రామాణిక టూల్కిట్లో విలీనం చేయబడ్డాయి. అస్పష్టమైన పరీక్ష సమయంలో, ఇన్పుట్ డేటా యొక్క అన్ని యాదృచ్ఛిక కలయికల స్ట్రీమ్ ఉత్పత్తి చేయబడుతుంది మరియు వాటి ప్రాసెసింగ్ సమయంలో సాధ్యమయ్యే వైఫల్యాలు రికార్డ్ చేయబడతాయి. సీక్వెన్స్ క్రాష్ అయినట్లయితే లేదా ఆశించిన ప్రతిస్పందనతో సరిపోలకపోతే, ఈ ప్రవర్తన బగ్ లేదా దుర్బలత్వాన్ని సూచించే అవకాశం ఎక్కువగా ఉంటుంది.
- బహుళ-మాడ్యులర్ వర్క్స్పేస్లకు మద్దతు జోడించబడింది, మీరు ఒకేసారి బహుళ మాడ్యూల్స్లో ఆదేశాలను అమలు చేయడానికి అనుమతిస్తుంది, బహుళ మాడ్యూళ్ళలో ఏకకాలంలో కోడ్ని రూపొందించడానికి మరియు అమలు చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.
- Apple M1, ARM64 మరియు PowerPC64 ప్రాసెసర్ల ఆధారంగా సిస్టమ్ల కోసం ముఖ్యమైన పనితీరు ఆప్టిమైజేషన్లు చేయబడ్డాయి. ఫంక్షన్లకు ఆర్గ్యుమెంట్లను పంపడానికి మరియు ఫలితాన్ని అందించడానికి స్టాక్కు బదులుగా రిజిస్టర్లను ఉపయోగించగల సామర్థ్యాన్ని ప్రారంభించింది. కంపైలర్ ద్వారా లూప్ల ఇన్లైన్ అన్రోలింగ్ మెరుగుపరచబడింది. కంపైలర్లో టైప్ చెకింగ్ పూర్తిగా రీడిజైన్ చేయబడింది. కొన్ని పరీక్షలు మునుపటి విడుదలతో పోలిస్తే కోడ్ పనితీరులో 20% పెరుగుదలను చూపుతాయి, అయితే సంకలనానికి 15% ఎక్కువ సమయం పడుతుంది.
- రన్టైమ్లో, ఆపరేటింగ్ సిస్టమ్కు ఫ్రీడ్ మెమరీని తిరిగి ఇచ్చే సామర్థ్యం పెరిగింది మరియు చెత్త కలెక్టర్ యొక్క ఆపరేషన్ మెరుగుపరచబడింది, దీని ప్రవర్తన మరింత ఊహించదగినదిగా మారింది.
- కొత్త ప్యాకేజీలు net/netip మరియు డీబగ్/buildinfo ప్రామాణిక లైబ్రరీకి జోడించబడ్డాయి. క్లయింట్ కోడ్లో TLS 1.0 మరియు 1.1కి మద్దతు డిఫాల్ట్గా నిలిపివేయబడింది. క్రిప్టో/x509 మాడ్యూల్ SHA-1 హాష్ని ఉపయోగించి సంతకం చేసిన సర్టిఫికెట్లను ప్రాసెస్ చేయడం ఆపివేసింది.
- Linuxలో పర్యావరణం కోసం అవసరాలు పెంచబడ్డాయి; పని చేయడానికి, మీరు ఇప్పుడు కనీసం వెర్షన్ 2.6.32 యొక్క Linux కెర్నల్ను కలిగి ఉండాలి. తదుపరి విడుదలలో, FreeBSD కోసం ఇలాంటి మార్పులు ఆశించబడతాయి (FreeBSD 11.x శాఖకు మద్దతు నిలిపివేయబడుతుంది) మరియు పని చేయడానికి కనీసం FreeBSD 12.2 అవసరం.
మూలం: opennet.ru