Faʻasaʻo 19.3.0 o le GraalVM masini masini ma faʻatinoga o le Python, JavaScript, Ruby ma le R faʻavae i luga.

Kamupani Oracle lomia fa'asa'olotoina o se masini va'aia lautele GraalVM 19.3.0, lea e lagolagoina le faʻaogaina o talosaga i le JavaScript (Node.js), Python, Ruby, R, soʻo se gagana mo le JVM (Java, Scala, Clojure, Kotlin) ma gagana e mafai ona gaosia ai le LLVM bitcode (C, C++). , Ele). O le lala 19.3 o loʻo faʻavasegaina o le Long Term Support (LTS) faʻamalolo ma ofoofogia lagolago JDK11, e aofia ai le mafai ona tuʻufaʻatasia le Java code i faila faʻatinoina (GraalVM Native Image). Poloketi code tufatufaina e laiseneina ile GPLv2. I le taimi lava e tasi, na faʻasaʻolotoina lomiga fou o le Python, JavaScript, Ruby ma le R gagana faʻaaogaina GraalVM - GraalPython, GraalJS, TruffleRuby и AnapogiR.

GraalVM saunia O se JIT compiler e mafai ona faʻatinoina le code mai soʻo se gagana tusitusi i luga o le lele i le JVM, e aofia ai le JavaScript, Ruby, Python ma le R, ma mafai ai foʻi ona faʻatautaia le tulafono faʻapitoa i le JVM ua liua i le LLVM bitcode. O meafaigaluega na tu'uina mai e GraalVM e aofia ai le fa'aogaina o le gagana-tuto'atasi debugger, se faiga fa'alauiloa, ma se su'esu'ega fa'asoa manatu. O le GraalVM e mafai ai ona faʻapipiʻi talosaga faʻatasi ma vaega i gagana eseese, faʻatagaina oe e faʻaogaina mea faitino ma faʻasologa mai code i isi gagana. Mo gagana fa'avae JVM o lo'o iai avanoa fatuina o faila e mafai ona tuʻufaʻatasia e tuʻufaʻatasia i totonu o le masini masini e mafai ona faʻatinoina saʻo ma le itiiti ifo o le mafaufau (manatua ma le puleaina o filo e faʻatinoina e ala i le faʻafesoʻotaʻi o le auivi. Alafu VM).

Suiga i GraalJS:

  • Le fetaui ma Node.js 12.10.0 ua mautinoa;
  • O meatotino ma galuega fa'alelalolagi e le'i fa'ata'atia e fa'aletonu ona o le fa'aletonu:
    lalolagi (suia e globalThis, seti js.global-property e toe faafoi), faatinoga (js.performance), lolomi ma printErr (js.print);

  • Fa'atinoina le Promise.allSettled ma le fa'aleaogaina o le talosaga, lea e maua ile ECMAScript 2020 mode (“-js.ecmascript-version=2020”);
  • Fa'afouina fa'alagolago ICU4J i le 64.2, ASM i le 7.1.

Suiga i GraalPython:

  • Fa'aopoopo stubs gc.{enable,disable,isenabled}, fa'atino charmap_build, sys.hexversion ma _lzma;
  • Faʻafouina Python 3.7.8 faletusi masani;
  • Faaopoopo le lagolago mo NumPy 1.16.4 ma Pandas 0.25.0;
  • Fa'aopoopoina le timeit lagolago;
  • socket.socket ua aumai i se setete e mafai ai e oe ona taʻavale "graalpython -m http.server" ma uta le faʻailoga (e aunoa ma le TLS) http punaoa;
  • Fa'atonu fa'afitauli ile fa'aalia o mea pandas.DataFrame.
    le sa'o le faiga o tuple i bytes.startswith,
    fa'aleaga tofitofiga a tagata su'esu'e ma le fa'aogaina o le dict.__contains__ mo lomifefiloi;

  • Fa'aopoopo le lagolago mo ast.PyCF_ONLY_AST, lea faatagaina faʻamautinoa o loʻo galue le pytest;
  • Faaopoopo lagolago PEP 498 (feso'ota'iga o manoa i upu moni);
  • Fa'atinoina le "--python.EmulateJython" fu'a e fa'aulufale mai vasega JVM fa'aoga masani Python fa'aulufale mai fa'asologa ma pu'e JVM tuusaunoaga mai le code Python;
  • Fa'aleleia le fa'atinoina o le fa'asalalauga, tu'u ese le fa'asao,
    mauaina mea Python mai le JVM code. Faʻaleleia iʻuga i suʻega faʻatinoga mo le python code ma faʻaopoopoga faʻale-aganuʻu (faʻatinoina o faʻaopoopoga masani i luga o le llvm o lona uiga o le bitcode llvm e pasi atu i GraalVM mo le JIT compilation).

Suiga i TruffleRuby:

  • Ina ia tuufaatasia faʻaopoopoga faʻale-aganuʻu, o loʻo faʻaogaina nei le pusa meafaigaluega LLVM, faʻatupu uma le tulafono faʻapitoa ma le bitcode. O lona uiga o le tele o fa'aopoopoga fa'ale-aganu'u e tatau ona tu'ufa'atasia i fafo o le atigipusa, fa'ate'aina le tele o fa'afitauli feso'ota'iga;
  • Faʻapipiʻi LLVM faʻapipiʻi mo le faʻapipiʻiina o faʻaopoopoga masani i TruffleRuby;
  • O le faʻapipiʻiina o faʻaopoopoga C++ i TruffleRuby e le toe manaʻomia le faʻapipiʻiina o le libc++ ma le libc++abi;
  • Laisene fa'afouina ile EPL 2.0/GPL 2.0/LGPL 2.1, tutusa ma JRuby talu ai nei;
  • Fa'aopoopoina le lagolago mo finauga i le GC.stat;
  • Fa'atino le Kernel#load method with a wrapper and Kernel#spawn with :chdir;
  • Faʻaopoopo rb_str_drop_bytes, e sili ona faʻaaogaina e OpenSSL;
  • E aofia ai fa'aopoopoga o ma'a ma'amua na fa'apipi'iina e mana'omia mo ala fou i Rails 6;
  • Ina ia tuufaatasia faʻaopoopoga faʻale-aganuʻu, e faʻaaogaina fuʻa, pei o le MRI;
  • Ua mae'a fa'ata'ita'iga fa'atinoga ma ua fa'aitiitia le taumafaina o mea e manatua.

Suiga i le FastR:

  • Faʻamautinoa le fetaui ma le R 3.6.1;
  • Fa'aopoopo le lagolago muamua mo le fa'atinoina o fa'aopoopoga fa'ale-aganu'u fa'avae ile LLVM. I le fausiaina o pusa R, faʻapipiʻi le FastR e faʻaoga ai le meafaigaluega LLVM a GraalVM. O faila faila e maua mai o le a aofia uma ai le tulafono faʻapitoa ma le LLVM bitcode.

    O faʻapipiʻi faʻapipiʻi ua fausia foi i lenei auala.
    O le FastR e utaina ma fa'agaoioia le fa'aupuga fa'aopoopo fa'ale-aganu'u e ala i le le mafai, ae a fa'alauiloa i le "--R.BackEnd=llvm" filifiliga, o le a fa'aogaina le bitcode. O le pito i tua o le LLVM e mafai ona faʻaoga filifilia mo nisi R afifi e ala i le faʻamaonia "--R.BackEndLLVM=pkg1,pkg2". Afai e iai ni fa'afitauli i le fa'apipi'iina o afifi, e mafai ona e toe fa'afo'i mea uma e ala i le vala'au i le fastr.setToolchain("native") po'o le fa'atonutonuina ma le lima le faila $FASTR_HOME/etc/Makeconf;

  • I lenei faʻasalalauga, o le FastR o loʻo faʻasalalau e aunoa ma le GCC runtime library;
  • Fa'amaumau manatuaga liki;
  • Faʻafitauli faʻafitauli pe a galue ma vete tetele (> 1GB);
  • Faʻatinoina grepRaw, ae naʻo mo faʻamau = T.

puna: opennet.ru

Faaopoopo i ai se faamatalaga