GraalVM අතථ්‍ය යන්ත්‍රයේ 19.3.0 මුදා හැරීම සහ එය මත පදනම්ව Python, JavaScript, Ruby සහ R ක්‍රියාත්මක කිරීම

ඔරකල් සමාගම පළ කර ඇත විශ්වීය අථත්ය යන්ත්රයක් නිකුත් කිරීම GraalVM 19.3.0, JavaScript (Node.js), Python, Ruby, R, JVM සඳහා ඕනෑම භාෂාවක් (Java, Scala, Clojure, Kotlin) සහ LLVM බිට්කෝඩ් ජනනය කළ හැකි භාෂා (C, C++) හි ධාවනය වන යෙදුම් සඳහා සහය දක්වයි. , මලකඩ). 19.3 ශාඛාව දිගු කාලීන ආධාරක (LTS) නිකුතුවක් ලෙස වර්ගීකරණය කර ඇත කැපී පෙනෙන සහාය ජේඩීකේ 11, ජාවා කේතය ක්‍රියාත්මක කළ හැකි ගොනු බවට සම්පාදනය කිරීමේ හැකියාව ඇතුළුව (GraalVM Native Image). ව්යාපෘති කේතය විසින් බෙදා හරිනු ලැබේ GPLv2 යටතේ බලපත්‍ර ලබා ඇත. ඒ සමගම, GraalVM භාවිතා කරමින් Python, JavaScript, Ruby සහ R භාෂා ක්‍රියාත්මක කිරීම් වල නව අනුවාද නිකුත් කරන ලදී - GraalPython, GraalJS, TruffleRuby и FastR.

GraalVM සපයයි JavaScript, Ruby, Python සහ R ඇතුළුව JVM හි පියාසර කරන ඕනෑම ස්ක්‍රිප්ටින් භාෂාවකින් කේතය ක්‍රියාත්මක කළ හැකි JIT සම්පාදකයක් සහ LLVM බිට්කෝඩ් බවට පරිවර්තනය කරන ලද JVM තුළ ස්වදේශීය කේතය ධාවනය කිරීමට හැකි වේ. GraalVM විසින් සපයනු ලබන මෙවලම්වලට භාෂා-ස්වාධීන නිදොස්කරණයක්, පැතිකඩ පද්ධතියක් සහ මතක වෙන් කිරීමේ විශ්ලේෂකය ඇතුළත් වේ. GraalVM මඟින් විවිධ භාෂාවලින් සංරචක සමඟ ඒකාබද්ධ යෙදුම් නිර්මාණය කිරීමට හැකි වන අතර, ඔබට වෙනත් භාෂාවලින් කේතයෙන් වස්තූන් සහ අරා වෙත ප්‍රවේශ වීමට ඉඩ සලසයි. JVM මත පදනම් වූ භාෂා සඳහා තිබේ අවස්ථාව අවම මතක පරිභෝජනයකින් සෘජුවම ක්‍රියාත්මක කළ හැකි යන්ත්‍ර කේතයට සම්පාදනය කර ක්‍රියාත්මක කළ හැකි ගොනු නිර්මාණය කිරීම (මතකය සහ නූල් කළමනාකරණය රාමුව සම්බන්ධ කිරීම හරහා ක්‍රියාත්මක වේ. උපස්ථරය VM).

GraalJS හි වෙනස්කම්:

  • Node.js 12.10.0 සමඟ අනුකූලතාව සහතික කෙරේ;
  • සම්මත නොවන ගෝලීය ගුණාංග සහ කාර්යයන් පෙරනිමියෙන් අබල කර ඇත:
    ගෝලීය (GlobalThis මගින් ප්‍රතිස්ථාපනය කර, js.global-property නැවත පැමිණීමට සැකසීම), කාර්ය සාධනය (js.performance), print සහ printErr (js.print);

  • ECMAScript 2020 මාදිලියේ (“-js.ecmascript-version=2020”) ලබා ගත හැකි Promise.allSettled සහ nullish coalescing යෝජනාව ක්‍රියාත්මක කර ඇත;
  • ICU4J 64.2ට, ASM 7.1ට යාවත්කාලීන කරන ලදී.

වෙනස්කම් GraalPython හි:

  • එකතු කරන ලද stubs gc.{enable, disable,isenabled}, ක්‍රියාත්මක කරන ලද 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 වස්තු ප්‍රදර්ශනය කිරීමේ ගැටළු නිරාකරණය කර ඇත.
    බයිට් වලින් ටියුපල් වැරදි ලෙස සැකසීම ආරම්භ වේ,
    පුනරාවර්තකයන් විනාශ කිරීම පැවරීම සහ ශබ්දකෝෂ සඳහා dict.__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 ස්ථාපනය කිරීම අවශ්‍ය නොවේ;
  • බලපත්‍රය EPL 2.0/GPL 2.0/LGPL 2.1 වෙත යාවත්කාලීන කරන ලදී, මෑත කාලීන JRuby ලෙසම;
  • GC.stat වෙත විකල්ප තර්ක සඳහා සහය එක් කරන ලදී;
  • එතුමකින් කර්නල්#ලෝඩ් ක්‍රමය ක්‍රියාත්මක කර ඇති අතර කර්නල්#ස්පාන් සමඟ :chdir;
  • rb_str_drop_bytes එකතු කරන ලදී, එය OpenSSL භාවිතා කරන නිසා විශිෂ්ටයි;
  • රේල් පීලි 6 හි නව රේල් පීලි සඳහා අවශ්‍ය පූර්ව-ස්ථාපිත මැණික්වල දිගු ඇතුළත්;
  • දේශීය දිගු සම්පාදනය කිරීම සඳහා, MRI හි මෙන්, කොඩි භාවිතා කරනු ලැබේ;
  • කාර්ය සාධනය ප්‍රශස්තිකරණය කර ඇති අතර මතක පරිභෝජනය අඩු කර ඇත.

වෙනස්කම් FastR හි:

  • R 3.6.1 සමඟ අනුකූලතාව සහතික කෙරේ;
  • LLVM මත පදනම් වූ දේශීය දිගු ධාවනය සඳහා මූලික සහය එක් කරන ලදී. දේශීය R පැකේජ තැනීමේදී, FastR GraalVM හි ඇති LLVM මෙවලම් භාවිතා කිරීමට වින්‍යාස කර ඇත. ප්‍රතිඵලයක් ලෙස ලැබෙන ද්විමය ගොනු වල ස්වදේශීය කේතය සහ LLVM බිට්කෝඩ් යන දෙකම අඩංගු වේ.

    පෙර ස්ථාපනය කරන ලද පැකේජ ද මේ ආකාරයෙන් ගොඩනගා ඇත.
    FastR පෙරනිමියෙන් ස්වදේශීය දිගු කේතය පූරණය කර ධාවනය කරයි, නමුත් "--R.BackEnd=llvm" විකල්පය සමඟ දියත් කළ විට, බිට්කෝඩ් භාවිතා වේ. "--R.BackEndLLVM=pkg1,pkg2" සඳහන් කිරීමෙන් LLVM පසුපෙළ සමහර R පැකේජ සඳහා තෝරා ගත හැක. ඔබට පැකේජ ස්ථාපනය කිරීමේදී ගැටළු තිබේ නම්, ඔබට fastr.setToolchain("native") ඇමතීමෙන් හෝ $FASTR_HOME/etc/Makeconf ගොනුව අතින් සංස්කරණය කිරීමෙන් සියල්ල ආපසු හැරවිය හැක;

  • මෙම නිකුතුවේදී, FastR GCC ධාවන කාල පුස්තකාල නොමැතිව නැව්ගත කරයි;
  • ස්ථාවර මතක කාන්දුවීම්;
  • විශාල දෛශික සමඟ වැඩ කිරීමේදී ස්ථාවර ගැටළු (> 1GB);
  • grepRaw ක්‍රියාත්මක කර ඇත, නමුත් fixed=T සඳහා පමණි.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න