అధిక పనితీరు, డైనమిక్ టైపింగ్కు మద్దతు మరియు సమాంతర ప్రోగ్రామింగ్ కోసం అంతర్నిర్మిత సాధనాలు వంటి లక్షణాలను మిళితం చేస్తూ జూలియా 1.9 ప్రోగ్రామింగ్ లాంగ్వేజ్ విడుదల ప్రచురించబడింది. జూలియా యొక్క వాక్యనిర్మాణం MATLABకి దగ్గరగా ఉంది, రూబీ మరియు లిస్ప్ నుండి కొన్ని మూలకాలను తీసుకుంటుంది. స్ట్రింగ్ మానిప్యులేషన్ పద్ధతి పెర్ల్ను గుర్తుకు తెస్తుంది. ప్రాజెక్ట్ కోడ్ MIT లైసెన్స్ క్రింద పంపిణీ చేయబడింది.
భాష యొక్క ముఖ్య లక్షణాలు:
- అధిక పనితీరు: ప్రాజెక్ట్ యొక్క ముఖ్య లక్ష్యాలలో ఒకటి C ప్రోగ్రామ్లకు దగ్గరగా పనితీరును సాధించడం. జూలియా కంపైలర్ LLVM ప్రాజెక్ట్ యొక్క పనిపై ఆధారపడి ఉంటుంది మరియు అనేక లక్ష్య ప్లాట్ఫారమ్ల కోసం సమర్థవంతమైన స్థానిక యంత్ర కోడ్ను ఉత్పత్తి చేస్తుంది;
- ఆబ్జెక్ట్-ఓరియెంటెడ్ మరియు ఫంక్షనల్ ప్రోగ్రామింగ్ అంశాలతో సహా వివిధ ప్రోగ్రామింగ్ నమూనాలకు మద్దతు ఇస్తుంది. ప్రామాణిక లైబ్రరీ ఇతర విషయాలతోపాటు, అసమకాలిక I/O, ప్రక్రియ నియంత్రణ, లాగింగ్, ప్రొఫైలింగ్ మరియు ప్యాకేజీ నిర్వహణ కోసం విధులను అందిస్తుంది;
- డైనమిక్ టైపింగ్: భాషకు స్క్రిప్టింగ్ ప్రోగ్రామింగ్ లాంగ్వేజ్ల మాదిరిగానే వేరియబుల్స్ కోసం రకాల స్పష్టమైన నిర్వచనం అవసరం లేదు. ఇంటరాక్టివ్ మోడ్ మద్దతు;
- రకాలను స్పష్టంగా పేర్కొనే ఐచ్ఛిక సామర్థ్యం;
- న్యూమరికల్ కంప్యూటింగ్, సైంటిఫిక్ కంప్యూటింగ్, మెషిన్ లెర్నింగ్ మరియు డేటా విజువలైజేషన్ కోసం సింటాక్స్ ఆదర్శవంతమైనది. లెక్కల సమాంతరీకరణ కోసం అనేక సంఖ్యా డేటా రకాలు మరియు సాధనాలకు మద్దతు.
- అదనపు లేయర్లు లేకుండా C లైబ్రరీల నుండి నేరుగా ఫంక్షన్లకు కాల్ చేయగల సామర్థ్యం.
జూలియా 1.9లో ప్రధాన మార్పులు:
- కొత్త భాషా లక్షణాలు
- "setproperty!(::Module, ::Symbol, x)"ని ఉపయోగించి అసైన్మెంట్లను మరొక మాడ్యూల్లో చేయడానికి అనుమతించండి.
- తుది స్థానంలో లేని బహుళ అసైన్మెంట్లు అనుమతించబడతాయి. ఉదాహరణకు, స్ట్రింగ్ “a, b…, c = 1, 2, 3, 4” “a = 1; b..., = 2, 3; c = 4". ఇది Base.split_rest ద్వారా నిర్వహించబడుతుంది.
- సింగిల్ క్యారెక్టర్ లిటరల్స్ ఇప్పుడు స్ట్రింగ్ లిటరల్స్ మాదిరిగానే సింటాక్స్కు మద్దతిస్తాయి; ఆ. సింటాక్స్ చార్ రకం ద్వారా అనుమతించబడిన చెల్లని UTF-8 సీక్వెన్స్లను సూచిస్తుంది.
- యూనికోడ్ 15 స్పెసిఫికేషన్కు మద్దతు జోడించబడింది.
- టుపుల్స్ యొక్క నెస్టెడ్ కాంబినేషన్లు మరియు పేరున్న క్యారెక్టర్ టుపుల్స్ ఇప్పుడు టైప్ పారామీటర్లుగా ఉపయోగించవచ్చు.
- గ్లోబల్ వేరియబుల్స్కు ప్రత్యేకంగా చదవడం మరియు వ్రాయడం కోసం కొత్త అంతర్నిర్మిత ఫంక్షన్లు "getglobal(::Module, ::Symbol[, order])" మరియు "setglobal!(::Module, ::Symbol, x[, order])". గ్లోబల్ వేరియబుల్స్ యాక్సెస్ చేయడానికి getfield పద్ధతి కంటే getglobal పద్ధతికి ప్రాధాన్యత ఇవ్వాలి.
- భాషలో మార్పులు
- వెర్షన్ 1.7లో ప్రవేశపెట్టిన "@invoke" మాక్రో ఇప్పుడు ఎగుమతి చేయబడింది మరియు ఉపయోగం కోసం అందుబాటులో ఉంది. అదనంగా, ఇది ఇప్పుడు "x" ఆర్గ్యుమెంట్ కోసం టైప్ ఉల్లేఖనాన్ని విస్మరించిన సందర్భంలో "ఏదైనా" కాకుండా "Core.Typeof(x)" పద్ధతిని ఉపయోగిస్తుంది. ఆర్గ్యుమెంట్లుగా ఆమోదించబడిన రకాలు సరిగ్గా ప్రాసెస్ చేయబడతాయని నిర్ధారించుకోవడానికి ఇది అవసరం.
- వెర్షన్ 1.7లో పరిచయం చేయబడిన “invokelatest” ఫంక్షన్ మరియు “@invokelatest” మాక్రో ఎగుమతి ప్రారంభించబడింది.
- కంపైలర్/రన్టైమ్ మెరుగుదలలు
- మొదటి ఎగ్జిక్యూషన్కి గణనీయంగా తగ్గిన సమయం (TTFX - మొదటి ఎగ్జిక్యూషన్కి సమయం). ప్యాకేజీని ప్రీకంపైల్ చేయడం ఇప్పుడు స్థానిక కోడ్ను "pkgimage"లో నిల్వ చేస్తుంది, అంటే ప్రీకంపైలేషన్ ప్రక్రియ ద్వారా ఉత్పత్తి చేయబడిన కోడ్ ప్యాకేజీ లోడ్ అయిన తర్వాత మళ్లీ కంపైల్ చేయవలసిన అవసరం లేదు. "--pkgimages=no" ఎంపికను ఉపయోగించి pkgimages మోడ్ వినియోగాన్ని నిలిపివేయవచ్చు.
- టైప్ ఇన్ఫరెన్స్ యొక్క తెలిసిన క్వాడ్రాటిక్ సంక్లిష్టత సమస్య పరిష్కరించబడింది మరియు అనుమితి మొత్తం తక్కువ మెమరీని ఉపయోగిస్తుంది. స్వయంచాలకంగా రూపొందించబడిన లాంగ్ ఫంక్షన్లతో (పాక్షిక అవకలన సమీకరణాలు మరియు పెద్ద కారణ నమూనాలతో ModelingToolkit.jl వంటివి) కొన్ని ఎడ్జ్ కేసులు చాలా వేగంగా కంపైల్ అవుతాయి.
- కాంక్రీట్ రకాలు లేని వాదనలతో కూడిన కాల్లు ఇప్పుడు ఇంజెక్షన్ లేదా స్టాటిక్ రిజల్యూషన్ కోసం యూనియన్-స్ప్లిటింగ్ ఆప్టిమైజ్ చేయబడతాయి, డిస్పాచ్ కోసం అనేక విభిన్న-రకం అభ్యర్థులు ఉన్నప్పటికీ. "@nospecialize-d" కాల్ సైట్లను స్థిరంగా పరిష్కరించడం ద్వారా మరియు రీకంపైలేషన్ను నివారించడం ద్వారా ఆబ్జెక్ట్ రకాలు పూర్తిగా స్థిరంగా పరిష్కరించబడని నిర్దిష్ట పరిస్థితులలో ఇది పనితీరును మెరుగుపరుస్తుంది.
- బేస్ మాడ్యూల్లోని @ప్యూర్ మాక్రో యొక్క అన్ని ఉపయోగాలు Base.@assume_effectsతో భర్తీ చేయబడ్డాయి.
- సాధారణంగా f(args...) కోసం ఉపయోగించే దాని కంటే తక్కువ నిర్దిష్ట రకాలతో (f, invokesig, args...) ఇన్వోక్ చేయడానికి కాల్లు ప్యాకేజీని మళ్లీ కంపైల్ చేయడానికి కారణం కాదు.
- కమాండ్ లైన్ ఎంపికలకు మార్పులు
- Linux మరియు Windowsలో, "--threads=auto" ఎంపిక ఇప్పుడు CPU అనుబంధం ఆధారంగా అందుబాటులో ఉన్న ప్రాసెసర్ల సంఖ్యను నిర్ణయించడానికి ప్రయత్నిస్తుంది, ఇది సాధారణంగా HPC మరియు క్లౌడ్ ఎన్విరాన్మెంట్లలో సెట్ చేయబడింది.
- “--math-mode=fast” పరామితి నిలిపివేయబడింది, దానికి బదులుగా “@fastmath” మాక్రోను ఉపయోగించమని సిఫార్సు చేయబడింది, ఇది అర్థశాస్త్రాన్ని స్పష్టంగా నిర్వచించింది.
- "--థ్రెడ్లు" ఎంపిక ఇప్పుడు "auto | ఫార్మాట్లో ఉంది N[,auto|M]", ఇక్కడ M అనేది సృష్టించాల్సిన ఇంటరాక్టివ్ థ్రెడ్ల సంఖ్యను సూచిస్తుంది (ప్రస్తుతం ఆటో అంటే 1).
- ఎంపిక జోడించబడింది “—కుప్ప-పరిమాణం-సూచన=” ", ఇది థ్రెషోల్డ్ను సెట్ చేస్తుంది, ఆ తర్వాత క్రియాశీల చెత్త సేకరణ ప్రారంభమవుతుంది. పరిమాణాన్ని బైట్లు, కిలోబైట్లు (1000 KB), మెగాబైట్లు (300 MB) లేదా గిగాబైట్లలో (1,5 GB) పేర్కొనవచ్చు.
- మల్టీథ్రెడింగ్లో మార్పులు
- "Threads.@spawn" ఇప్పుడు ":default" లేదా ":interactive" విలువతో ఐచ్ఛిక మొదటి ఆర్గ్యుమెంట్ని కలిగి ఉంది. ఇంటరాక్టివ్ టాస్క్కి తక్కువ ప్రతిస్పందన జాప్యం అవసరం మరియు చిన్నదిగా లేదా తరచుగా నిర్వహించబడేలా రూపొందించబడింది. జూలియాను ప్రారంభించేటప్పుడు ఇంటరాక్టివ్ థ్రెడ్లు పేర్కొనబడితే వాటిపై ఇంటరాక్టివ్ టాస్క్లు రన్ అవుతాయి.
- జూలియా రన్టైమ్ వెలుపల నడుస్తున్న థ్రెడ్లు (సి లేదా జావా వంటివి) ఇప్పుడు "jl_adopt_thread"ని ఉపయోగించి జూలియా కోడ్కి కాల్ చేయవచ్చు. "cfunction" లేదా "@ccallable" ఎంట్రీ పాయింట్ ద్వారా జూలియా కోడ్ని నమోదు చేసినప్పుడు ఇది స్వయంచాలకంగా జరుగుతుంది. పర్యవసానంగా, ఇప్పుడు అమలు సమయంలో థ్రెడ్ల సంఖ్య మారవచ్చు.
- కొత్త లైబ్రరీ విధులు
- కొత్త ఫంక్షన్ "Iterators.flatmap".
- "pkgdir(m::Module)" మాదిరిగానే, ఇచ్చిన మాడ్యూల్ను లోడ్ చేసిన ప్యాకేజీ యొక్క సంస్కరణను పొందడానికి కొత్త ఫంక్షన్ "pkgversion(m::Module)".
- కొత్త ఫంక్షన్ "stack(x)" ఇది "reduce(hcat, x::Vector{<:Vector})"ని ఏ కోణానికి సాధారణీకరిస్తుంది మరియు ఏదైనా ఇటరేటర్లను అనుమతిస్తుంది. "stack(f, x)" పద్ధతి "mapreduce(f, hcat, x)"ని సాధారణీకరిస్తుంది మరియు మరింత సమర్థవంతంగా ఉంటుంది.
- కేటాయించిన మెమరీ "@అలొకేషన్స్"ని విశ్లేషించడం కోసం కొత్త మాక్రో, "@అలాకేట్" మాదిరిగానే, ఇది కేటాయించిన మెమరీ మొత్తం పరిమాణం కంటే మెమరీ కేటాయింపుల సంఖ్యను అందిస్తుంది.
- కొత్త లైబ్రరీ ఫీచర్లు
- "RoundFromZero" ఇప్పుడు "BigFloat" కాకుండా ఇతర రకాల కోసం పని చేస్తుంది.
- "Dict"ని ఇప్పుడు "sizehint!"ని ఉపయోగించి మానవీయంగా తగ్గించవచ్చు.
- చెల్లని పద్ధతులను రీకంపైల్ చేయడానికి వెచ్చించిన సమయం శాతాన్ని ఇప్పుడు "@సమయం" విడిగా పేర్కొంటుంది.
- ప్రామాణిక లైబ్రరీకి మార్పులు
- డిక్ట్ మరియు కీలు(::డిక్ట్), విలువలు(::డిక్ట్) మరియు సెట్ వంటి ఇతర ఉత్పన్నమైన ఆబ్జెక్ట్ల కోసం పునరుక్తి పద్ధతుల్లో కాన్కరెన్సీ సమస్య పరిష్కరించబడింది. డిక్షనరీ లేదా సెట్ను సవరించే చర్యలు లేనంత వరకు, అపరిమిత సంఖ్యలో థ్రెడ్ల కోసం సమాంతరంగా డిక్ట్ లేదా సెట్లో ఈ పునరావృత పద్ధతులను పిలుస్తారు.
- ప్రిడికేట్ ఫంక్షన్ "!f"ని తిరస్కరించడం వలన ఇప్పుడు అనామక ఫంక్షన్కు బదులుగా "(!) ∘ f" అనే మిశ్రమ ఫంక్షన్ని అందిస్తుంది.
- డైమెన్షన్ స్లైస్ ఫంక్షన్లు ఇప్పుడు బహుళ పరిమాణాలలో పని చేస్తాయి: "eachslice", "eachrow" మరియు "eachcol" మరింత సమర్థవంతమైన పద్ధతులను అందించడానికి పంపడాన్ని అనుమతించే "స్లైస్" ఆబ్జెక్ట్ను తిరిగి అందిస్తాయి.
- పబ్లిక్ APIకి "@kwdef" మాక్రో జోడించబడింది.
- "fld1"లో కార్యకలాపాల క్రమంలో సమస్య పరిష్కరించబడింది.
- క్రమబద్ధీకరణ ఇప్పుడు ఎల్లప్పుడూ సమయ-స్థిరంగా ఉంటుంది (క్విక్సార్ట్ పునఃరూపకల్పన చేయబడింది).
- "Base.splat" ఇప్పుడు ఎగుమతి చేయబడింది. రిటర్న్ విలువ అనామక ఫంక్షన్ కంటే "Base.Splat" రకం, ఇది చక్కగా అవుట్పుట్ చేయడానికి అనుమతిస్తుంది.
- ప్యాకేజీ మేనేజర్
- "ప్యాకేజీ పొడిగింపులు": జూలియా సెషన్లో లోడ్ చేయబడిన ఇతర ప్యాకేజీల నుండి కోడ్ స్నిప్పెట్ను లోడ్ చేయడానికి మద్దతు. అప్లికేషన్ "Requires.jl" ప్యాకేజీని పోలి ఉంటుంది, కానీ ప్రీ-కంపైలేషన్ మరియు సెట్టింగ్ల అనుకూలతకు మద్దతు ఉంది.
- లీనియర్ ఆల్జీబ్రా లైబ్రరీ
- మూలకాల వారీగా విభజనతో గందరగోళం ఏర్పడే ప్రమాదం కారణంగా, "a * pinv(b)"కి సమానమైన స్కేలార్ "a" మరియు వెక్టర్ "b"తో "a/b" మరియు "b\a" పద్ధతులు తీసివేయబడ్డాయి.
- BLAS మరియు LAPACKకి కాల్ చేయడం ఇప్పుడు "libblastrampoline (LBT)"ని ఉపయోగిస్తుంది. OpenBLAS డిఫాల్ట్గా అందించబడింది, కానీ ఇతర BLAS/LAPACK లైబ్రరీలతో సిస్టమ్ ఇమేజ్ని రూపొందించడానికి మద్దతు లేదు. బదులుగా, BLAS/LAPACKని ఇప్పటికే ఉన్న మరొక లైబ్రరీలతో భర్తీ చేయడానికి LBT మెకానిజంను ఉపయోగించమని సిఫార్సు చేయబడింది.
- "lu" కొత్త మాతృక భ్రమణ వ్యూహం, "RowNonZero()"కి మద్దతు ఇస్తుంది, ఇది కొత్త అంకగణిత రకాలు మరియు శిక్షణ ప్రయోజనాల కోసం ఉపయోగించడం కోసం మొదటి సున్నా కాని భ్రమణ మూలకాన్ని ఎంచుకుంటుంది.
- "normalize(x, p=2)" ఇప్పుడు స్కేలార్లతో సహా ఏదైనా సాధారణీకరించిన వెక్టర్ స్పేస్ "x"కి మద్దతు ఇస్తుంది.
- BLAS థ్రెడ్ల డిఫాల్ట్ సంఖ్య ఇప్పుడు ARM ఆర్కిటెక్చర్లలోని CPU థ్రెడ్ల సంఖ్యకు మరియు ఇతర ఆర్కిటెక్చర్లలోని CPU థ్రెడ్ల సంఖ్యలో సగం సంఖ్యకు సమానం.
- Printf: మెరుగైన రీడబిలిటీ కోసం తప్పుగా ఆకృతీకరించిన స్ట్రింగ్ల కోసం మళ్లీ రూపొందించిన దోష సందేశాలు.
- ప్రొఫైల్: కొత్త ఫంక్షన్ "Profile.take_heap_snapshot(file)", ఇది Chromeలో మద్దతు ఉన్న JSON-ఆధారిత ".heapsnapshot" ఆకృతిలో ఫైల్ను వ్రాస్తుంది.
- రాండమ్: randn మరియు randexp ఇప్పుడు రాండ్ని నిర్వచించే ఏదైనా అబ్స్ట్రాక్ట్ఫ్లోట్ రకం కోసం పని చేస్తాయి.
- repl
- "Alt-e" కీ కలయికను నొక్కితే ఇప్పుడు ఎడిటర్లో ప్రస్తుత ఇన్పుట్ తెరవబడుతుంది. మీరు ఎడిటర్ నుండి నిష్క్రమించినప్పుడు కంటెంట్ (సవరిస్తే) అమలు చేయబడుతుంది.
- REPLలో సక్రియంగా ఉన్న ప్రస్తుత మాడ్యూల్ సందర్భాన్ని "REPL.activate(::Module)" ఫంక్షన్ని ఉపయోగించి లేదా REPLలో మాడ్యూల్ని నమోదు చేసి, "Alt-m" కీ కలయికను నొక్కడం ద్వారా (ప్రధానంగా డిఫాల్ట్గా) మార్చవచ్చు.
- ప్రతి ఇన్పుట్ మరియు అవుట్పుట్ కోసం నంబర్లను ప్రింట్ చేస్తుంది మరియు అవుట్లో స్కోర్ చేసిన ఫలితాలను స్టోర్ చేసే "నంబర్డ్ ప్రాంప్ట్" మోడ్, "REPL.numbered_prompt!()"ని ఉపయోగించి యాక్టివేట్ చేయబడుతుంది.
- ట్యాబ్ పూర్తి చేయడం అందుబాటులో ఉన్న కీవర్డ్ ఆర్గ్యుమెంట్లను ప్రదర్శిస్తుంది.
- SuiteSparse: "SuiteSparse" సాల్వర్ కోసం కోడ్ "SparseArrays.jl"కి తరలించబడింది. పరిష్కర్తలు ఇప్పుడు "SuiteSparse.jl" ద్వారా తిరిగి ఎగుమతి చేయబడ్డాయి.
- SparseArays
- "SuiteSparse" సాల్వర్లు ఇప్పుడు "SparseArrays" సబ్మాడ్యూల్స్గా అందుబాటులో ఉన్నాయి.
- UMFPACK మరియు CHOLMOD థ్రెడ్ రక్షణ మోడ్లు గ్లోబల్ వేరియబుల్లను తొలగించడం మరియు లాక్లను ఉపయోగించడం ద్వారా మెరుగుపరచబడ్డాయి. బహుళ-థ్రెడ్ "ldiv!" UMFPACK వస్తువులు ఇప్పుడు సురక్షితంగా అమలు చేయబడతాయి.
- ప్రయోగాత్మక ఫంక్షన్ "SparseArrays.allowscalar(::Bool)" మీరు స్పేర్స్ శ్రేణుల స్కేలార్ ఇండెక్సింగ్ను నిలిపివేయడానికి లేదా ప్రారంభించేందుకు అనుమతిస్తుంది. ఈ ఫంక్షన్ "SparseMatrixCSC" ఆబ్జెక్ట్ల యొక్క యాదృచ్ఛిక స్కేలార్ ఇండెక్సింగ్ను గుర్తించడానికి రూపొందించబడింది, ఇది పనితీరు సమస్యలకు సాధారణ మూలం.
- టెస్ట్ సూట్ల కోసం కొత్త ఫెయిల్సేఫ్ మోడ్ వైఫల్యం లేదా లోపం సంభవించినప్పుడు పరీక్ష రన్ను ముందుగానే ముగించేస్తుంది. “@testset kwarg failfast=true” లేదా “export JULIA_TEST_FAILFAST=true” ద్వారా సెట్ చేయండి. దోష సందేశాలను ముందుగానే స్వీకరించడానికి CI పరుగులలో కొన్నిసార్లు ఇది అవసరం.
- తేదీలు: ఖాళీ స్ట్రింగ్లు చెల్లుబాటు అయ్యే "డేట్ టైమ్", "డేట్స్" లేదా "టైమ్స్" విలువలుగా తప్పుగా అన్వయించబడవు మరియు బదులుగా కన్స్ట్రక్టర్లలో మరియు పార్సింగ్లో "ఆర్గ్యుమెంట్ ఎర్రర్"ని విసిరేయండి, అయితే "ట్రైపార్స్" ఏమీ ఇవ్వదు.
- ప్యాకేజీ పంపిణీ చేయబడింది
- ప్యాకేజీ కాన్ఫిగరేషన్ (యాక్టివ్ ప్రాజెక్ట్, "LOAD_PATH", "DEPOT_PATH") ఇప్పుడు స్థానిక వర్కర్ ప్రాసెస్లను జోడించేటప్పుడు ప్రచారం చేయబడుతుంది (ఉదా. "addprocs(N:: Int)" లేదా కమాండ్ లైన్ ఫ్లాగ్ ఉపయోగించి "--procs=N").
- లోకల్ వర్కర్ ప్రాసెస్ల కోసం "addprocs" ఇప్పుడు ఎన్విరాన్మెంట్ వేరియబుల్స్ను వర్కర్ ప్రాసెస్లకు పాస్ చేయడానికి "env" అనే ఆర్గ్యుమెంట్ను అంగీకరిస్తుంది.
- యూనికోడ్: "గ్రాఫిమ్స్(లు, మీ:ఎన్)" సబ్స్ట్రింగ్ను "s"లో mth నుండి nవ గ్రాఫిమ్లకు అందిస్తుంది.
- సిస్టమ్ లైబ్రరీల నుండి DelimitedFiles ప్యాకేజీ తీసివేయబడింది మరియు ఇప్పుడు ప్రత్యేక ప్యాకేజీగా పంపిణీ చేయబడింది, అది ఉపయోగించడానికి స్పష్టంగా ఇన్స్టాల్ చేయబడాలి.
- బాహ్య ఆధారపడటం
- Linuxలో, libstdc++ సిస్టమ్ లైబ్రరీ యొక్క సంస్కరణ స్వయంచాలకంగా గుర్తించబడుతుంది మరియు అది కొత్తది అయితే, అది లోడ్ చేయబడుతుంది. "JULIA_PROBE_LIBSTDCXX=0" ఎన్విరాన్మెంట్ వేరియబుల్ సెట్ చేయడం ద్వారా పాత libstdc++ అంతర్నిర్మిత లోడింగ్ ప్రవర్తన, సిస్టమ్ వెర్షన్తో సంబంధం లేకుండా పునరుద్ధరించబడుతుంది.
- జూలియా బైనరీ నుండి "RPATH" తీసివేయబడింది, ఇది "RUNPATH" వేరియబుల్ని నిర్వచించడంలో విఫలమయ్యే Linuxలో లైబ్రరీలను విచ్ఛిన్నం చేస్తుంది.
- సాధన మెరుగుదలలు: "MethodError" యొక్క అవుట్పుట్ మరియు పద్ధతులు (ఉదాహరణకు "methods(my_func)" నుండి) ఇప్పుడు స్టాక్ ట్రేస్లోని పద్ధతుల అవుట్పుట్ సూత్రానికి అనుగుణంగా ఫార్మాట్ చేయబడింది మరియు రంగు వేయబడింది.
మూలం: opennet.ru