Rilis 19.3.0 saka mesin virtual GraalVM lan implementasine saka Python, JavaScript, Ruby lan R adhedhasar iku

Perusahaan Oracle diterbitake release saka mesin virtual universal GraalVM 19.3.0, sing ndhukung aplikasi sing mlaku ing JavaScript (Node.js), Python, Ruby, R, basa apa wae kanggo JVM (Java, Scala, Clojure, Kotlin) lan basa sing bisa digawe kode bit LLVM (C, C++ , Karat). Cabang 19.3 diklasifikasikakΓ© minangka release Long Term Support (LTS) lan luar biasa dhukungan JDK11, kalebu kemampuan kanggo ngumpulake kode Java menyang file eksekusi (GraalVM Native Image). Kode proyek disebarake dening dilisensi ing GPLv2. Ing wektu sing padha, versi anyar saka Python, JavaScript, Ruby lan R implementasi basa nggunakake GraalVM dirilis - GraalPython, GraalJS, TruffleRuby ΠΈ CepetR.

GraalVM nyedhiyakake A compiler JIT sing bisa nglakokakΓ© kode saka basa scripting ing fly ing JVM, kalebu JavaScript, Ruby, Python lan R, lan uga ndadekake iku bisa kanggo mbukak kode native ing JVM diowahi kanggo LLVM bitcode. Piranti sing diwenehake dening GraalVM kalebu debugger sing ora gumantung ing basa, sistem profil, lan analisa alokasi memori. GraalVM ndadekake iku bisa kanggo nggawe aplikasi gabungan karo komponen ing basa beda, ngijini sampeyan kanggo ngakses obyek lan susunan saka kode ing basa liyane. Kanggo basa basis JVM ana kesempatan nggawe file eksekusi sing dikompilasi dadi kode mesin sing bisa dieksekusi langsung kanthi konsumsi memori minimal (memori lan manajemen thread ditindakake kanthi nyambungake kerangka kerja Substrat VM).

Owah-owahan ing GraalJS:

  • Kompatibilitas karo Node.js 12.10.0 dijamin;
  • Properti lan fungsi global sing ora standar dipateni kanthi standar:
    global (diganti globalThis, nyetel js.global-property kanggo bali), kinerja (js.performance), print lan printErr (js.print);

  • Dilaksanakake Promise.allSettled lan proposal coalescing nullish, sing kasedhiya ing mode ECMAScript 2020 ("-js.ecmascript-version=2020");
  • Dianyari dependensi ICU4J kanggo 64.2, ASM kanggo 7.1.

Owahan ing GraalPython:

  • Nambahake rintisan gc.{enable,disable,isenabled}, dileksanakake charmap_build, sys.hexversion lan _lzma;
  • Dianyari Python 3.7.8 perpustakaan standar;
  • Dhukungan ditambahake kanggo NumPy 1.16.4 lan Pandas 0.25.0;
  • Dhukungan wektu ditambahake;
  • socket.socket wis digawa menyang negara sing ngijini sampeyan kanggo mbukak "graalpython -m http.server" lan mbukak unencrypted (tanpa TLS) sumber http;
  • Ndandani masalah nalika nampilake obyek panda.DataFrame.
    pangolahan tuple sing salah ing bytes.startswith,
    destructuring assignment saka iterators lan nggunakake dict.__contains__ kanggo dictionaries;

  • Added support kanggo ast.PyCF_ONLY_AST, kang diijini mesthekake yen pytest bisa digunakake;
  • Ditambahake dhukungan PEP 498 (interpolasi string ing literals);
  • Dilaksanakake flag "--python.EmulateJython" kanggo ngimpor kelas JVM nggunakake sintaks ngimpor Python normal lan nyekel pangecualian JVM saka kode Python;
  • Kinerja parser sing luwih apik, caching pengecualian,
    ngakses obyek Python saka kode JVM. Hasil sing luwih apik ing tes kinerja kanggo kode python lan ekstensi asli (nglakokake ekstensi asli ing ndhuwur llvm nuduhake yen llvm bitcode diterusake menyang GraalVM kanggo kompilasi JIT).

Owahan ing TruffleRuby:

  • Kanggo ngumpulake ekstensi asli, toolkit LLVM sing dibangun saiki digunakake, nggawe kode asli lan kode bit. Iki tegese luwih akeh ekstensi asli kudu dikompilasi metu saka kothak, mbusak paling akeh masalah sing ngubungake;
  • Instalasi LLVM kapisah kanggo nginstal ekstensi asli ing TruffleRuby;
  • Nginstal ekstensi C++ ing TruffleRuby ora mbutuhake nginstal libc++ lan libc++abi maneh;
  • Lisensi dianyari kanggo EPL 2.0 / GPL 2.0 / LGPL 2.1, padha JRuby anyar;
  • Ditambahake dhukungan kanggo argumen opsional menyang GC.stat;
  • Dilaksanakake metode Kernel#load nganggo bungkus lan Kernel#spawn nganggo :chdir;
  • Ditambahake rb_str_drop_bytes, sing apik amarga OpenSSL nggunakake;
  • Klebu ekstensi permata sing wis diinstal sing dibutuhake kanggo ril anyar ing Ril 6;
  • Kanggo ngumpulake ekstensi asli, gendera digunakake, kaya ing MRI;
  • Optimizations kinerja wis digawe lan konsumsi memori wis suda.

Owahan ing FastR:

  • Kompatibilitas karo R 3.6.1 wis mesthekake;
  • Nambahake dhukungan awal kanggo mbukak ekstensi asli adhedhasar LLVM. Nalika mbangun paket R native, FastR dikonfigurasi kanggo nggunakake piranti LLVM dibangun ing GraalVM. File binar sing diasilake bakal ngemot kode asli lan kode bit LLVM.

    Paket sing wis diinstal uga dibangun kanthi cara iki.
    FastR mbukak lan mbukak kode ekstensi asli kanthi standar, nanging nalika diluncurake kanthi pilihan "--R.BackEnd=llvm", kode bit bakal digunakake. Backend LLVM bisa digunakake kanthi selektif kanggo sawetara paket R kanthi nemtokake "--R.BackEndLLVM=pkg1,pkg2". Yen sampeyan duwe masalah nginstal paket, sampeyan bisa mbalekake kabeh kanthi nelpon fastr.setToolchain ("native") utawa kanthi manual nyunting file $FASTR_HOME/etc/Makeconf;

  • Ing rilis iki, FastR dikirim tanpa perpustakaan runtime GCC;
  • Bocor memori tetep;
  • Ndandani masalah nalika nggarap vektor gedhe (> 1GB);
  • Dilaksanakake grepRaw, nanging mung kanggo tetep = T.

Source: opennet.ru

Add a comment