Oracle Corporation ĂŒlikonverentsi virtuaalmasina vĂ€ljaanne , 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 toetuse , sealhulgas Java-koodi kompileerimise vĂ”imalus kĂ€itatavateks failideks (GraalVM Native Image). Projekti kood on litsentsi all GPLv2. Samuti on vĂ€lja antud uued versioonid graalVM-i kasutavatest keele realiseeringutest Python, JavaScript, Ruby ja R â , , ja .
GraalVM 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 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 ).
:
- 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.
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 tagada pytesti töö;
- Lisatud PEP 498 (stringide interpoleerimine litteraalides);
- 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).
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.
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
