ProHoster > Blogi > netin uutisia > GraalVM-virtuaalikoneen versio 19.3.0 ja siihen perustuvat Python-, JavaScript-, Ruby- ja R-toteutukset
GraalVM-virtuaalikoneen versio 19.3.0 ja siihen perustuvat Python-, JavaScript-, Ruby- ja R-toteutukset
Oracle Company julkaistu yleismaailmallisen virtuaalikoneen julkaisu GraalVM 19.3.0, joka tukee käynnissä olevia sovelluksia JavaScriptillä (Node.js), Pythonilla, Rubylla, R:llä, kaikilla JVM:n kielillä (Java, Scala, Clojure, Kotlin) ja kielillä, joille voidaan luoda LLVM-bittikoodi (C, C++). , ruoste). 19.3 haara on luokiteltu Long Term Support (LTS) -julkaisuksi ja huomattava tuki JDK 11, mukaan lukien kyky kääntää Java-koodia suoritettaviksi tiedostoiksi (GraalVM Native Image). Projektin koodi jakelija lisensoitu GPLv2:lla. Samalla julkaistiin uudet versiot Python-, JavaScript-, Ruby- ja R-kielitoteutuksista GraalVM:llä - GraalPython, GraalJS, TryffeliRuby и FastR.
GraalVM tarjoaa JIT-kääntäjä, joka voi suorittaa koodia mistä tahansa komentosarjakielestä lennossa JVM:ssä, mukaan lukien JavaScript, Ruby, Python ja R, ja mahdollistaa myös alkuperäisen koodin suorittamisen LLVM-bittikoodiksi muunnetussa JVM:ssä. GraalVM:n tarjoamia työkaluja ovat kieliriippumaton debuggeri, profilointijärjestelmä ja muistin varausanalysaattori. GraalVM mahdollistaa yhdistettyjen sovellusten luomisen erikielisillä komponenteilla, jolloin voit käyttää objekteja ja taulukoita muiden kielten koodista. JVM-pohjaisille kielille on olemassa tilaisuus luodaan konekoodiksi koottuja suoritettavia tiedostoja, jotka voidaan suorittaa suoraan minimaalisella muistinkulutuksella (muistin ja säikeen hallinta toteutetaan yhdistämällä puitteet Substraatti VM).
Yhteensopivuus Node.js 12.10.0:n kanssa on taattu;
Standardista poikkeavat globaalit ominaisuudet ja toiminnot on oletuksena poistettu käytöstä:
global (korvattu globalThis:llä, js.global-property palautettava), suorituskyky (js.performance), print ja printErr (js.print);
Toteutettu Promise.allSettled ja nollattu yhdistämisehdotus, jotka ovat saatavilla ECMAScript 2020 -tilassa ("-js.ecmascript-version=2020");
Päivitetty riippuvuudet ICU4J versioon 64.2, ASM versioon 7.1.
Lisätty tynkät gc.{enable,disable,isenabled}, toteutettu charmap_build, sys.hexversion ja _lzma;
Päivitetty Python 3.7.8 -standardikirjasto;
Lisätty tuki NumPy 1.16.4:lle ja Pandas 0.25.0:lle;
Lisätty timeit-tuki;
socket.socket on tuotu tilaan, jossa voit ajaa "graalpython -m http.server" ja ladata salaamattomia (ilman TLS:ää) http-resursseja;
Korjattu pandas.DataFrame-objektien näyttämiseen liittyvät ongelmat.
virheellinen monikkojen käsittely bytes.startswith,
iteraattorien rakenteen purkaminen ja sanakirjan dict.__contains__ käyttö sanakirjoissa;
Lisätty tuki tiedostolle ast.PyCF_ONLY_AST, joka sallittu varmista, että pytest toimii;
lisätty tukea PEP 498 (merkkijonojen interpolointi literaaleissa);
Toteutettu "--python.EmulateJython" -lippu tuodaksesi JVM-luokat normaalilla Python-tuontisyntaksilla ja nappataksesi JVM-poikkeukset Python-koodista;
Parannettu jäsentimen suorituskyky, poikkeusvälimuisti,
Python-objektien käyttö JVM-koodista. Parannetut tulokset python-koodin ja natiivilaajennusten suorituskykytesteissä (natiivilaajennusten suorittaminen llvm:n päällä tarkoittaa, että bittikoodi llvm välitetään GraalVM:lle JIT-kääntämistä varten).
Natiivilaajennusten kääntämiseen käytetään nyt sisäänrakennettua LLVM-työkalupakkia, joka luo sekä alkuperäistä koodia että bittikoodia. Tämä tarkoittaa, että enemmän natiivilaajennuksia pitäisi kääntää heti valmiiksi, mikä poistaa useimmat linkitysongelmat.
Erillinen LLVM-asennus natiivilaajennusten asentamista varten TruffleRubyssa;
C++-laajennusten asentaminen TruffleRubyyn ei enää vaadi libc++:n ja libc++abi:n asentamista;
Lisenssi päivitetty versioon EPL 2.0/GPL 2.0/LGPL 2.1, sama kuin äskettäin JRuby;
Lisätty tuki valinnaisille argumenteille GC.stat;
Toteutettu Kernel#load-metodi kääreellä ja Kernel#spawn komennolla :chdir;
Lisätty rb_str_drop_bytes, mikä on hienoa, koska OpenSSL käyttää sitä;
Mukana esiasennettujen jalokivien laajennukset, joita tarvitaan kiskoille, jotka ovat uusia Rails 6:ssa;
Natiivilaajennusten kokoamiseen käytetään lippuja, kuten MRI:ssä;
Suorituskykyä on optimoitu ja muistin kulutusta on vähennetty.
Lisätty alustava tuki LLVM-pohjaisten natiivilaajennusten suorittamiselle. Kun rakennat alkuperäisiä R-paketteja, FastR konfiguroidaan käyttämään GraalVM:n sisäänrakennettua LLVM-työkalua. Tuloksena olevat binaaritiedostot sisältävät sekä alkuperäistä koodia että LLVM-bittikoodia.
Myös esiasennetut paketit rakennetaan tällä tavalla.
FastR lataa ja suorittaa oletusarvoisesti alkuperäisen laajennuskoodin, mutta kun se käynnistetään "--R.BackEnd=llvm"-vaihtoehdolla, käytetään bittikoodia. LLVM-taustaohjelmaa voidaan käyttää valikoivasti joillekin R-paketeille määrittämällä "--R.BackEndLLVM=pkg1,pkg2". Jos sinulla on ongelmia pakettien asentamisessa, voit palauttaa kaiken takaisin kutsumalla fastr.setToolchain("native") tai muokkaamalla manuaalisesti tiedostoa $FASTR_HOME/etc/Makeconf;
Tässä julkaisussa FastR toimitetaan ilman GCC:n ajonaikaisia kirjastoja;
Korjattu muistivuotoja;
Korjattu ongelmat käytettäessä suuria vektoreita (>1 Gt);