Oracle uzņēmums universālas virtuālās mašīnas laidums , atbalstoša lietojumprogrammu palaišanu JavaScript (Node.js), Python, Ruby, R, jebkurās valodās, kas ir JVM (Java, Scala, Clojure, Kotlin) un valodās, kuru dēļ var veidoties LLVM bitkods (C, C++, Rust). 19.3 zarā ir klasificēta kā ilgtermiņa atbalsta (LTS) versija un atbalsts , tostarp ar Java koda kompilācijas iespējām izpildfailos (GraalVM Native Image). Projekta kods ir GPLv2 licencē. Vienlaikus ir izlaistas jaunas versijas GraalVM izmantošanai Python, JavaScript, Ruby un R valodās — , , un .
GraalVM JIT kompilators, kas var uzreiz izpildīt JVM kodu jebkurās skriptu valodās, tostarp JavaScript, Ruby, Python un R, kā arī nodrošina iespēju palaist nativu kodu JVM, kas ir pārvērsts LLVM bitkodā. GraalVM nodrošina rīkus, kas ir neatkarīgi no programmēšanas valodām, tostarp atkļūdošanas rīkus, profilēšanas sistēmu un atmiņas sadalījuma analīzi. GraalVM ļauj veidot kombinētus lietojumfailus ar komponentiem, kas ir dažādās valodās, ļaujot piekļūt objektiem un masīviem no citu valodu koda. JVM balstītām valodām ir kompilēto mašīnkoda izpildfailu veidošana, ko var izpildīt tieši ar minimālām atmiņas prasībām (atmiņas un pavedienu pārvaldība tiek īstenota, izmantojot ).
:
- Nodrošināta saderība ar Node.js 12.10.0;
- Nespecifiskās globālās īpašības un funkcijas ir izslēgtas pēc noklusējuma:
global (aizstāts ar globalThis, atgriešana iespējama, izmantojot iestatījumu js.global-property), performance (js.performance), print un printErr (js.print); - Ir ieviestas Promise.allSettled un nullish coalescing proposals, kas pieejamas ECMAScript 2020 režīmā (‘—js.ecmascript-version=2020’);
- Atjauninātas ICU4J atkarības līdz 64.2, ASM līdz 7.1.
GraalPython:
- Pievienotas stubs gc.{enable,disable,isenabled}, ieviestas charmap_build, sys.hexversion un _lzma;
- Atjaunināta standarta Python bibliotēka līdz 3.7.8;
- Pievienota atbalsts NumPy 1.16.4 un Pandas 0.25.0;
- Pievienots atbalsts timeit;
- socket.socket ir pielāgots tādā veidā, lai varētu palaist ‘graalpython -m http.server’ un iegūt nešifrētus (bez TLS) http resursus;
- Ir novērstas problēmas, kas saistītas ar pandas.DataFrame objektu izvadīšanu,
nepareiza tuple apstrāde bytes.startswith,
destrukturējošais piešķiršana iteratoriem un dict.__contains__ izmantošana vārdnīcām; - Pievienots atbalsts ast.PyCF_ONLY_AST, kas nodrošināt pytest darbību;
- Pievienota PEP 498 (virknju interpolācija literālos);
- karogs «—python.EmulateJython» JVM-klases importēšanai, izmantojot parasto Python sintaksi import un JVM izņēmumu notveršanu no Python koda;
- Uzlabota parsera, izņēmumu kešatmiņas,
pieejamība Python objektiem no JVM koda. Uzlaboti veiktspējas testi gan Python, gan nativās paplašinājumos (nativu paplašinājumu izpilde virs llvm nozīmē, ka llvm bitkods tiek nodots GraalVM JIT kompilācijai).
TruffleRuby:
- Nativu paplašinājumu kompilācijai tagad izmanto iebūvēto LLVM rīku, kas ģenerē gan nativu kodu, gan bitkodu. Tas nozīmē, ka vairāk nativu paplašinājumu vajadzētu kompilēties bez papildu iestatījumiem, risinot lielāko daļu saistīto problēmu;
- Atsevišķa LLVM instalācija nativu paplašinājumu uzstādīšanai TruffleRuby;
- C++ paplašinājumu uzstādīšanai TruffleRuby vairs nav nepieciešama libc++ un libc++abi instalācija;
- Licenze atjaunota uz EPL 2.0/GPL 2.0/LGPL 2.1, kā nesenajā JRuby;
- Pievienota atbalsts opciju argumentiem GC.stat;
- Realizēta metode Kernel#load ar apvalku un Kernel#spawn ar :chdir;
- Pievienots rb_str_drop_bytes, ievērojams ar to, ka to izmanto OpenSSL;
- Iekļauti iepriekš instalētie gem paplašinājumi, kas nepieciešami rails new Rails 6;
- Nativu paplašinājumu kompilācijai izmantoti karogi, kā MRI;
- Veiktspējas optimizācijas un atmiņas patēriņa samazinājums.
FastR:
- Nodrošināta R 3.6.1 saderība;
- Pievienota sākotnējā atbalsts nativu paplašinājumu izpildei, izmantojot LLVM. Kompilējot nativu R pakotņu, FastR ir konfigurēts, lai izmantotu iebūvēto GraalVM LLVM rīku. Līdzīgi iegūtie binārie faili saturēs gan nativu kodu, gan LLVM bitkodu.
Iepriekš instalētās pakotnes arī ir kompilētas šādā veidā.
FastR pēc noklusējuma ielādē un izpilda nativu kodu paplašinājumos, bet, ja tas tiek palaists ar opciju «—R.BackEnd=llvm», tiks izmantots bitkods. LLVM aizmugures var izmantot selektīvi dažām R pakotnēm, norādot «—R.BackEndLLVM=pkg1,pkg2». Gadījumā, ja rodas problēmas, instalējot pakotnes, to var atgriezt atpakaļ, izsaucot fastr.setToolchain(«native») vai manuāli rediģējot failu $FASTR_HOME/etc/Makeconf; - Šajā laidienā FastR tiek piegādāts bez GCC runtime bibliotēkām;
- Labotas atmiņas noplūdes;
- Labotas problēmas ar lieliem vektoriem (>1GB);
- Ir īstenots grepRaw, taču tikai fixed=T.
Avots: opennet.lv
