GraalVM വെർച്വൽ മെഷീന്റെ 19.3.0 റിലീസ് ചെയ്യുക, അതിന്റെ അടിസ്ഥാനത്തിൽ പൈത്തൺ, ജാവാസ്ക്രിപ്റ്റ്, റൂബി, ആർ എന്നിവയുടെ നടപ്പാക്കലുകൾ

ഒറാക്കിൾ കമ്പനി പ്രസിദ്ധീകരിച്ചു ഒരു യൂണിവേഴ്സൽ വെർച്വൽ മെഷീന്റെ റിലീസ് GraalVM 19.3.0, JavaScript (Node.js), പൈത്തൺ, റൂബി, R, JVM-നുള്ള ഏതെങ്കിലും ഭാഷകൾ (Java, Scala, Clojure, Kotlin) എന്നിവയിലും LLVM ബിറ്റ്കോഡ് സൃഷ്ടിക്കാൻ കഴിയുന്ന ഭാഷകളിലും (C, C++) പ്രവർത്തിക്കുന്ന ആപ്ലിക്കേഷനുകളെ പിന്തുണയ്ക്കുന്നു. , റസ്റ്റ്). 19.3 ബ്രാഞ്ച് ഒരു ദീർഘകാല പിന്തുണ (LTS) റിലീസ് ആയി തരംതിരിച്ചിട്ടുണ്ട് ശ്രദ്ധേയമായ പിന്തുണ ജെ.ഡി.കെ 11, എക്സിക്യൂട്ടബിൾ ഫയലുകളിലേക്ക് ജാവ കോഡ് കംപൈൽ ചെയ്യാനുള്ള കഴിവ് ഉൾപ്പെടെ (GraalVM നേറ്റീവ് ഇമേജ്). പ്രോജക്റ്റ് കോഡ് വിതരണം ചെയ്തത് GPLv2 പ്രകാരം ലൈസൻസ്. അതേ സമയം, GraalVM ഉപയോഗിച്ച് പൈത്തൺ, ജാവാസ്ക്രിപ്റ്റ്, റൂബി, R ഭാഷാ നടപ്പാക്കലുകളുടെ പുതിയ പതിപ്പുകൾ പുറത്തിറങ്ങി - ഗ്രാൽപൈത്തൺ, ഗ്രാൽജെഎസ്, ട്രഫിൾ റൂബി и ഫാസ്റ്റ്ആർ.

ഗ്രാൽവിഎം നൽകുന്നു JavaScript, Ruby, Python, R എന്നിവയുൾപ്പെടെ JVM-ലെ ഏത് സ്ക്രിപ്റ്റിംഗ് ഭാഷയിൽ നിന്നും കോഡ് എക്സിക്യൂട്ട് ചെയ്യാൻ കഴിയുന്ന ഒരു JIT കംപൈലർ, കൂടാതെ LLVM ബിറ്റ്കോഡിലേക്ക് പരിവർത്തനം ചെയ്ത JVM-ൽ നേറ്റീവ് കോഡ് പ്രവർത്തിപ്പിക്കുന്നതും സാധ്യമാക്കുന്നു. GraalVM നൽകുന്ന ടൂളുകളിൽ ഭാഷാ-സ്വതന്ത്ര ഡീബഗ്ഗർ, ഒരു പ്രൊഫൈലിംഗ് സിസ്റ്റം, മെമ്മറി അലോക്കേഷൻ അനലൈസർ എന്നിവ ഉൾപ്പെടുന്നു. ഗ്രാൽവിഎം വിവിധ ഭാഷകളിലെ ഘടകങ്ങളുമായി സംയോജിത ആപ്ലിക്കേഷനുകൾ സൃഷ്ടിക്കുന്നത് സാധ്യമാക്കുന്നു, മറ്റ് ഭാഷകളിലെ കോഡിൽ നിന്ന് ഒബ്‌ജക്റ്റുകളും അറേകളും ആക്‌സസ് ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുന്നു. ജെവിഎം അടിസ്ഥാനമാക്കിയുള്ള ഭാഷകൾക്കായി ഉണ്ട് അവസരം മെഷീൻ കോഡിലേക്ക് കംപൈൽ ചെയ്‌ത എക്‌സിക്യൂട്ടബിൾ ഫയലുകൾ സൃഷ്‌ടിക്കുന്നു, അത് കുറഞ്ഞ മെമ്മറി ഉപഭോഗത്തിൽ നേരിട്ട് എക്‌സിക്യൂട്ട് ചെയ്യാൻ കഴിയും (മെമ്മറിയും ത്രെഡ് മാനേജുമെന്റും ചട്ടക്കൂട് ബന്ധിപ്പിക്കുന്നതിലൂടെ നടപ്പിലാക്കുന്നു സബ്‌സ്‌ട്രേറ്റ് വി.എം).

GraalJS-ലെ മാറ്റങ്ങൾ:

  • Node.js 12.10.0 യുമായുള്ള അനുയോജ്യത ഉറപ്പാക്കുന്നു;
  • നോൺ-സ്റ്റാൻഡേർഡ് ഗ്ലോബൽ പ്രോപ്പർട്ടികളും ഫംഗ്‌ഷനുകളും ഡിഫോൾട്ടായി പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു:
    ഗ്ലോബൽ (ഗ്ലോബൽ ഇത് മാറ്റിസ്ഥാപിച്ചു, js.global-property to return), പ്രകടനം (js.performance), print and 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, Pandas 0.25.0 എന്നിവയ്ക്കുള്ള പിന്തുണ ചേർത്തു;
  • സമയബന്ധിത പിന്തുണ ചേർത്തു;
  • "graalpython -m http.server" പ്രവർത്തിപ്പിക്കാനും എൻക്രിപ്റ്റ് ചെയ്യാത്ത (TLS ഇല്ലാതെ) http ഉറവിടങ്ങൾ ലോഡ് ചെയ്യാനും നിങ്ങളെ അനുവദിക്കുന്ന ഒരു അവസ്ഥയിലേക്ക് socket.socket കൊണ്ടുവന്നു;
  • pandas.DataFrame ഒബ്‌ജക്‌റ്റുകൾ പ്രദർശിപ്പിക്കുന്നതിലെ പ്രശ്‌നങ്ങൾ പരിഹരിച്ചു.
    ബൈറ്റുകളിൽ ട്യൂപ്പിൾസിന്റെ തെറ്റായ പ്രോസസ്സിംഗ്.ആരംഭിക്കുന്നു,
    ആവർത്തനങ്ങളുടെ വിഘടിപ്പിക്കൽ അസൈൻമെന്റും നിഘണ്ടുക്കൾക്കായി ഡിക്‌റ്റ്.__ഉൾക്കൊള്ളുന്നു__ ഉപയോഗവും;

  • ast.PyCF_ONLY_AST എന്നതിനുള്ള പിന്തുണ ചേർത്തു, ഏത് അനുവദിച്ചു പൈറ്റെസ്റ്റ് പ്രവർത്തിക്കുന്നുവെന്ന് ഉറപ്പാക്കുക;
  • ചേർത്തു പിന്തുണ PEP 498 (ലിറ്ററലുകളിൽ സ്ട്രിംഗ് ഇന്റർപോളേഷൻ);
  • നടപ്പിലാക്കി സാധാരണ പൈത്തൺ ഇമ്പോർട്ട് സിന്റാക്സ് ഉപയോഗിച്ച് JVM ക്ലാസുകൾ ഇമ്പോർട്ടുചെയ്യാനും പൈത്തൺ കോഡിൽ നിന്ന് JVM ഒഴിവാക്കലുകൾ പിടിക്കാനും "--python.EmulateJython" ഫ്ലാഗ്;
  • മെച്ചപ്പെട്ട പാഴ്സർ പ്രകടനം, ഒഴിവാക്കൽ കാഷിംഗ്,
    JVM കോഡിൽ നിന്ന് പൈത്തൺ ഒബ്‌ജക്‌റ്റുകൾ ആക്‌സസ് ചെയ്യുന്നു. പൈത്തൺ കോഡിനും നേറ്റീവ് എക്സ്റ്റൻഷനുകൾക്കുമുള്ള പെർഫോമൻസ് ടെസ്റ്റുകളിലെ മെച്ചപ്പെടുത്തിയ ഫലങ്ങൾ (llvm-ന് മുകളിൽ നേറ്റീവ് എക്സ്റ്റൻഷനുകൾ നടപ്പിലാക്കുന്നത്, JIT കംപൈലേഷനായി llvm-ലേക്ക് ബിറ്റ്കോഡ് llvm കൈമാറുന്നു എന്നാണ്).

മാറ്റങ്ങൾ TruffleRuby-ൽ:

  • നേറ്റീവ് എക്സ്റ്റൻഷനുകൾ കംപൈൽ ചെയ്യുന്നതിന്, ബിൽറ്റ്-ഇൻ LLVM ടൂൾകിറ്റ് ഇപ്പോൾ ഉപയോഗിക്കുന്നു, ഇത് നേറ്റീവ് കോഡും ബിറ്റ്കോഡും സൃഷ്ടിക്കുന്നു. ഇതിനർത്ഥം കൂടുതൽ നേറ്റീവ് എക്സ്റ്റൻഷനുകൾ ബോക്‌സിന് പുറത്ത് കംപൈൽ ചെയ്യണം, മിക്ക ലിങ്കിംഗ് പ്രശ്‌നങ്ങളും ഇല്ലാതാക്കുന്നു;
  • TruffleRuby-യിൽ നേറ്റീവ് എക്സ്റ്റൻഷനുകൾ ഇൻസ്റ്റാൾ ചെയ്യുന്നതിനായി പ്രത്യേക LLVM ഇൻസ്റ്റലേഷൻ;
  • TruffleRuby-യിൽ C++ എക്സ്റ്റൻഷനുകൾ ഇൻസ്റ്റാൾ ചെയ്യുന്നതിന് ഇനി libc++, libc++abi എന്നിവ ഇൻസ്റ്റാൾ ചെയ്യേണ്ടതില്ല;
  • ഇപിഎൽ 2.0/ജിപിഎൽ 2.0/എൽജിപിഎൽ 2.1 ലേക്ക് ലൈസൻസ് അപ്ഡേറ്റ് ചെയ്തു, സമീപകാല JRuby ന് സമാനമാണ്;
  • GC.stat-ലേക്ക് ഓപ്ഷണൽ ആർഗ്യുമെന്റുകൾക്കുള്ള പിന്തുണ ചേർത്തു;
  • ഒരു റാപ്പർ ഉപയോഗിച്ച് കേർണൽ#ലോഡ് രീതിയും കെർണൽ#സ്പാൺ ഉപയോഗിച്ച് :chdir;
  • rb_str_drop_bytes ചേർത്തു, ഇത് OpenSSL ഉപയോഗിക്കുന്നതിനാൽ മികച്ചതാണ്;
  • റെയിൽസ് 6-ൽ പുതിയ റെയിലുകൾക്ക് ആവശ്യമായ മുൻകൂട്ടി ഇൻസ്റ്റാൾ ചെയ്ത രത്നങ്ങളുടെ വിപുലീകരണങ്ങൾ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്;
  • നേറ്റീവ് എക്സ്റ്റൻഷനുകൾ കംപൈൽ ചെയ്യുന്നതിന്, എംആർഐയിലെന്നപോലെ ഫ്ലാഗുകൾ ഉപയോഗിക്കുന്നു;
  • പ്രകടന ഒപ്റ്റിമൈസേഷനുകൾ നടത്തുകയും മെമ്മറി ഉപഭോഗം കുറയ്ക്കുകയും ചെയ്തു.

മാറ്റങ്ങൾ FastR-ൽ:

  • R 3.6.1 മായി അനുയോജ്യത ഉറപ്പാക്കുന്നു;
  • LLVM അടിസ്ഥാനമാക്കിയുള്ള നേറ്റീവ് എക്സ്റ്റൻഷനുകൾ പ്രവർത്തിപ്പിക്കുന്നതിനുള്ള പ്രാഥമിക പിന്തുണ ചേർത്തു. നേറ്റീവ് R പാക്കേജുകൾ നിർമ്മിക്കുമ്പോൾ, GraalVM-ന്റെ ബിൽറ്റ്-ഇൻ LLVM ടൂളിംഗ് ഉപയോഗിക്കുന്നതിന് FastR ക്രമീകരിച്ചിരിക്കുന്നു. തത്ഫലമായുണ്ടാകുന്ന ബൈനറി ഫയലുകളിൽ നേറ്റീവ് കോഡും LLVM ബിറ്റ്കോഡും അടങ്ങിയിരിക്കും.

    മുൻകൂട്ടി ഇൻസ്റ്റാൾ ചെയ്ത പാക്കേജുകളും ഈ രീതിയിൽ നിർമ്മിച്ചിരിക്കുന്നു.
    FastR സ്ഥിരസ്ഥിതിയായി നേറ്റീവ് എക്സ്റ്റൻഷൻ കോഡ് ലോഡ് ചെയ്യുകയും പ്രവർത്തിപ്പിക്കുകയും ചെയ്യുന്നു, എന്നാൽ "--R.BackEnd=llvm" ഓപ്ഷൻ ഉപയോഗിച്ച് സമാരംഭിക്കുമ്പോൾ, ബിറ്റ്കോഡ് ഉപയോഗിക്കും. "--R.BackEndLLVM=pkg1,pkg2" വ്യക്തമാക്കുന്നതിലൂടെ ചില R പാക്കേജുകൾക്കായി LLVM ബാക്കെൻഡ് തിരഞ്ഞെടുക്കാവുന്നതാണ്. നിങ്ങൾക്ക് പാക്കേജുകൾ ഇൻസ്റ്റാൾ ചെയ്യുന്നതിൽ പ്രശ്‌നങ്ങളുണ്ടെങ്കിൽ, fastr.setToolchain("native") എന്നതിലൂടെയോ $FASTR_HOME/etc/Makeconf ഫയൽ സ്വമേധയാ എഡിറ്റ് ചെയ്‌തുകൊണ്ടോ നിങ്ങൾക്ക് എല്ലാം പഴയപടിയാക്കാനാകും;

  • ഈ റിലീസിൽ, GCC റൺടൈം ലൈബ്രറികളില്ലാതെ FastR ഷിപ്പ് ചെയ്യുന്നു;
  • സ്ഥിരമായ മെമ്മറി ലീക്കുകൾ;
  • വലിയ വെക്റ്ററുകളിൽ പ്രവർത്തിക്കുമ്പോൾ പരിഹരിച്ച പ്രശ്നങ്ങൾ (> 1GB);
  • grepRaw നടപ്പിലാക്കി, എന്നാൽ fixed=T ന് മാത്രം.

അവലംബം: opennet.ru

ഒരു അഭിപ്രായം ചേർക്കുക