GraalVM virtuaalmasina ja Python, JavaScript, Ruby ning R realiseerimise versioon 19.3.0

Oracle Corporation avalikustas ĂŒlikonverentsi virtuaalmasina vĂ€ljaanne GraalVM 19.3.0, mis toetab rakenduste kĂ€ivitamist JavaScriptis (Node.js), Pythonis, Ruby's, R-is, mis tahes keeles JVM-i jaoks (Java, Scala, Clojure, Kotlin) ja keeltes, mille jaoks saab koostada LLVM bitikoodi (C, C++, Rust). Versioon 19.3 on toodud pikaajalise toe (LTS) vĂ€ljaannete kategooriasse ja on tĂ€helepanuvÀÀrne toetuse JDK 11, sealhulgas Java-koodi kompileerimise vĂ”imalus kĂ€itatavateks failideks (GraalVM Native Image). Projekti kood levitatakse on litsentsi all GPLv2. Samuti on vĂ€lja antud uued versioonid graalVM-i kasutavatest keele realiseeringutest Python, JavaScript, Ruby ja R – GraalPython, GraalJS, TruffleRuby ja FastR.

GraalVM pakub JIT-kompilaator, mis suudab jooksvalt tĂ€ita JVM-i mis tahes skriptikeeltes, sealhulgas JavaScriptis, Ruby's, Pythonis ja R-is, ning vĂ”imaldab kĂ€ivitada natiivkoodi JVM-is, mis on muudetud LLVM bitikoodiks. GraalVM-i pakutav tööriistakomplekt sisaldab keele sĂ”ltumatut debugeerimist, profiling-sĂŒsteemi ja mĂ€lu jaotamise analĂŒsaatorit. GraalVM vĂ”imaldab luua kombineeritud rakendusi, mille komponendid on erinevates keeltes, vĂ”imaldades juurdepÀÀsu objektidele ja massiividele teiste keelte koodist. JVM-i pĂ”hikoodide jaoks on vĂ”imaluse loomisega masinkoodiks kompileeritud kĂ€itatavaid faile, mida saab otse kĂ€ivitada minimaalsete mĂ€lunĂ”udmistega (mĂ€lu ja lĂ”imede haldamine on rakendatud raamistiku kaudu Substrate VM).

GraalJS muudatused:

  • Node.js 12.10.0 ĂŒhilduvuse tagamine;
  • Vaikeperioodil on keelatud mittestandardsete globaalsete omaduste ja funktsioonide kasutamine:
    global (asendatud globalThis'iga, tagastamiseks on saadaval seade js.global-property), performance (js.performance), print ja printErr (js.print);
  • Reaaliseeritud on Promise.allSettled ja nullish coalescing ettepanek, mis on saadaval ECMAScript 2020 reĆŸiimis ("—js.ecmascript-version=2020");
  • ICU4J sĂ”ltuvused on uuendatud versioonini 64.2, ASM versioonini 7.1.

Muudatused GraalPythonis:

  • Lisatud on gc.{enable,disable,isenabled} nuud, samuti on kehtestatud charmap_build, sys.hexversion ja _lzma;
  • Uuendatud on Python 3.7.8 standardteek;
  • Lisatud on tugi NumPy 1.16.4 ja Pandas 0.25.0 jaoks;
  • Lisatud on tugi timeit'ile;
  • socket.socket on viidud sellesse seisundisse, et vĂ”imaldada "graalpython -m http.server" kĂ€ivitamista ja mitteĆĄifreeritud (ilma TLS-ita) http-ressursside allalaadimist;
  • Parandatud on probleeme, mis on seotud pandas.DataFrame objektide vĂ€ljundiga,
    vales töötlemises tupledega bytes.startswith,
    destruktiivsete mÀÀrangute iteratoorid ja dict.__contains__ kasutamine sÔnastikele;
  • Lisatud tugi ast.PyCF_ONLY_AST, mis vĂ”imaldas tagada pytesti töö;
  • Lisatud toetamine PEP 498 (stringide interpoleerimine litteraalides);
  • Teostatud lipp „—python.EmulateJython” JVM-klasside importimiseks tavalise Python-sĂŒntaksiga import ja JVM-ettevĂ”tete pĂŒĂŒdmine Python-koodist;
  • Parandatud parsi toimivust, erandite vahemĂ€lu,
    juurdepÀÀsu Python-objektidele JVM-koodist. Parendatud tulemusi jÔudluse testides Python-koodi ja kohandatud laiendite jaoks (kohandatud laiendite kÀitamine llvm peal tÀhendab, et llvm bitcode edastatakse GraalVM-ile JIT-kompileerimiseks).

Muudatused TruffleRuby-s:

  • NĂŒĂŒd kasutatakse kohalike laiendite kompileerimiseks sisseehitatud LLVM tööriistu, mis genereerivad nii kohalikku koodi kui ka bitcode'i. See tĂ€hendab, et rohkem kohalikke laiendeid peaks kohe kompileerima, lahendades enamiku sidumisega seotud probleeme;
  • Erinev LLVM install kohandatud laiendite installimiseks TruffleRuby-s;
  • C++ laiendite paigaldamiseks TruffleRuby-s ei ole enam vajalik libc++ ja libc++abi installimine;
  • Litsents on uuendatud EPL 2.0/GPL 2.0/LGPL 2.1, nagu hiljuti JRuby-s;
  • Lisatud valikuline argumentide tugi GC.stat-is;
  • Rakendatud meetod Kernel#load koos mĂ€hisega ja Kernel#spawn koos :chdir;
  • Lisatud rb_str_drop_bytes, mille eripĂ€ra on, et seda kasutab OpenSSL;
  • EeltĂ€idetud gem-ide laiendid, mis on vajalikud rails new Rails 6-s, on kaasatud;
  • Kohandatud laiendite kompileerimiseks on kaasatud lipud, nagu MRI-s;
  • Töötasu parendused ja mĂ€lukasutuse vĂ€hendamine.

Muudatused FastR-is:

  • Tagatud ĂŒhilduvus R 3.6.1-ga;
  • Lisatud eeltugi kohandatud laiendite kĂ€itamiseks LLVM-i pĂ”hjal. Kohandatud R paketid on kompileeritud FastR-i jaoks, et kasutada GraalVM-i sisseehitatud LLVM tööriistu. Tootmisfailid sisaldavad nii kohalikku koodi kui ka LLVM bitcode'i.

    EeltÀidetud paketid on samuti sellisel kujul kompileeritud.
    FastR laadib ja kĂ€ivitab kohandatud laiendite koodi vaikimisi, kuid kui see kĂ€ivitatakse lipuga „—R.BackEnd=llvm”, kasutatakse bitcode'i. LLVM tagakĂŒlg on valikuline mĂ”nede R pakettide jaoks, mÀÀrates „—R.BackEndLLVM=pkg1,pkg2”. Kui paketide installimisel esineb probleeme, saab kĂ”ik tagasi viia, kutsudes esile fastr.setToolchain(„native”) vĂ”i kĂ€sitsi redigeerides faili $FASTR_HOME/etc/Makeconf;

  • Selles versioonis on FastR saadaval ilma GCC runtime'i teekideta;
  • MĂ€lu lekkeid on parandatud;
  • Suurtel vektoritel (>1GB) esinevaid probleeme on parandatud;
  • Implementatsioon grepRaw, kuid ainult fixed=T jaoks.

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster