E hoʻokuʻu i ka 19.3.0 o ka mīkini virtual GraalVM a me nā hoʻokō o Python, JavaScript, Ruby a me R e pili ana iā ia.

Hui Oracle paʻi ʻia ka hoʻokuʻu ʻana i kahi mīkini virtual universal GraalVM 19.3.0, e kākoʻo ana i ka holo ʻana i nā noi ma JavaScript (Node.js), Python, Ruby, R, nā ʻōlelo ʻē aʻe no ka JVM (Java, Scala, Clojure, Kotlin) a me nā ʻōlelo i hiki ke hana ʻia ka LLVM bitcode (C, C++. , Rust). Hoʻokaʻawale ʻia ka lālā 19.3 ma ke ʻano he Long Term Support (LTS) hoʻokuʻu a kupaianaha kākoʻo JDK11, me ka hiki ke hoʻohui i ka Java code i loko o nā faila hiki ke hoʻokō (GraalVM Native Image). Code papahana mahele ʻia e laikini ma lalo o GPLv2. Ma ka manawa like, ua hoʻokuʻu ʻia nā mana hou o Python, JavaScript, Ruby a me R me ka hoʻohana ʻana iā GraalVM - GraalPython, GraalJS, TruffleRuby и wikiwikiR.

GraalVM hoʻolako He mea hoʻopili JIT hiki ke hoʻokō i ke code mai kekahi ʻōlelo kākau ma ka lele ʻana i ka JVM, me JavaScript, Ruby, Python a me R, a hiki nō hoʻi ke holo i ke code maoli i ka JVM i hoʻololi ʻia i LLVM bitcode. ʻO nā mea hana i hāʻawi ʻia e GraalVM e loaʻa i kahi debugger kūʻokoʻa ʻōlelo, kahi ʻōnaehana profiling, a me kahi mea hoʻokaʻawale hoʻomanaʻo. Hiki iā GraalVM ke hana i nā noi i hui pū ʻia me nā ʻāpana i nā ʻōlelo like ʻole, e ʻae iā ʻoe e komo i nā mea a me nā arrays mai nā code ma nā ʻōlelo ʻē aʻe. No nā ʻōlelo pili JVM aia manawa maopopo ka hoʻokumu ʻana i nā faila hiki ke hoʻohui ʻia i loko o ka code mīkini hiki ke hoʻokō pololei ʻia me ka liʻiliʻi o ka hoʻomanaʻo hoʻomanaʻo (hoʻokō ʻia ka hoʻomanaʻo a me ka hoʻokele thread ma o ka hoʻopili ʻana i ka framework. VM kahua).

Nā hoʻololi ma GraalJS:

  • Hoʻopili ʻia me Node.js 12.10.0;
  • Hoʻopau ʻia nā waiwai a me nā hana maʻamau ʻole ma ka paʻamau:
    honua (hoʻololi ʻia e globalThis, hoʻonohonoho i ka js.global-property e hoʻihoʻi), hana (js.performance), paʻi a printErr (js.print);

  • Ua hoʻokō ʻia ʻo Promise.allSettled a me ka nullish coalescing proposal, i loaʻa ma ECMAScript 2020 mode ("-js.ecmascript-version=2020");
  • Hoʻololi ʻia nā hilinaʻi ICU4J i 64.2, ASM i 7.1.

Hoʻololi ma GraalPython:

  • Hoʻohui ʻia nā stubs gc.{enable,disable,isenabled}, hoʻokō i ka charmap_build, sys.hexversion a me _lzma;
  • Hōʻano hou i ka Python 3.7.8 waihona maʻamau;
  • Hoʻohui kākoʻo no NumPy 1.16.4 a me Pandas 0.25.0;
  • Hoʻohui i ke kākoʻo timeit;
  • Ua lawe ʻia ʻo socket.socket i kahi mokuʻāina e hiki ai iā ʻoe ke holo "graalpython -m http.server" a hoʻouka i nā kumu waiwai ʻole (me ka ʻole o TLS) http;
  • Hoʻoponopono i nā pilikia me ka hōʻike ʻana i nā mea pandas.DataFrame.
    ka hana hewa ʻana o nā tuple ma nā bytes.startswith,
    ka hoʻopau ʻana i ka hoʻonohonoho ʻana o nā mea hoʻoponopono a me ka hoʻohana ʻana i ka dict.__contains__ no nā puke wehewehe ʻōlelo;

  • Hoʻohui kākoʻo no ast.PyCF_ONLY_AST, ʻo ia ʻae ʻia hōʻoia i ka hana pytest;
  • Hoʻohui ʻia kākoʻo PEP 498 (ka hoʻopili ʻana i ke kaula i loko o nā huaʻōlelo);
  • Hoʻokō ʻia ka hae "--python.EmulateJython" e hoʻokomo i nā papa JVM me ka hoʻohana ʻana i ka syntax import Python maʻamau a hopu i nā ʻokoʻa JVM mai ka code Python;
  • Hoʻomaikaʻi i ka hana parser, hoʻokaʻawale ʻokoʻa,
    ke komo ʻana i nā mea Python mai JVM code. ʻO nā hopena i hoʻomaikaʻi ʻia i nā hoʻokolohua hana no ka code python a me nā hoʻonui ʻōiwi (ʻo ka hoʻokō ʻana i nā hoʻonui ʻōiwi ma luna o llvm e hōʻike ana ua hāʻawi ʻia ka bitcode llvm iā GraalVM no ka hui ʻana o JIT).

Hoʻololi ma TruffleRuby:

  • No ka hōʻuluʻulu ʻana i nā hoʻonui ʻōiwi, ua hoʻohana ʻia ka pahu hana LLVM i kūkulu ʻia, e hana ana i nā code maoli a me ka bitcode. ʻO ia hoʻi, pono e hōʻuluʻulu ʻia nā hoʻonui ʻōiwi ʻē aʻe i waho o ka pahu, e hoʻopau i ka hapa nui o nā pilikia pili;
  • E hoʻokaʻawale i kahi hoʻonohonoho LLVM no ka hoʻokomo ʻana i nā hoʻonui maoli ma TruffleRuby;
  • ʻAʻole pono ke kau ʻana i nā hoʻonui C++ ma TruffleRuby e hoʻokomo i ka libc++ a me ka libc++abi;
  • Hoʻonui ʻia ka laikini i EPL 2.0/GPL 2.0/LGPL 2.1, e like me JRuby hou;
  • Hoʻohui ʻia ke kākoʻo no nā manaʻo koho i GC.stat;
  • Hoʻokō i ke ʻano Kernel#load me kahi wahī a me Kernel#spawn me :chdir;
  • Hoʻohui ʻia ʻo rb_str_drop_bytes, maikaʻi loa no ka hoʻohana ʻana o OpenSSL;
  • Hoʻohui ʻia nā mea hoʻonui o nā pōhaku i hoʻokomo mua ʻia e pono ai no nā kaʻa hou ma Rails 6;
  • No ka hōʻuluʻulu ʻana i nā hoʻonui maoli, hoʻohana ʻia nā hae, e like me ka MRI;
  • Ua hana ʻia nā loiloi hana a ua hoʻemi ʻia ka hoʻohana ʻana i ka hoʻomanaʻo.

Hoʻololi ma FastR:

  • Hoʻopili ʻia me R 3.6.1;
  • Hoʻohui i ke kākoʻo mua no ka holo ʻana i nā hoʻonui ʻōiwi ma muli o LLVM. Ke kūkulu ʻana i nā pūʻolo R maoli, ua hoʻonohonoho ʻia ʻo FastR e hoʻohana i ka mea hana LLVM i kūkulu ʻia e GraalVM. E loaʻa i nā faila binary ka helu ʻōiwi a me LLVM bitcode.

    Ua kūkulu ʻia nā pūʻolo i hoʻokomo mua ʻia i kēia ala.
    Hoʻouka a holo ʻo FastR i ka code extension native ma ke ʻano paʻamau, akā ke hoʻomaka me ke koho "--R.BackEnd=llvm", e hoʻohana ʻia ka bitcode. Hiki ke hoʻohana koho ʻia ka backend LLVM no kekahi mau pūʻolo R ma ke kuhikuhi ʻana i "--R.BackEndLLVM=pkg1,pkg2". Inā pilikia ʻoe i ka hoʻokomo ʻana i nā pūʻolo, hiki iā ʻoe ke hoʻihoʻi i nā mea āpau ma ke kāhea ʻana iā fastr.setToolchain("native") a i ʻole ka hoʻoponopono lima ʻana i ka faila $FASTR_HOME/etc/Makeconf;

  • Ma kēia hoʻokuʻu ʻana, hoʻouna ʻo FastR me ka ʻole o nā hale waihona puke runtime GCC;
  • Ua hoʻopaʻa ʻia nā leka hoʻomanaʻo;
  • Hoʻoponopono i nā pilikia i ka hana ʻana me nā vectors nui (> 1GB);
  • Hoʻokō ʻia ka grepRaw, akā no ka paʻa = T.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka