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
