Oracle Corporation universaalse virtuaalmasina väljalase , mis toetab rakenduste käivitamist JavaScriptis (Node.js), Pythonis, Rubys, R-is, igasugustes JVM-i keeltes (Java, Scala, Clojure, Kotlin) ja keeltes, mille jaoks saab luua LLVM bitkoodi (C, C++, Rust). Haru 19.3 kuulub pikaajalise toe (LTS) väljaannete kategooriasse ja toetades , sealhulgas võime Java-koodi kompileerida täitmisfailideks (GraalVM Native Image). Projekti kood on GPLv2 litsentsi all. Samuti on välja antud uued versioonid GraalVM-i kasutavatest Python, JavaScript, Ruby ja R keele rakendustest — , , ja .
GraalVM JIT-kompilaator, mis suudab JVM-is jooksutada kõigi skriptikeelte, sealhulgas JavaScripti, Ruby, Python ja R, koode reaalajas ning võimaldab samuti käivitada JVM-is natiivkoodi, mis on muudetud LLVMi bitikoodiks. GraalVM pakub keelelt sõltumatut tööriistakomplekti, mis sisaldab debugeerijat, profiilianalüüsisüsteemi ja mälu jaotuse analyüsijat. GraalVM võimaldab luua kombineeritud rakendusi erinevatel keeltest koosnevatest komponentidest, võimaldades loetletud objekte ja massiive kasutada muudes keeltes kirjutatud koodis. JVM-põhiste keelte jaoks on saadaval masinkoodiks kompileeritud käivitusfailide loomine, mida saab otse käivitada minimaalse mälutarbimisega (mälu ja lõime haldamine on rakendatud raamistiku kaudu ).
:
- Node.js 12.10.0 ühilduvus tagatud;
- Vaikimisi on keelatud mittestandardsed globaalsete omaduste ja funktsioonide kasutamine:
global (asendatud globalThisiga, tagastamine on konfigureeritud js.global-property), performance (js.performance), print ja printErr (js.print); - On rakendatud Promise.allSettled ja nullish coalescing proposal, mis on saadaval ECMAScript 2020 režiimis ("—js.ecmascript-version=2020");
- ICU4J sõltuvused on uuendatud versioonile 64.2, ASM versioonile 7.1.
GraalPythonis:
- Lisatud on gc.{enable,disable,isenabled} kohandamisfunktsioonid, implementeeritud on charmap_build, sys.hexversion ja _lzma;
- Python 3.7.8 standardbiblioteek on uuendatud;
- Toetatud on NumPy 1.16.4 ja Pandas 0.25.0;
- Toetatud on timeit;
- socket.socket on viidud sellisesse seisundisse, mis võimaldab käivitada 'graalpython -m http.server' ja laadida alla mittekriptitud (ilma TLS-ita) http-ressursse;
- Parandatud on probleemid, mis on seotud pandas.DataFrame objektide väljundiga,
vale tuplede töötlemisega funktsioonis bytes.startswith,
destruktureerimise määramise iteratiivsete elementide ja dict.__contains__ kasutamisega sõnastike jaoks; - Lisa toetus ast.PyCF_ONLY_AST, mis tagada pytest töö;
- Lisatud PEP 498 (stringide interpoleerimine liitlikes);
- lipu '—python.EmulateJython' abil JVM-i klasside importimiseks tavalise Python-süntaksiga ja JVM-i erandite püüdmiseks Python-koodist;
- Parandatud on parseri jõudlust, erandite vahemälu,
Python objekti juurdepääs JVM-koodist. Tõhustatud on jõudluse teste python koodi ja kohandatud laiendite jaoks (kohandatud laiendite teostamine llvm-i peal eeldab, et llvm-i bitkood edastatakse GraalVM-ile JIT-kompileerimiseks).
TruffleRubys:
- Natiivsete laiendite kompileerimiseks kasutatakse nüüd sisseehitatud LLVM tööriistade komplekti, mis genereerib nii natiivset koodi kui ka bitikoodi. See tähendab, et enamiku natiivsete laiendite kompileerimine peaks olema nüüd sujuvam, lahendades enamikku sidumisega seotud probleeme;
- TruffleRuby natiivsete laiendite installimiseks on vajalik eraldi LLVM installatsioon;
- TruffleRuby C++ laiendite installimiseks ei ole nüüd vaja libc++ ja libc++abi installimist;
- Litsents on uuendatud EPL 2.0/GPL 2.0/LGPL 2.1, nagu ka hiljutises JRuby versioonis;
- GC.stat meetod on täiendatud valiklike argumendiga;
- Meetod Kernel#load on rakendatud ümber ja Kernel#spawn koos :chdir;
- Lisatud on rb_str_drop_bytes, mis on tähelepanuväärne, kuna seda kasutab OpenSSL;
- Rails 6 raamistikuks vajalikud eelnevalt installitud gemide laiendused on nüüd kaasatud, et toetada rails new;
- Natiivsete laiendite kompileerimisel on kasutusele võetud flagid nagu MRI-s;
- Tulemuslikkuse optimeerimised ja mälutarbimise vähendamine on teostatud.
FastR-is:
- Tagatud on ühilduvus R 3.6.1-ga;
- Lisatud eeltoelised LLVM-põhiste natiivsete laiendite täitmise tugi. Natiivsete pakettide koostamisel on R FastR seadistatud GraalVM-i integreeritud LLVM-tööriistade kasutamiseks. Tulemuseks olevad binaarfailid sisaldavad nii natiivset koodi kui ka LLVM-bitikoodi.
Esialgsed paketid on samuti sel viisil koostatud.
FastR laadib ja käivitab natiivset laiendite koodi vaikimisi, kuid kui see käivitatakse optsiooniga "—R.BackEnd=llvm", kasutatakse bitikoodi. LLVM-i taustteenuseid saab valida teatud R paketide jaoks, määrates "—R.BackEndLLVM=pkg1,pkg2". Pakkide installimisel tekkivate probleemide korral võib kõik tagasi pöörata, kutsudes üles fastr.setToolchain("native") või käsitsi redigeerides faili $FASTR_HOME/etc/Makeconf; - Selles väljaandes on FastR ilma GCC runtime'i raamatukogudeta;
- Mälu lekkeid on parandatud;
- Probleemid suurte vektoritega (>1GB) on parandatud;
- On rakendatud grepRaw, kuid ainult fixed=T jaoks.
Allikas: opennet.ru
