GraalVM వర్చువల్ మిషన్ యొక్క 19.3.0ని విడుదల చేయండి మరియు దాని ఆధారంగా పైథాన్, జావాస్క్రిప్ట్, రూబీ మరియు R అమలు

ఒరాకిల్ కంపెనీ ప్రచురించిన యూనివర్సల్ వర్చువల్ మిషన్ విడుదల GraalVM 19.3.0, ఇది JavaScript (Node.js), పైథాన్, రూబీ, R, JVM (Java, Scala, Clojure, Kotlin) కోసం ఏవైనా భాషలు మరియు LLVM బిట్‌కోడ్‌ను రూపొందించగల భాషలలో (C, C++) అమలులో ఉన్న అప్లికేషన్‌లకు మద్దతు ఇస్తుంది. , రస్ట్). 19.3 శాఖ దీర్ఘకాలిక మద్దతు (LTS) విడుదలగా వర్గీకరించబడింది మరియు విశేషమైనది మద్దతు జెడికె 11, జావా కోడ్‌ని ఎక్జిక్యూటబుల్ ఫైల్‌లుగా కంపైల్ చేయగల సామర్థ్యంతో సహా (GraalVM స్థానిక చిత్రం). ప్రాజెక్ట్ కోడ్ ద్వారా పంపిణీ చేయబడింది GPLv2 కింద లైసెన్స్ పొందింది. అదే సమయంలో, GraalVMని ఉపయోగించి పైథాన్, జావాస్క్రిప్ట్, రూబీ మరియు R భాషా అమలుల యొక్క కొత్త వెర్షన్‌లు విడుదల చేయబడ్డాయి - గ్రాల్ పైథాన్, GraalJS, ట్రఫుల్ రూబీ и ఫాస్ట్ఆర్.

GraalVM ఇది అందిస్తుంది జావాస్క్రిప్ట్, రూబీ, పైథాన్ మరియు Rతో సహా JVMలో ఫ్లైలో ఏదైనా స్క్రిప్టింగ్ భాష నుండి కోడ్‌ని అమలు చేయగల JIT కంపైలర్, మరియు LLVM బిట్‌కోడ్‌గా మార్చబడిన JVMలో స్థానిక కోడ్‌ను అమలు చేయడం కూడా సాధ్యం చేస్తుంది. GraalVM అందించిన సాధనాలలో భాష-స్వతంత్ర డీబగ్గర్, ప్రొఫైలింగ్ సిస్టమ్ మరియు మెమరీ కేటాయింపు ఎనలైజర్ ఉన్నాయి. GraalVM వివిధ భాషలలోని భాగాలతో కలిపి అప్లికేషన్‌లను సృష్టించడాన్ని సాధ్యం చేస్తుంది, ఇతర భాషలలోని కోడ్ నుండి వస్తువులు మరియు శ్రేణులను యాక్సెస్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. JVM ఆధారిత భాషల కోసం ఉంది అవకాశం మెషిన్ కోడ్‌లో కంపైల్ చేయబడిన ఎక్జిక్యూటబుల్ ఫైల్‌లను సృష్టించడం, అవి కనిష్ట మెమరీ వినియోగంతో నేరుగా అమలు చేయబడతాయి (ఫ్రేమ్‌వర్క్‌ను కనెక్ట్ చేయడం ద్వారా మెమరీ మరియు థ్రెడ్ నిర్వహణ అమలు చేయబడుతుంది సబ్‌స్ట్రేట్ VM).

GraalJSలో మార్పులు:

  • Node.js 12.10.0తో అనుకూలత నిర్ధారించబడింది;
  • ప్రామాణికం కాని ప్రపంచ లక్షణాలు మరియు విధులు డిఫాల్ట్‌గా నిలిపివేయబడ్డాయి:
    గ్లోబల్ (గ్లోబల్‌దిస్‌తో భర్తీ చేయబడింది, js.global-property to return), పనితీరు (js.performance), ప్రింట్ మరియు printErr (js.print);

  • ECMAScript 2020 మోడ్ (“-js.ecmascript-version=2020”)లో అందుబాటులో ఉన్న Promise.allSettled మరియు nullish coalescing ప్రతిపాదన అమలు చేయబడింది;
  • డిపెండెన్సీలు ICU4J 64.2కి, ASM 7.1కి నవీకరించబడింది.

మార్పులు GraalPythonలో:

  • జోడించబడిన స్టబ్స్ gc.{enable, disable,isenabled}, అమలు చేయబడిన charmap_build, sys.hexversion మరియు _lzma;
  • నవీకరించబడిన పైథాన్ 3.7.8 ప్రామాణిక లైబ్రరీ;
  • NumPy 1.16.4 మరియు పాండాస్ 0.25.0కి మద్దతు జోడించబడింది;
  • సమయ మద్దతు జోడించబడింది;
  • socket.socket "graalpython -m http.server"ని అమలు చేయడానికి మరియు ఎన్‌క్రిప్టెడ్ (TLS లేకుండా) http వనరులను లోడ్ చేయడానికి మిమ్మల్ని అనుమతించే స్థితికి తీసుకురాబడింది;
  • Pandas.DataFrame ఆబ్జెక్ట్‌లను ప్రదర్శించడంలో సమస్యలు పరిష్కరించబడ్డాయి.
    బైట్లలో టుపుల్స్ యొక్క తప్పు ప్రాసెసింగ్.ప్రారంభంతో,
    ఇటరేటర్‌ల నిర్మూలన కేటాయింపు మరియు నిఘంటువుల కోసం డిక్ట్.__contains__ ఉపయోగించడం;

  • ast.PyCF_ONLY_ASTకి మద్దతు జోడించబడింది, ఇది అనుమతించబడింది పైటెస్ట్ పనిచేస్తుందని నిర్ధారించుకోండి;
  • చేర్చబడింది మద్దతు PEP 498 (లిటరల్స్‌లో స్ట్రింగ్ ఇంటర్‌పోలేషన్);
  • అమలు చేశారు సాధారణ పైథాన్ దిగుమతి సింటాక్స్‌ని ఉపయోగించి JVM తరగతులను దిగుమతి చేయడానికి మరియు పైథాన్ కోడ్ నుండి JVM మినహాయింపులను క్యాచ్ చేయడానికి “--python.EmulateJython” ఫ్లాగ్;
  • మెరుగైన పార్సర్ పనితీరు, మినహాయింపు కాషింగ్,
    JVM కోడ్ నుండి పైథాన్ వస్తువులను యాక్సెస్ చేయడం. పైథాన్ కోడ్ మరియు స్థానిక పొడిగింపుల కోసం పనితీరు పరీక్షలలో మెరుగైన ఫలితాలు (llvm పైన స్థానిక పొడిగింపులను అమలు చేయడం వలన JIT సంకలనం కోసం llvm బిట్‌కోడ్ GraalVMకి పంపబడిందని సూచిస్తుంది).

మార్పులు TruffleRubyలో:

  • స్థానిక పొడిగింపులను కంపైల్ చేయడానికి, అంతర్నిర్మిత LLVM టూల్‌కిట్ ఇప్పుడు ఉపయోగించబడుతుంది, ఇది స్థానిక కోడ్ మరియు బిట్‌కోడ్ రెండింటినీ సృష్టిస్తుంది. దీనర్థం మరిన్ని స్థానిక పొడిగింపులు బాక్స్ వెలుపల కంపైల్ చేయాలి, చాలా లింక్ సమస్యలను తొలగిస్తాయి;
  • TruffleRubyలో స్థానిక పొడిగింపులను వ్యవస్థాపించడానికి ప్రత్యేక LLVM ఇన్‌స్టాలేషన్;
  • TruffleRubyలో C++ పొడిగింపులను ఇన్‌స్టాల్ చేయడానికి ఇకపై libc++ మరియు libc++abiని ఇన్‌స్టాల్ చేయాల్సిన అవసరం లేదు;
  • లైసెన్స్ ఇటీవలి JRuby వలె EPL 2.0/GPL 2.0/LGPL 2.1కి నవీకరించబడింది;
  • GC.statకు ఐచ్ఛిక ఆర్గ్యుమెంట్‌లకు మద్దతు జోడించబడింది;
  • కెర్నల్#లోడ్ పద్ధతిని రేపర్‌తో మరియు కెర్నల్#స్పాన్‌తో :chdir;
  • rb_str_drop_bytes జోడించబడింది, ఇది OpenSSL ఉపయోగిస్తుంది కాబట్టి ఇది చాలా బాగుంది;
  • రైల్స్ 6లో కొత్తగా పట్టాల కోసం అవసరమైన ముందే ఇన్‌స్టాల్ చేసిన రత్నాల పొడిగింపులు చేర్చబడ్డాయి;
  • స్థానిక పొడిగింపులను కంపైల్ చేయడానికి, MRIలో వలె ఫ్లాగ్‌లు ఉపయోగించబడతాయి;
  • పనితీరు ఆప్టిమైజేషన్‌లు చేయబడ్డాయి మరియు మెమరీ వినియోగం తగ్గించబడింది.

మార్పులు FastRలో:

  • R 3.6.1తో అనుకూలత నిర్ధారించబడుతుంది;
  • LLVM ఆధారంగా స్థానిక పొడిగింపులను అమలు చేయడానికి ప్రాథమిక మద్దతు జోడించబడింది. స్థానిక R ప్యాకేజీలను రూపొందిస్తున్నప్పుడు, GraalVM యొక్క అంతర్నిర్మిత LLVM సాధనాన్ని ఉపయోగించడానికి FastR కాన్ఫిగర్ చేయబడింది. ఫలితంగా బైనరీ ఫైల్‌లు స్థానిక కోడ్ మరియు LLVM బిట్‌కోడ్ రెండింటినీ కలిగి ఉంటాయి.

    ముందే ఇన్‌స్టాల్ చేయబడిన ప్యాకేజీలు కూడా ఈ విధంగా నిర్మించబడ్డాయి.
    FastR డిఫాల్ట్‌గా స్థానిక పొడిగింపు కోడ్‌ని లోడ్ చేస్తుంది మరియు అమలు చేస్తుంది, కానీ "--R.BackEnd=llvm" ఎంపికతో ప్రారంభించినప్పుడు, బిట్‌కోడ్ ఉపయోగించబడుతుంది. "--R.BackEndLLVM=pkg1,pkg2"ని పేర్కొనడం ద్వారా LLVM బ్యాకెండ్ కొన్ని R ప్యాకేజీల కోసం ఎంపికగా ఉపయోగించబడుతుంది. మీకు ప్యాకేజీలను ఇన్‌స్టాల్ చేయడంలో సమస్యలు ఉంటే, మీరు fastr.setToolchain("స్థానికం")కి కాల్ చేయడం ద్వారా లేదా $FASTR_HOME/etc/Makeconf ఫైల్‌ను మాన్యువల్‌గా సవరించడం ద్వారా అన్నింటినీ తిరిగి మార్చవచ్చు;

  • ఈ విడుదలలో, GCC రన్‌టైమ్ లైబ్రరీలు లేకుండా FastR రవాణా చేయబడుతుంది;
  • స్థిర మెమరీ లీక్‌లు;
  • పెద్ద వెక్టర్స్ (>1GB)తో పని చేస్తున్నప్పుడు పరిష్కరించబడిన సమస్యలు;
  • grepRaw అమలు చేయబడింది, కానీ fixed=T కోసం మాత్రమే.

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి