Ipagawas ang 19.3.0 sa GraalVM virtual machine ug mga pagpatuman sa Python, JavaScript, Ruby ug R base niini

Oracle Company gipatik pagpagawas sa usa ka universal virtual machine GraalVM 19.3.0, nga nagsuporta sa pagpadagan sa mga aplikasyon sa JavaScript (Node.js), Python, Ruby, R, bisan unsang pinulongan alang sa JVM (Java, Scala, Clojure, Kotlin) ug mga pinulongan diin ang LLVM bitcode mahimong mabuhat (C, C++ , Taya). Ang 19.3 nga sanga giklasipikar nga usa ka Long Term Support (LTS) nga pagpagawas ug talagsaon pagsuporta JDK11, lakip ang abilidad sa pag-compile sa Java code ngadto sa executable files (GraalVM Native Image). Kodigo sa proyekto giapod-apod sa lisensyado ubos sa GPLv2. Sa samang higayon, ang bag-ong mga bersyon sa Python, JavaScript, Ruby ug R nga mga pagpatuman sa pinulongan gamit ang GraalVM gipagawas - GraalPython, GraalJS, TruffleRuby ΠΈ PaspasR.

GraalVM naghatag Usa ka JIT compiler nga makahimo og code gikan sa bisan unsang scripting language sa langaw sa JVM, lakip ang JavaScript, Ruby, Python ug R, ug nagpaposible usab sa pagpadagan sa lumad nga code sa JVM nga nakabig ngadto sa LLVM bitcode. Ang mga himan nga gihatag sa GraalVM naglakip sa usa ka debugger nga independente sa pinulongan, usa ka sistema sa profiling, ug usa ka analista sa alokasyon sa memorya. Gipaposible sa GraalVM ang paghimo og hiniusa nga mga aplikasyon nga adunay mga sangkap sa lainlaing mga pinulongan, nga nagtugot kanimo sa pag-access sa mga butang ug mga arrays gikan sa code sa ubang mga pinulongan. Alang sa mga pinulongan nga nakabase sa JVM adunay oportunidad paghimo sa mga executable nga mga file nga gihugpong sa machine code nga mahimong ipatuman direkta nga adunay gamay nga konsumo sa panumduman (gipatuman ang memorya ug pagdumala sa thread pinaagi sa pagkonektar sa framework Substrate VM).

Mga pagbag-o sa GraalJS:

  • Ang pagkaangay sa Node.js 12.10.0 gisiguro;
  • Ang dili standard nga global nga mga kabtangan ug mga gimbuhaton gi-disable pinaagi sa default:
    global (gipulihan sa globalThis, pag-set sa js.global-property nga ibalik), performance (js.performance), print ug printErr (js.print);

  • Gipatuman nga Promise.allSettled ug nullish coalescing proposal, nga anaa sa ECMAScript 2020 mode (β€œ-js.ecmascript-version=2020”);
  • Gi-update nga mga dependency ICU4J sa 64.2, ASM sa 7.1.

Mga Pagbag-o sa GraalPython:

  • Gidugang stubs gc.{enable,disabled,isenabled}, gipatuman charmap_build, sys.hexversion ug _lzma;
  • Gi-update nga Python 3.7.8 standard library;
  • Gidugang nga suporta alang sa NumPy 1.16.4 ug Pandas 0.25.0;
  • Gidugang nga suporta sa oras;
  • socket.socket gidala ngadto sa usa ka estado nga nagtugot kaninyo sa pagdagan β€œgraalpython -m http.server” ug load unencrypted (walay TLS) http mga kapanguhaan;
  • Giayo ang mga isyu sa pagpakita sa mga butang nga pandas.DataFrame.
    sayop nga pagproseso sa mga tuple sa bytes.startswith,
    pagguba sa assignment sa mga iterator ug paggamit sa dict.__contains__ para sa mga diksyonaryo;

  • Gidugang nga suporta para sa ast.PyCF_ONLY_AST, nga gitugotan pagsiguro nga ang pytest molihok;
  • Gidugang pagsuporta PEP 498 (string interpolation sa literal);
  • Gipatuman ang "--python.EmulateJython" nga bandera aron i-import ang mga klase sa JVM gamit ang normal nga Python import syntax ug makuha ang mga eksepsiyon sa JVM gikan sa Python code;
  • Mas maayo nga parser performance, exception caching,
    pag-access sa mga butang sa Python gikan sa JVM code. Gipauswag nga mga resulta sa mga pagsulay sa pasundayag alang sa code sa python ug lumad nga mga extension (pagpatuman sa mga lumad nga extension sa ibabaw sa llvm nagpasabot nga ang bitcode llvm gipasa ngadto sa GraalVM alang sa JIT compilation).

Mga Pagbag-o sa TruffleRuby:

  • Sa pag-compile sa lumad nga mga extension, ang built-in nga LLVM toolkit gigamit na karon, nga nagmugna sa native code ug bitcode. Nagpasabot kini nga mas daghang lumad nga mga extension ang kinahanglang mag-compile sa gawas sa kahon, nga magwagtang sa kadaghanang mga isyu sa pag-link;
  • Pagbulag sa pag-install sa LLVM alang sa pag-install sa mga lumad nga extension sa TruffleRuby;
  • Ang pag-instalar sa mga extension sa C++ sa TruffleRuby wala na magkinahanglan og pag-instalar sa libc++ ug libc++abi;
  • Gi-update ang lisensya sa EPL 2.0/GPL 2.0/LGPL 2.1, sama sa bag-o nga JRuby;
  • Gidugang nga suporta alang sa opsyonal nga mga argumento sa GC.stat;
  • Gipatuman ang Kernel#load method nga may wrapper ug Kernel#spawn with :chdir;
  • Gidugang ang rb_str_drop_bytes, nga maayo tungod kay gigamit kini sa OpenSSL;
  • Lakip ang mga extension sa pre-installed gems nga gikinahanglan para sa mga bag-ong riles sa Rails 6;
  • Sa pag-compile sa lumad nga mga extension, ang mga bandera gigamit, sama sa MRI;
  • Nahimo na ang mga pag-optimize sa performance ug ang konsumo sa memorya gipakunhod.

Mga Pagbag-o sa FastR:

  • Ang pagkaangay sa R ​​3.6.1 gisiguro;
  • Gidugang preliminary nga suporta alang sa pagpadagan sa lumad nga mga extension base sa LLVM. Kung nagtukod mga lumad nga R nga pakete, ang FastR gi-configure aron magamit ang built-in nga tool sa LLVM sa GraalVM. Ang resulta nga binary files maglangkob sa native code ug LLVM bitcode.

    Ang mga pre-installed nga mga pakete gihimo usab niining paagiha.
    Ang FastR nagkarga ug nagpadagan sa lumad nga extension code pinaagi sa default, apan kung gilusad gamit ang opsyon nga "--R.BackEnd=llvm", bitcode ang gamiton. Ang LLVM backend mahimong gamiton nga pilion alang sa pipila ka R packages pinaagi sa pagpiho sa "--R.BackEndLLVM=pkg1,pkg2". Kung naa kay mga problema sa pag-install sa mga package, mahimo nimong ibalik ang tanan pinaagi sa pagtawag sa fastr.setToolchain("native") o mano-mano nga pag-edit sa $FASTR_HOME/etc/Makeconf file;

  • Niini nga pagpagawas, ang FastR nagpadala nga wala ang GCC runtime nga mga librarya;
  • Giayo nga mga pagtulo sa memorya;
  • Naayo ang mga problema kung nagtrabaho kauban ang dagkong mga vector (> 1GB);
  • Gipatuman grepRaw, apan alang lamang sa fixed=T.

Source: opennet.ru

Idugang sa usa ka comment