Khupha i-19.3.0 yomatshini obonakalayo weGraalVM kunye nokuphunyezwa kwePython, iJavaScript, iRuby kunye ne-R esekwe kuyo.

Inkampani ye-Oracle ipapashiwe ukukhutshwa komatshini wehlabathi jikelele GraalVM 19.3.0, exhasa usetyenziso olusebenzayo kwiJavaScript (Node.js), iPython, iRuby, R, naziphi na iilwimi zeJVM (iJava, iScala, iClojure, iKotlin) kunye neelwimi apho i-bitcode yeLLVM inokuveliswa khona (C, C++) , Umhlwa). Isebe le-19.3 lihlelwa njengeNkxaso yexesha elide (LTS) ukukhululwa kunye ephawulekayo inkxaso I-JDK 11, kuquka ukukwazi ukuqokelela ikhowudi yeJava kwiifayile eziphunyezwayo (iGraalVM Native Image). Ikhowudi yeprojekthi isasazwa ngu ilayisenisi phantsi kwe-GPLv2. Kwangelo xesha, iinguqulelo ezintsha zePython, iJavaScript, iRuby kunye nokuphunyezwa kolwimi lweR kusetyenziswa iGraalVM zakhululwa - GraalPython, GraalJS, TruffleRuby ΠΈ FastR.

GraalVM ibonelela Umqokeleli we-JIT onokwenza ikhowudi kulo naluphi na ulwimi lokubhala kwi-fly kwi-JVM, kuquka iJavaScript, iRuby, iPython kunye ne-R, kwaye yenza kube lula ukuqhuba ikhowudi yendalo kwi-JVM eguqulelwe kwi-bitcode ye-LLVM. Izixhobo ezibonelelwa nguGraalVM ziquka i-debugger ezimeleyo yolwimi, inkqubo yeprofayili, kunye nomhlalutyi wokwabiwa kwememori. I-GraalVM yenza kube lula ukwenza usetyenziso oludityanisiweyo olunamacandelo kwiilwimi ezahlukeneyo, ikuvumela ukuba ufikelele kwizinto kunye noluhlu olusuka kwikhowudi kwezinye iilwimi. Kwiilwimi ezisekwe kwi-JVM zikhona ithuba ukwenza iifayile eziphunyeziweyo eziqokelelwe kwikhowudi yomatshini enokuphunyezwa ngokuthe ngqo ngokusetyenziswa kwememori encinci (inkumbulo kunye nolawulo lwentambo luphunyezwa ngokudibanisa isakhelo. Inkqutyana ye-VM).

Utshintsho kwiGraalJS:

  • Ukuhambelana ne-Node.js 12.10.0 kuqinisekiswa;
  • Iipropati zelizwe jikelele ezingekho mgangathweni kunye nemisebenzi ivaliwe ngokungagqibekanga:
    global (ithatyathwe yi globalThis, setting js.global-property to return), ukusebenza (js.performance), print and printErr (js.print);

  • Implemented Promise.allSettled and nullish coalescing isindululo, ezifumaneka ECMAScript 2020 mode (β€œ-js.ecmascript-version=2020”);
  • Ukuxhomekeka okuhlaziyiweyo ICU4J ukuya ku-64.2, ASM ukuya ku-7.1.

Utshintsho kwiGraalPython:

  • I-stubs efakiweyo gc.{enable,disable,isenabled}, isetyenziswe charmap_build, sys.hexversion kunye ne_lzma;
  • Ithala leencwadi eliqhelekileyo lePython 3.7.8;
  • Inkxaso eyongeziweyo yeNumPy 1.16.4 kunye nePandas 0.25.0;
  • Inkxaso yexesha elongeziweyo;
  • i-socket.socket iziswe kwimeko evumela ukuba usebenzise "graalpython -m http.server" kwaye ulayishe i-uncrypted (ngaphandle kwe-TLS) izibonelelo ze-http;
  • Imiba elungisiweyo ngokubonisa izinto ze-pandas.DataFrame.
    ukuqhubekeka okungalunganga kwee-tuples kwi-bytes.startswith,
    ulwabelo lwezakhiwo zokuphinda-phinda kunye nokusetyenziswa kwe-dict.__iqulathe__ kwizichazi-magama;

  • Inkxaso eyongeziweyo ye-ast.PyCF_ONLY_AST, leyo kuvunyelwe qinisekisa ukuba i-pytest iyasebenza;
  • Yongeziwe inkxaso I-PEP 498 (i-string interpolation in literals);
  • Iphunyeziwe iflegi "--python.EmulateJython" ukungenisa iiklasi ze-JVM usebenzisa i-syntax eqhelekileyo yokungenisa iPython kwaye ubambe ngaphandle kwe-JVM kwikhowudi yePython;
  • Ukuphuculwa komsebenzi wokwahlulahlula, ngaphandle kwe-caching,
    ukufikelela kwizinto zePython kwikhowudi ye-JVM. Iziphumo eziphuculweyo kuvavanyo lwentsebenzo yekhowudi yepython kunye nezandiso zemveli (ukwenza izandiso zalapha ngaphezulu kwellvm kuthetha ukuba i-bitcode llvm igqithiselwe kwiGraalVM yokuhlanganiswa kweJIT).

Utshintsho kwi TruffleRuby:

  • Ukuqokelela izandiso zomthonyama, ikhithi yezixhobo ze-LLVM eyakhelwe-ngaphakathi ngoku iyasetyenziswa, isenza zombini ikhowudi yemveli kunye nebitcode. Oku kuthetha ukuba izandiso ezininzi zomthonyama kufuneka ziqokelele ngaphandle kwebhokisi, zishenxisa imiba enxibelelanayo emininzi;
  • Ukwahlula ukufakela kwe-LLVM yokufakela izandiso zendalo kwiTruffleRuby;
  • Ukufakela i-C++ izandiso kwi-TruffleRuby akusafuni fakela i-libc++ kunye ne-libc++abi;
  • Ilayisensi ihlaziywe kwi-EPL 2.0/GPL 2.0/LGPL 2.1, efanayo neJRuby yakutshanje;
  • Inkxaso eyongeziweyo yeengxoxo ozikhethelayo kwi-GC.stat;
  • Qalisa indlela yeKernel#yokulayisha ngesisongelo kunye neKernel#zalela nge :chdir;
  • Yongezwe i-rb_str_drop_bytes, into enhle kuba i-OpenSSL iyayisebenzisa;
  • Kuqukwe izandiso zamatye anqabileyo afakwe ngaphambili afunekayo kwiireyili ezintsha kwi-Rails 6;
  • Ukuqokelela izandiso zendalo, iiflegi zisetyenziswa, njenge-MRI;
  • Ukulungiswa kokusebenza kuye kwenziwa kwaye ukusetyenziswa kwememori kuncitshisiwe.

Utshintsho kwi-FastR:

  • Ukuhambelana ne-R 3.6.1 kuqinisekiswa;
  • Inkxaso eyongeziweyo yokuqhuba izandiso zendalo ezisekwe kwi-LLVM. Xa kusakhiwa iipakethe ze-R zomthonyama, i-FastR iqwalaselwe ukuba isebenzise isixhobo se-LLVM esakhelwe ngaphakathi seGraalVM. Iifayile zokubini ezinesiphumo ziyakuqulatha zombini ikhowudi yemveli kunye nebitcode yeLLVM.

    Iiphakheji ezifakwe ngaphambili nazo zakhiwe ngolu hlobo.
    I-FastR ilayisha kwaye iqhuba ikhowudi yolwandiso lwendalo ngokungagqibekanga, kodwa xa yaziswa ngokhetho "--R.BackEnd=llvm", ibitcode iya kusetyenziswa. Umva we-LLVM ungasetyenziswa ngokukhethiweyo kwezinye iipakethe ze-R ngokuchaza "--R.BackEndLLVM=pkg1,pkg2". Ukuba uneengxaki zokufakela iipakethe, ungabuyisela yonke into emva ngokufowunela fastr.setToolchain("native") okanye uhlele ngesandla ifayile ye $FASTR_HOME/etc/Makeconf;

  • Kolu kukhutshwa, iinqanawa ze-FastR ngaphandle kweelayibrari ze-GCC zexesha lokusebenza;
  • Ukuvuza kwememori ezinzileyo;
  • Iingxaki ezilungisiweyo xa usebenza ngeevectors ezinkulu (> 1GB);
  • Iphunyeziwe i-grepRaw, kodwa kuphela i-fixed=T.

umthombo: opennet.ru

Yongeza izimvo