Tulutsani 19.3.0 ya makina enieni a GraalVM ndi kukhazikitsa kwa Python, JavaScript, Ruby ndi R kutengera izo.

Kampani ya Oracle losindikizidwa kutulutsidwa kwa makina a universal virtual GraalVM 19.3.0, yomwe imathandizira kugwiritsa ntchito JavaScript (Node.js), Python, Ruby, R, zilankhulo zilizonse za JVM (Java, Scala, Clojure, Kotlin) ndi zilankhulo zomwe LLVM bitcode imatha kupangidwira (C, C++) , Dzimbiri). Nthambi ya 19.3 imayikidwa ngati Kutulutsa Kwanthawi yayitali (LTS) ndi chodabwitsa chithandizo Chithunzi cha JDK11, kuphatikiza kuthekera kophatikiza ma code a Java kukhala mafayilo omwe angathe kuchitidwa (GraalVM Native Image). Project kodi wogawidwa ndi zololedwa pansi pa GPLv2. Nthawi yomweyo, mitundu yatsopano ya Python, JavaScript, Ruby ndi R chilankhulo chogwiritsa ntchito GraalVM idatulutsidwa - Zithunzi za GraalPython, GraalJS, TruffleRuby ΠΈ FastR.

Zithunzi za GraalVM amapereka Chojambulira cha JIT chomwe chimatha kuyika ma code kuchokera kuchilankhulo chilichonse cholembera pa ntchentche mu JVM, kuphatikiza JavaScript, Ruby, Python ndi R, komanso chimathandizira kuyendetsa ma code amtundu wa JVM osinthidwa kukhala LLVM bitcode. Zida zoperekedwa ndi GraalVM zikuphatikiza debugger yodziyimira payokha, kachitidwe kambiri, ndi chowunikira kukumbukira. GraalVM imakupatsani mwayi wopanga mapulogalamu ophatikizika okhala ndi zigawo m'zilankhulo zosiyanasiyana, kukulolani kuti mupeze zinthu ndi masanjidwe kuchokera pamakhodi azilankhulo zina. Kwa zilankhulo zochokera ku JVM zilipo mwayi kupanga mafayilo otheka omwe amaphatikizidwa mu code yamakina omwe amatha kuchitidwa mwachindunji ndikugwiritsa ntchito kukumbukira pang'ono (kukumbukira ndi kuwongolera ulusi kumayendetsedwa kudzera pakulumikiza chimango. Gawo la VM).

Kusintha kwa GraalJS:

  • Kugwirizana ndi Node.js 12.10.0 kumatsimikiziridwa;
  • Zosakhazikika zapadziko lonse lapansi ndi ntchito zimayimitsidwa mwachisawawa:
    global (m'malo mwa globalThis, setting js.global-property to return), performance (js.performance), print and printErr (js.print);

  • Implemented Promise.allSettled and nullish coalescing proposal, yomwe ikupezeka mu ECMAScript 2020 mode (β€œ-js.ecmascript-version=2020”);
  • Zodalira zosinthidwa ICU4J mpaka 64.2, ASM kukhala 7.1.

Zosintha mu GraalPython:

  • Ma stubs gc owonjezera.{enable,disable,isenabled}, akhazikitsa charmap_build, sys.hexversion ndi _lzma;
  • Kusinthidwa laibulale ya Python 3.7.8;
  • Thandizo lowonjezera la NumPy 1.16.4 ndi Pandas 0.25.0;
  • Thandizo la nthawi yowonjezera;
  • socket.socket yabweretsedwa ku dziko lomwe limakulolani kuti muthamangitse "graalpython -m http.server" ndikutsegula osalemba (popanda TLS) http zothandizira;
  • Tinakonza zinthu ndi pandas.DataFrame zinthu.
    kukonza zolakwika zama tuples mu bytes.startswith,
    kuwononga ntchito ya obwerezabwereza ndi kugwiritsa ntchito dict.__contains__ m'madikishonale;

  • Anawonjezera thandizo la ast.PyCF_ONLY_AST, lomwe kuloledwa onetsetsani kuti pytest ikugwira ntchito;
  • Zowonjezedwa thandizo PEP 498 (kutanthauzira kwa chingwe m'mawu enieni);
  • Zakhazikitsidwa mbendera ya "-python.EmulateJython" kuti mulowetse makalasi a JVM pogwiritsa ntchito syntax wamba wa Python ndikugwirani JVM kupatula pa Python code;
  • Kukhathamiritsa kwa magwiridwe antchito, kupatula caching,
    kupeza zinthu za Python kuchokera ku code ya JVM. Zotsatira zabwino pamayeso oyeserera a python code ndi zowonjezera zakubadwa (kuchita zowonjezera zakubadwa pamwamba pa llvm kumatanthauza kuti bitcode llvm imaperekedwa ku GraalVM pakuphatikiza kwa JIT).

Zosintha mu TruffleRuby:

  • Kuti muphatikize zowonjezera zakwawo, zida za LLVM zomwe zidamangidwamo tsopano zagwiritsidwa ntchito, ndikupanga ma code achikhalidwe ndi bitcode. Izi zikutanthauza kuti zowonjezera zachibadwidwe ziyenera kusanjika m'bokosi, ndikuchotsa zovuta zambiri zolumikizira;
  • Kuyika kwa LLVM kosiyana pakuyika zowonjezera zaku TruffleRuby;
  • Kuyika zowonjezera za C++ pa TruffleRuby sikufunanso kukhazikitsa libc++ ndi libc++abi;
  • License yasinthidwa ku EPL 2.0/GPL 2.0/LGPL 2.1, yofanana ndi yaposachedwa ya JRuby;
  • Thandizo lowonjezera la mikangano yosasankha ku GC.stat;
  • Anakhazikitsa njira ya Kernel#load ndi chokulunga ndi Kernel#sspawn with :chdir;
  • Anawonjezera rb_str_drop_bytes, zomwe ziri zabwino chifukwa OpenSSL imagwiritsa ntchito;
  • Kuphatikizirapo zowonjezera za miyala yamtengo wapatali yomwe idayikidwapo kale yofunikira panjanji zatsopano mu Rails 6;
  • Kuphatikizira zowonjezera zachibadwidwe, mbendera zimagwiritsidwa ntchito, monga mu MRI;
  • Kukhathamiritsa kwa magwiridwe antchito kwapangidwa ndipo kugwiritsa ntchito kukumbukira kwachepetsedwa.

Zosintha mu FastR:

  • Kugwirizana ndi R 3.6.1 kumatsimikiziridwa;
  • Anawonjezera chithandizo choyambirira pakuyendetsa zowonjezera zakubadwa zochokera ku LLVM. Mukamanga ma phukusi a R, FastR imakonzedwa kuti igwiritse ntchito zida za GraalVM za LLVM. Mafayilo a binary omwe atsatira adzakhala ndi ma code amtundu ndi LLVM bitcode.

    Phukusi lokhazikitsidwa kale limamangidwanso motere.
    FastR imanyamula ndikuyendetsa ma code awo owonjezera mwachisawawa, koma ikakhazikitsidwa ndi "--R.BackEnd=llvm", bitcode idzagwiritsidwa ntchito. Kumbuyo kwa LLVM kutha kugwiritsidwa ntchito mosankha pamaphukusi ena a R potchula "--R.BackEndLLVM=pkg1,pkg2". Ngati muli ndi vuto loyika ma phukusi, mutha kubweza chilichonse poyimba fastr.setToolchain("native") kapena kusintha pamanja $FASTR_HOME/etc/Makeconf file;

  • Pakutulutsidwa uku, FastR imatumiza popanda malaibulale a GCC;
  • Kuwonongeka kwa kukumbukira kokhazikika;
  • Kuthetsa mavuto pogwira ntchito ndi ma vector akuluakulu (> 1GB);
  • Kukhazikitsidwa kwa grepRaw, koma kokha kwa fixed=T.

Source: opennet.ru

Kuwonjezera ndemanga