የ GraalVM ቨርቹዋል ማሽን 19.3.0 ልቀቅ እና የ Python፣ JavaScript፣ Ruby እና R ትግበራዎች በእሱ ላይ ተመስርተው

Oracle ኩባንያ ታትሟል ሁለንተናዊ ምናባዊ ማሽን መለቀቅ GraalVM 19.3.0በጃቫ ስክሪፕት (Node.js)፣ Python፣ Ruby፣ R፣ ማንኛውም የ JVM ቋንቋዎች (Java፣ Scala፣ Clojure፣ Kotlin) እና LLVM ቢትኮድ ሊመነጭ የሚችልባቸው ቋንቋዎች (C, C++) ላይ አፕሊኬሽኖችን ማሄድን ይደግፋል። , ዝገት). 19.3 ቅርንጫፍ እንደ የረጅም ጊዜ ድጋፍ (LTS) መለቀቅ እና ተመድቧል አስደናቂ ድጋፍ ጄዲኬ 11የጃቫ ኮድን ወደ ፈጻሚ ፋይሎች (GraalVM ቤተኛ ምስል) የማጠናቀር ችሎታን ጨምሮ። የፕሮጀክት ኮድ የተሰራጨው በ በ GPLv2 ፈቃድ ያለው። በተመሳሳይ ጊዜ፣ GraalVMን በመጠቀም የ Python፣ JavaScript፣ Ruby እና R ቋንቋ አተገባበር አዲስ ስሪቶች ተለቀቁ - GraalPython, ግራልጄኤስ, TruffleRuby и ፈጣን አር.

GraalVM ይሰጣል ጃቫ ስክሪፕት ፣ Ruby ፣ Python እና R ጨምሮ በማንኛውም የስክሪፕት ቋንቋ ኮድን በጄቪኤም ውስጥ የሚያስፈጽም JIT አጠናቃሪ እና እንዲሁም በJVM ወደ LLVM ቢትኮድ በተቀየረ ቤተኛ ኮድ ማስኬድ የሚችል ነው። በGalVM የቀረቡት መሳሪያዎች ከቋንቋ ነጻ አራሚ፣ የመገለጫ ስርዓት እና የማህደረ ትውስታ ድልድል ተንታኝ ያካትታሉ። GraalVM በተለያዩ ቋንቋዎች ከክፍሎች ጋር የተጣመሩ አፕሊኬሽኖችን ለመፍጠር ያስችለዋል፣ ይህም ቁሶችን እና ቁሶችን በሌሎች ቋንቋዎች እንዲደርሱበት ያስችልዎታል። JVM ላይ ለተመሠረቱ ቋንቋዎች አለ። ዕድል በትንሹ የማህደረ ትውስታ ፍጆታ በቀጥታ ሊከናወኑ የሚችሉ በማሽን ኮድ ውስጥ የተጠናቀሩ ፈጻሚ ፋይሎችን መፍጠር (የማህደረ ትውስታ እና የክር አስተዳደር ማዕቀፉን በማገናኘት ይተገበራል) Substrate VM).

በ GraalJS ውስጥ ለውጦች:

  • ከ Node.js 12.10.0 ጋር ተኳሃኝነት የተረጋገጠ ነው;
  • መደበኛ ያልሆኑ ዓለም አቀፋዊ ንብረቶች እና ተግባራት በነባሪነት ተሰናክለዋል፡
    ሁለንተናዊ (በግሎባልይህ ተተካ፣ js.global-property to return to return)፣ አፈጻጸም (js.performance)፣ ህትመት እና ፕሪንት ኢርር (js.print);

  • በECMAScript 2020 ሁነታ ("-js.ecmascript-version=2020") ላይ የሚገኙትን የተስፋ ቃል.ሁሉም የሰፈረ እና ባዶ የማሰባሰብ ፕሮፖዛል።
  • የተዘመኑ ጥገኞች ICU4J ወደ 64.2፣ ASM ወደ 7.1።

ለውጦች በ GraalPython:

  • የተጨመሩ stubs gc.{ማንቃት፣ማሰናከል፣ተሰናከለ}፣የተተገበረ charmap_build፣sys.hexversion እና _lzma;
  • የዘመነ Python 3.7.8 መደበኛ ቤተ-መጽሐፍት;
  • ለNumPy 1.16.4 እና Pandas 0.25.0 ተጨማሪ ድጋፍ;
  • የታከለ የጊዜ ድጋፍ;
  • socket.socket "graalpython -m http.server" እንዲያሄዱ እና ያልተመሰጠረ (ያለ TLS) http መርጃዎችን እንዲጭኑ የሚያስችል ሁኔታ ቀርቧል።
  • pandas.DataFrame ነገሮችን በማሳየት ላይ የተስተካከሉ ችግሮች።
    በባይት ውስጥ የ tuples ትክክለኛ ያልሆነ ሂደት።በመጀመሪያ፣
    የድግግሞሾችን ምደባ ማበላሸት እና መዝገበ-ቃላትን ለመዝገበ-ቃላቶች ዲክታ.__ ይይዛል__;

  • ለ ast.PyCF_ONLY_AST ድጋፍ ታክሏል፣ የትኛው ተፈቅዷል pytest እንደሚሰራ ያረጋግጡ;
  • ታክሏል። ድጋፍ PEP 498 (የሕብረቁምፊ ግንኙነት በጥሬ ቃላት);
  • ተተግብሯል። የ "--python.EmulateJython" ባንዲራ መደበኛ የፓይዘን ማስመጣት አገባብ በመጠቀም JVM ክፍሎችን ለማስመጣት እና JVM የማይካተቱ ከ Python ኮድ ለመያዝ;
  • የተሻሻለ ተንታኝ አፈጻጸም፣ ልዩ መሸጎጫ፣
    የ Python ነገሮችን ከ JVM ኮድ ማግኘት። ለ python ኮድ እና ቤተኛ ቅጥያዎች የአፈጻጸም ሙከራዎች የተሻሻሉ ውጤቶች (ቤተኛ ቅጥያዎችን በኤልቪኤም ላይ መተግበር የቢትኮድ lvm ለጂአይቲ ማጠናቀር ወደ GraalVM መተላለፉን ያሳያል)።

ለውጦች በTruffleRuby:

  • ቤተኛ ቅጥያዎችን ለማጠናቀር፣ አብሮ የተሰራው LLVM የመሳሪያ ስብስብ አሁን ጥቅም ላይ ይውላል፣ ሁለቱንም ቤተኛ ኮድ እና ቢትኮድ ይፈጥራል። ይህ ማለት ተጨማሪ ቤተኛ ቅጥያዎች ከሳጥኑ ውስጥ ማጠናቀር አለባቸው, አብዛኛዎቹን ተያያዥ ጉዳዮችን ያስወግዳል;
  • በ TruffleRuby ውስጥ ቤተኛ ቅጥያዎችን ለመጫን የተለየ LLVM ጭነት;
  • በ TruffleRuby ላይ የC++ ቅጥያዎችን መጫን libc++ እና libc++ abi መጫን አያስፈልግም።
  • ፈቃድ ወደ EPL 2.0/GPL 2.0/LGPL 2.1 ተዘምኗል፣ ልክ እንደ የቅርብ JRuby;
  • ለአማራጭ ነጋሪ እሴቶች ድጋፍ ወደ GC.stat ታክሏል;
  • የከርነል# የመጫኛ ዘዴን በመጠቅለያ እና በከርነል#spawn በ:chdir;
  • ታክሏል rb_str_drop_bytes, ይህም በጣም ጥሩ ነው OpenSSL ስለሚጠቀም;
  • በባቡር ሐዲድ 6 ውስጥ አዲስ ለሀዲድ የሚያስፈልጉ ቀድሞ የተጫኑ እንቁዎች ማራዘሚያዎች;
  • የአገር ውስጥ ቅጥያዎችን ለማጠናቀር, ባንዲራዎች ጥቅም ላይ ይውላሉ, እንደ MRI;
  • የአፈጻጸም ማሻሻያዎች ተደርገዋል እና የማህደረ ትውስታ ፍጆታ ቀንሷል።

ለውጦች በ FastR ውስጥ

  • ከ R 3.6.1 ጋር ተኳሃኝነት የተረጋገጠ ነው;
  • በኤልኤልቪኤም ላይ በመመስረት ቤተኛ ቅጥያዎችን ለማሄድ የመጀመሪያ ደረጃ ድጋፍ ታክሏል። ቤተኛ R ጥቅሎችን በሚገነቡበት ጊዜ FastR የGalVM አብሮገነብ LLVM መሳሪያን ለመጠቀም ተዋቅሯል። የተገኙት ሁለትዮሽ ፋይሎች ሁለቱንም ቤተኛ ኮድ እና LLVM ቢትኮድ ይይዛሉ።

    አስቀድመው የተጫኑ ጥቅሎች እንዲሁ በዚህ መንገድ የተገነቡ ናቸው።
    FastR በነባሪነት ቤተኛ የኤክስቴንሽን ኮድ ይጭናል እና ያስኬዳል፣ ነገር ግን በ"-R.BackEnd=llvm" አማራጭ ሲጀመር ቢትኮድ ስራ ላይ ይውላል። "--R.BackEndLLVM=pkg1,pkg2"ን በመግለጽ የኤልኤልቪኤም ጀርባ ለአንዳንድ R ጥቅሎች ተመርጦ መጠቀም ይቻላል። ፓኬጆችን መጫን ላይ ችግሮች ካጋጠሙዎት ወደ fastr.setToolchain ("ተወላጅ") በመደወል ወይም የ$FASTR_HOME/etc/Makeconf ፋይልን በእጅ በማስተካከል ሁሉንም ነገር መመለስ ይችላሉ።

  • በዚህ ልቀት ውስጥ፣ FastR ያለ የጂሲሲ አሂድ ጊዜ ቤተ-መጻሕፍት ይልካል።
  • ቋሚ የማስታወሻ ፍሳሽዎች;
  • ከትላልቅ ቬክተሮች (> 1 ጂቢ) ጋር ሲሰሩ ቋሚ ችግሮች;
  • የተተገበረ grepRaw፣ ግን ለቋሚ=T ብቻ።

ምንጭ: opennet.ru

አስተያየት ያክሉ