Lëshimi 19.3.0 i makinës virtuale GraalVM dhe implementimeve të Python, JavaScript, Ruby dhe R mbi të

Kompania Oracle publikoi lĂ«shimi i njĂ« makine virtuale universale GraalVM 19.3.0, duke mbĂ«shtetur ekzekutimin e aplikacioneve nĂ« JavaScript (Node.js), Python, Ruby, R, çdo gjuhĂ« pĂ«r JVM (Java, Scala, Clojure, Kotlin) dhe gjuhĂ«sh pĂ«r tĂ« cilat mund tĂ« formohet kod pĂ«r LLVM (C, C++, Rust). Analiza 19.3 i pĂ«rket kategorisĂ« sĂ« lĂ«shimeve me mbĂ«shtetje tĂ« gjatĂ« (LTS) dhe Ă«shtĂ« i njohur mbĂ«shtetje JDK 11, pĂ«rfshirĂ« mundĂ«sinĂ« e kompilimit tĂ« kodit Java nĂ« skedarĂ« ekzekutivĂ« (GraalVM Native Image). Kodi i projektit distribuohet nĂ«n licencĂ«n GPLv2. NĂ« tĂ« njĂ«jtĂ«n kohĂ« janĂ« lĂ«shuar versĂŁo tĂ« reja tĂ« implementimeve tĂ« gjuhĂ«ve Python, JavaScript, Ruby dhe R qĂ« pĂ«rdorin GraalVM — GraalPython, GraalJS, TruffleRuby dhe FastR.

GraalVM ofron JIT-kompiluesi, i cili mund të ekzekutojë në JVM kodin e çdo gjuhë skritore, duke përfshirë JavaScript, Ruby, Python dhe R, si dhe ofron mundësinë e ekzekutimit të kodit natyral në JVM, e transformuar në kod LLVM. Paketa e mjeteve të GraalVM përfshin një debugger që është i pavarur nga gjuhët e programimit, një sistem profilimi dhe një analizator memorie. GraalVM mundëson krijimin e aplikacioneve të kombinuara me komponente në gjuhë të ndryshme, duke lejuar qasje në objekte dhe lista nga kodi i gjuhëve të tjera. Për gjuhët bazuar në JVM ka mundësia mundësinë e krijimit të skedarëve ekzekutivë të kompiluar në kod makinerie, të cilat mund të ekzekutohen drejtpërdrejt me konsum të minim të memorjes (menaxhimi i memories dhe rrjedhave është realizuar përmes lidhjes me kuadrin Substrate VM).

Ndryshimet në GraalJS:

  • Siguruar pĂ«rputhshmĂ«ria me Node.js 12.10.0;
  • Prona dhe funksionet globale jo standarde janĂ« çaktivizuar si parazgjedhje:
    global (e zëvendësuar me globalThis, për kthimin është parashikuar një konfigurim js.global-property), performance (js.performance), print dhe printErr (js.print);
  • JanĂ« realizuar Promise.allSettled dhe propozimi pĂ«r koalicionin nullish, tĂ« cilat janĂ« tĂ« disponueshme nĂ« modalitetin ECMAScript 2020 («—js.ecmascript-version=2020»);
  • PĂ«rditĂ«suar varĂ«sitĂ« ICU4J nĂ« 64.2, ASM nĂ« 7.1.

Ndryshimet në GraalPython:

  • Shtuar mbĂ«shtetje pĂ«r gc.{enable,disable,isenabled}, implemented charmap_build, sys.hexversion dhe _lzma;
  • PĂ«rditĂ«suar biblioteka standarde Python 3.7.8;
  • Shtuar mbĂ«shtetje pĂ«r NumPy 1.16.4 dhe Pandas 0.25.0;
  • Shtuar mbĂ«shtetje pĂ«r timeit;
  • socket.socket Ă«shtĂ« çuar nĂ« njĂ« gjendje qĂ« lejon ekzekutimin e «graalpython -m http.server» dhe ngarkimin e burimeve http pa enkriptim (pa TLS);
  • Korrigjuar problemet qĂ« ka lidhje me daljet e objekteve pandas.DataFrame,
    përpunimi i gabuar i tupeve në bytes.startswith,
    korrigjimi i caktimeve të shkrimit dhe përdorimi i dict.__contains__ për fjalorët;
  • Shtuar mbĂ«shtetje pĂ«r ast.PyCF_ONLY_AST, qĂ« mundĂ«soi siguroi funksionimin e pytest;
  • Shtuar mbĂ«shtetje PEP 498 (interpolimi i vargjeve nĂ« literale);
  • E realizuar flagi «—python.EmulateJython» pĂ«r importimin e klasave JVM duke pĂ«rdorur sintaksĂ« normale tĂ« Python-it import dhe kapjen e pĂ«rjashtimeve JVM nga kodi nĂ« Python;
  • PĂ«rmirĂ«suar performanca e parser-it, caching tĂ« pĂ«rjashtimeve,
    qasjes në objektet Python nga kodi JVM. Rezultatet e testeve të performancës për kodin python dhe zgjerimet vendase janë përmirësuar (ekzekutimi i zgjerimeve vendase mbi llvm nënkupton se bitcode llvm dërgohet në GraalVM për JIT-kompilim).

Ndryshimet në TruffleRuby:

  • PĂ«r kompilimin e zgjerimeve vendase tani aplikohet instrumenti i integruar LLVM, i cili krijon si kod vendosĂ«s ashtu edhe bitcode. Kjo do tĂ« thotĂ« se mĂ« shumĂ« zgjerime vendase duhet tĂ« kompilohen nga kutia, duke lejuar zgjidhjen e shumicĂ«s sĂ« problemeve tĂ« lidhjes;
  • Instalimi i veçantĂ« i LLVM pĂ«r instalimin e zgjerimeve vendase nĂ« TruffleRuby;
  • PĂ«r instalimin e zgjerimeve C++ nĂ« TruffleRuby tani nuk kĂ«rkohet instalimi i libc++ dhe libc++abi;
  • Licenca Ă«shtĂ« pĂ«rmirĂ«suar nĂ« EPL 2.0/GPL 2.0/LGPL 2.1, ashtu si nĂ« JRuby tĂ« fundit;
  • Shtuar mbĂ«shtetje pĂ«r argumentet opsionale nĂ« GC.stat;
  • Implementuar metoda Kernel#load me mbĂ«shtjellĂ«s dhe Kernel#spawn me :chdir;
  • Shtuar rb_str_drop_bytes, i njohur pĂ«r pĂ«rdorimin e tij nga OpenSSL;
  • Inkluduar zgjerimet e gem-eve tĂ« paracaktuara, tĂ« nevojshme pĂ«r rails new nĂ« Rails 6;
  • PĂ«r kompilimin e zgjerimeve vendase janĂ« angazhuar flamuj, ashtu si nĂ« MRI;
  • Kryer optimizime tĂ« performancĂ«s dhe reduktim tĂ« konsumit tĂ« memories.

Ndryshimet në FastR:

  • Siguruar pĂ«rputhshmĂ«rinĂ« me R 3.6.1;
  • Shtuar mbĂ«shtetje tĂ« pĂ«rparuar pĂ«r ekzekutimin e zgjerimeve vendase tĂ« bazuara nĂ« LLVM. GjatĂ« ndĂ«rtimit tĂ« paketave vendase R, FastR Ă«shtĂ« konfigurur pĂ«r tĂ« pĂ«rdorur instrumentin e integruar LLVM nĂ« GraalVM. SkedarĂ«t binarĂ« pĂ«rfundimtarĂ« do tĂ« pĂ«rmbajnĂ« si kod vendosĂ«s ashtu edhe LLVM-bitcode.

    Paketat e paracaktuara gjithashtu janë ndërtuar në këtë mënyrë.
    FastR ngarkon dhe ekzekuton kodin native tĂ« zgjerimeve si standard, por, kur ekzekutohet me opsionin «—R.BackEnd=llvm», do tĂ« pĂ«rdorĂ« bitcode. Back-end i LLVM mund tĂ« pĂ«rdoret selektivisht pĂ«r disa paketa R, duke specifikuar «—R.BackEndLLVM=pkg1,pkg2». NĂ« rast tĂ« problemeve gjatĂ« instalimit tĂ« paketimeve, mund tĂ« rikthehet çdo gjĂ« prapa duke thirrur fastr.setToolchain(«native») ose duke redaktuar manualisht skedarin $FASTR_HOME/etc/Makeconf;

  • NĂ« kĂ«tĂ« version FastR ofrohet pa biblioteka GCC runtime;
  • Korrigjuar rrjedhjet e memories;
  • Problemet e zgjidhura kur punoni me vektorĂ« tĂ« mĂ«dhenj (>1GB);
  • GrepRaw Ă«shtĂ« realizuar, por vetĂ«m pĂ«r fixed=T.

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster