Lage 19.3.0 nan machin vityèl GraalVM ak aplikasyon Python, JavaScript, Ruby ak R ki baze sou li.

Konpayi Oracle pibliye lage yon machin vityèl inivèsèl GraalVM 19.3.0, ki sipòte aplikasyon pou kouri nan JavaScript (Node.js), Python, Ruby, R, nenpòt lang pou JVM a (Java, Scala, Clojure, Kotlin) ak lang pou ki LLVM bitcode ka pwodwi (C, C++). , rouye). Branch 19.3 la klase kòm yon lage Sipò Alontèm (LTS) ak remakab sipò JDK11, ki gen ladan kapasite pou konpile kòd Java nan dosye ègzèkutabl (GraalVM Native Image). Kòd pwojè distribiye pa lisansye anba GPLv2. An menm tan an, yo te pibliye nouvo vèsyon Python, JavaScript, Ruby ak R langaj aplikasyon GraalVM - GraalPython, GraalJS, TruffleRuby и FastR.

GraalVM bay Yon konpilateur JIT ki ka egzekite kòd ki soti nan nenpòt langaj scripting sou vole nan JVM a, ki gen ladan JavaScript, Ruby, Python ak R, epi tou li fè li posib pou kouri kòd natif natal nan JVM konvèti nan LLVM bitcode. Zouti GraalVM bay yo gen ladan yon debogaj endepandan lang, yon sistèm profilage, ak yon analizè alokasyon memwa. GraalVM fè li posib pou kreye aplikasyon konbine ak eleman nan diferan lang, sa ki pèmèt ou jwenn aksè nan objè ak etalaj nan kòd nan lòt lang. Pou lang ki baze sou JVM gen opòtinite kreye dosye ègzèkutabl konpile nan kòd machin ki ka egzekite dirèkteman ak konsomasyon memwa minimòm (memwa ak jesyon fil aplike nan konekte kad la. Substra VM).

Chanjman nan GraalJS:

  • Se konpatibilite ak Node.js 12.10.0 asire;
  • Pwopriyete ak fonksyon mondyal ki pa estanda yo enfim pa default:
    global (ranplase pa globalThis, mete js.global-property pou retounen), pèfòmans (js.performance), print ak printErr (js.print);

  • Aplike Promise.allSettled ak pwopozisyon coalescing nul, ki disponib nan mòd ECMAScript 2020 ("-js.ecmascript-version=2020");
  • Mete ajou depandans ICU4J a 64.2, ASM a 7.1.

Chanjman nan GraalPython:

  • Te ajoute souch gc.{enable,disable,isenabled}, aplike charmap_build, sys.hexversion ak _lzma;
  • Mizajou bibliyotèk estanda Python 3.7.8;
  • Te ajoute sipò pou NumPy 1.16.4 ak Pandas 0.25.0;
  • Te ajoute sipò timeit;
  • socket.socket te mennen nan yon eta ki pèmèt ou kouri "graalpython -m http.server" epi chaje resous http ki pa chiffres (san TLS);
  • Pwoblèm fiks ak montre objè pandas.DataFrame.
    pwosesis kòrèk nan tuple nan bytes.startswith,
    destriktirasyon plasman iteratè ak itilizasyon dict.__contains__ pou diksyonè;

  • Te ajoute sipò pou ast.PyCF_ONLY_AST, ki pèmèt asire ke pytest travay;
  • Te ajoute sipòte PEP 498 (entèpolasyon fisèl nan literal);
  • Aplike drapo "--python.EmulateJython" pou enpòte klas JVM lè l sèvi avèk sentaks enpòte nòmal Python epi trape eksepsyon JVM nan kòd Python;
  • Amelyore pèfòmans analizeur, kachèt eksepsyon,
    aksè nan objè Python nan kòd JVM. Rezilta amelyore nan tès pèfòmans pou kòd python ak ekstansyon natif natal (egzekisyon ekstansyon natif natal sou tèt llvm implique ke bitcode llvm pase nan GraalVM pou konpilasyon JIT).

Chanjman nan TruffleRuby:

  • Pou konpile ekstansyon natif natal yo, yo itilize zouti LLVM entegre a, ki kreye ni kòd natif natal ni kòd bit. Sa vle di ke plis ekstansyon natif natal ta dwe konpile soti nan bwat la, elimine pifò pwoblèm ki lye;
  • Enstalasyon LLVM separe pou enstale ekstansyon natif natal nan TruffleRuby;
  • Enstale ekstansyon C++ sou TruffleRuby pa mande pou enstale libc++ ak libc++abi ankò;
  • Lisans mete ajou nan EPL 2.0/GPL 2.0/LGPL 2.1, menm jan ak dènye JRuby;
  • Te ajoute sipò pou agiman opsyonèl nan GC.stat;
  • Enplemante metòd Kernel#load la ak yon wrapper ak Kernel#spawn ak :chdir;
  • Te ajoute rb_str_drop_bytes, ki se gwo paske OpenSSL sèvi ak li;
  • Enkli ekstansyon mèvèy pre-enstale ki nesesè pou ray nouvo nan Rails 6;
  • Pou konpile ekstansyon natif natal, yo itilize drapo, tankou nan MRI;
  • Optimize pèfòmans yo te fè ak konsomasyon memwa te redwi.

Chanjman nan FastR:

  • Se konpatibilite ak R 3.6.1 asire;
  • Te ajoute sipò preliminè pou kouri ekstansyon natif natal ki baze sou LLVM. Lè w ap konstwi pakè R natif natal yo, FastR konfigirasyon pou itilize zouti LLVM GraalVM ki entegre yo. Fichye binè ki kapab lakòz yo pral genyen tou de kòd natif natal ak kòd bit LLVM.

    Pakè pre-enstale yo tou bati nan fason sa a.
    FastR chaje ak kouri kòd ekstansyon natif natal pa default, men lè yo te lanse ak opsyon "--R.BackEnd=llvm", bitcode yo pral itilize. Yo ka itilize backend LLVM a oaza pou kèk pakè R lè w espesifye "--R.BackEndLLVM=pkg1,pkg2". Si w gen pwoblèm pou enstale pakè yo, ou ka retounen tout bagay tounen lè w rele fastr.setToolchain("native") oswa manyèlman modifye fichye $FASTR_HOME/etc/Makeconf;

  • Nan lage sa a, FastR bato san bibliyotèk yo ègzekutabl GCC;
  • Fuites memwa fiks;
  • Pwoblèm fiks lè w ap travay ak gwo vektè (> 1GB);
  • Aplike grepRaw, men sèlman pou fiks = T.

Sous: opennet.ru

Add nouvo kòmantè