Lëshimi 19.3.0 i makinerisë 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, qĂ« mbĂ«shtet ekzekutimin e aplikacioneve nĂ« JavaScript (Node.js), Python, Ruby, R, çdo gjuhĂ« pĂ«r JVM (Java, Scala, Clojure, Kotlin) dhe gjuhĂ«t, pĂ«r tĂ« cilat mund tĂ« formohet bitkodi LLVM (C, C++, Rust). Dega 19.3 i pĂ«rket kategorisĂ« sĂ« lĂ«shimeve me mbĂ«shtetje afatgjatĂ« (LTS) dhe Ă«shtĂ« e njohur tekstit alternativ JDK 11, duke pĂ«rfshirĂ« mundĂ«sinĂ« e kompaktimit tĂ« kodit Java nĂ« skedarĂ« ekzekutues (GraalVM Native Image). Kodi i projektit shpĂ«rndahet nĂ«n licencĂ«n GPLv2. NdĂ«rkohĂ« janĂ« lĂ«shuar versionet e reja tĂ« implementimeve tĂ« gjuhĂ«ve Python, JavaScript, Ruby dhe R qĂ« pĂ«rdorin GraalVM — GraalPython, GraalJS, TruffleRuby dhe FastR.

GraalVM ofron JIT compiler që mund të ekzekutojë në fluks kodin e çdo gjuhe skriptuese në JVM, duke përfshirë JavaScript, Ruby, Python dhe R, si edhe jep mundësinë për të ekzekutuar kodin natyror në JVM, të konvertuar në bitkod LLVM. Mjeti ofruar nga GraalVM përfshin një debugguer, sistem profilizimi dhe analizator të shpërndarjes së memories, që janë të pavarura nga gjuhët e programimit. GraalVM ofron mundësinë për të krijuar aplikacione të kombinuara me komponentë në gjuhë të ndryshme, duke lejuar qasjen në objekte dhe array nga kodi në gjuhë të tjera. Për gjuhët bazuar në JVM ekziston mundësia krijimi i skedave ekzekutues që janë të kompaktura në kod makinerie, të cilat mund të ekzekutohen drejtpërdrejt me konsum minimal të memorjes (menaxhimi i memories dhe rrjedhave është realizuar përmes integrimit të kornizës Substrate VM).

Ndryshimet në GraalJS:

  • Siguruar pĂ«rputhshmĂ«rinĂ« me Node.js 12.10.0;
  • TĂ« gjitha pronĂ«sitĂ« dhe funksionet globale jo standard janĂ« çaktivizuar pĂ«r default:
    global (zëvendësuar me globalThis, për të rikthyer është parashikuar konfigurimi js.global-property), performance (js.performance), print dhe printErr (js.print);
  • JanĂ« implementuar Promise.allSettled dhe propozimi pĂ«r inkorporimin e null, qĂ« janĂ« tĂ« aksesueshĂ«m nĂ« modalitetin ECMAScript 2020 («—js.ecmascript-version=2020»);
  • Shtimi i varĂ«sive ICU4J nĂ« 64.2, ASM nĂ« 7.1.

Ndryshimet në GraalPython:

  • Shtuar stubs gc.{enable,disable,isenabled}, implementuar charmap_build, sys.hexversion dhe _lzma;
  • Biblioteka standarde Python e pĂ«rditĂ«suar nĂ« 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Ă« sjellĂ« nĂ« njĂ« gjendje qĂ« lejon ekzekutimin e «graalpython -m http.server» dhe ngarkimin e burimeve http tĂ« pa koduara (pa TLS);
  • Rregulluar problematikat qĂ« lidhen me daljen e objekteve pandas.DataFrame,
    përpunimi jo korrekt i tupleve në bytes.startswith,
    dhe përdorimi i assignimeve destrukturizuese të iteratorëve dhe dict.__contains__ për fjalorët;
  • Shtuar mbĂ«shtetje pĂ«r ast.PyCF_ONLY_AST, e cila lejoni siguroi punĂ«n e pytest;
  • Shtuar mbĂ«shtetje PEP 498 (interpolimi i vargjeve nĂ« literale);
  • Ă«shtĂ« realizuar flagu «—python.EmulateJython» pĂ«r importimin e klasave JVM duke pĂ«rdorur sintaksĂ«n normale tĂ« Python dhe kapjen e pĂ«rjashtimeve JVM nga kodi nĂ« Python;
  • PĂ«rmirĂ«suar performanca e parser-it, memorizimi i pĂ«rjashtimeve,
    qasje në objektet Python nga kodi JVM. Janë përmirësuar rezultatet në testet e performancës për kodin python dhe zgjerimet natyrore (ekzekutimi i zgjerimeve natyrore mbi llvm nënkupton se bitcode llvm transferohet në GraalVM për kompilimin JIT).

Ndryshimet në TruffleRuby:

  • PĂ«r kompilimin e zgjerimeve natyrore tani pĂ«rdoret vegla e ndĂ«rtuar LLVM, e cila krijon si kod natyror, ashtu edhe bitcode. Kjo do tĂ« thotĂ« se mĂ« shumĂ« zgjerime natyrore duhet tĂ« kompilohen nga kuti, duke zgjidhur shumicĂ«n e problemeve tĂ« lidhjes;
  • Instalimi i veçantĂ« i LLVM pĂ«r instalimin e zgjerimeve natyrore nĂ« TruffleRuby;
  • PĂ«r instalimin e zgjerimeve C++ nĂ« TruffleRuby tani nuk kĂ«rkohet instalimi i libc++ dhe libc++abi;
  • Licenca Ă«shtĂ« pĂ«rditĂ«suar nĂ« EPL 2.0/GPL 2.0/LGPL 2.1, si nĂ« JRuby e fundit;
  • MbĂ«shtetje pĂ«r argumentet opsionale nĂ« GC.stat Ă«shtĂ« shtuar;
  • Metoda Kernel#load Ă«shtĂ« implementuar me mbĂ«shtjellĂ«s dhe Kernel#spawn me :chdir;
  • rb_str_drop_bytes Ă«shtĂ« shtuar, i njohur pĂ«r pĂ«rdorimin e tij nga OpenSSL;
  • Zgjerimet e gem-eve tĂ« paracaktuara, tĂ« nevojshme pĂ«r rails new nĂ« Rails 6, janĂ« pĂ«rfshirĂ«;
  • PĂ«r kompilimin e zgjerimeve natyrore janĂ« angazhuar flakĂ«, si nĂ« MRI;
  • JanĂ« bĂ«rĂ« optimizime tĂ« performancĂ«s dhe Ă«shtĂ« reduktuar konsumimi i memories.

Ndryshimet në FastR:

  • Siguruar pĂ«rputhshmĂ«rinĂ« me R 3.6.1;
  • MbĂ«shtetje e parakohshme pĂ«r ekzekutimin e zgjerimeve natyrore tĂ« bazuara nĂ« LLVM Ă«shtĂ« shtuar. Kur ndĂ«rtimi i paketave natyrore R FastR Ă«shtĂ« konfigurimi pĂ«r pĂ«rdorimin e veglave tĂ« ndĂ«rtuara nĂ« GraalVM. SkedarĂ«t binarĂ« tĂ« rezultatit do tĂ« pĂ«rmbajnĂ« si kod natyror ashtu edhe LLVM-bitcode.

    Paketat e paracaktuara gjithashtu janë ndërtuar në këtë mënyrë.
    FastR ngarkon dhe ekzekuton kodin natyror tĂ« zgjerimeve nĂ« mĂ«nyrĂ« tĂ« paracaktuar, por, kur ekzekutohet me opsionin «—R.BackEnd=llvm», do tĂ« pĂ«rdoret bitcode. LLVM backend mund tĂ« pĂ«rdoret zgjedhshĂ«m pĂ«r disa paketa R, duke treguar «—R.BackEndLLVM=pkg1,pkg2». NĂ«se ka probleme gjatĂ« instalimit tĂ« paketave, mund tĂ« ktheheni prapa duke thirrur fastr.setToolchain(«native») ose duke redaktuar manualisht skedarin $FASTR_HOME/etc/Makeconf;

  • NĂ« kĂ«tĂ« version, FastR vjen pa bibliotekat GCC runtime;
  • JanĂ« korrigjuar rrjedhjet e memories;
  • JanĂ« korrigjuar problemet me vektorĂ«t e mĂ«dhenj (>1GB);
  • GrepRaw Ă«shtĂ« implementuar, por vetĂ«m pĂ«r fixed=T.

Burimi: opennet.ru

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