Tukua te 19.3.0 o te miihini mariko GraalVM me nga whakatinanatanga o Python, JavaScript, Ruby me R i runga i tera

Kamupene Oracle whakaputaina te tukunga o te miihini mariko ao GraalVM 19.3.0, e tautoko ana i nga tono whakahaere i roto i te JavaScript (Node.js), Python, Ruby, R, tetahi reo mo te JVM (Java, Scala, Clojure, Kotlin) me nga reo e taea ai te hanga LLVM bitcode (C, C++ , Waikura). Ko te peka 19.3 kua whakarōpūtia hei tukunga Tautoko Roa (LTS) me te whakamiharo tautoko JDK11, tae atu ki te kaha ki te whakahiato waehere Java ki nga konae ka taea te whakahaere (GraalVM Native Image). Waehere kaupapa tohaina e raihana i raro i te GPLv2. I taua wa ano, i tukuna nga putanga hou o te Python, JavaScript, Ruby me te reo R ma te whakamahi i te GraalVM - GraalPython, GraalJS, Tarupiri и TereR.

GraalVM whakarato He kaikohikohi JIT ka taea te whakaputa waehere mai i tetahi reo tuhi i runga i te rere i roto i te JVM, tae atu ki te JavaScript, Ruby, Python me te R, ka taea hoki te whakahaere waehere taketake i roto i te JVM kua huri ki te LLVM bitcode. Ko nga taputapu e whakaratohia ana e GraalVM ko te kaiwhakairo motuhake-reo, he punaha tohu, me te kaitirotiro tohatoha mahara. Ka taea e GraalVM te hanga i nga tono whakakotahi me nga waahanga i roto i nga reo rereke, ka taea e koe te uru atu ki nga taonga me nga huinga mai i te waehere i etahi atu reo. Mo nga reo JVM kei reira faingamālie te hanga i nga konae ka taea te whakahiato ki te waehere miihini ka taea te mahi tika me te iti o te kohi mahara (ka whakatinanahia te mahara me te whakahaere miro ma te hono i te angamahi. Papanga VM).

Huringa i GraalJS:

  • Ko te hototahi ki te Node.js 12.10.0 kua whakapumautia;
  • Ko nga taonga me nga mahi o te ao kore-paerewa kua monokia ma te taunoa:
    ao (kua whakakapihia e te globalThis, te whakarite i te js.global-property ki te hoki mai), te mahi (js.performance), te ta me te printErr (js.print);

  • Kua whakatinanahia te Promise.allSettled me te tono whakakotahi kore, e waatea ana i te aratau ECMAScript 2020 (“-js.ecmascript-version=2020”);
  • I whakahōuhia nga whakawhirinaki ICU4J ki te 64.2, ASM ki te 7.1.

Ngā huringa i roto i te GraalPython:

  • Kua taapirihia nga stubs gc.{enable,disable,isenable}, i whakatinanahia te charmap_build, sys.hexversion me _lzma;
  • Whakahoutia Python 3.7.8 whare pukapuka paerewa;
  • He tautoko taapiri mo NumPy 1.16.4 me Pandas 0.25.0;
  • Kua taapirihia te tautoko timeit;
  • socket.socket kua kawea ki te ahua e taea ai e koe te whakahaere "graalpython -m http.server" me te uta i nga rauemi http kaore i whakamunatia (kaore he TLS);
  • Kua whakatika nga take me te whakaatu i nga taonga pandas.DataFrame.
    te tukatuka hē o nga tuple i roto i nga paita.startswith,
    te whakakino i te taumahi o nga kaitoro me te whakamahi i te dict.__kei____ mo nga papakupu;

  • He tautoko taapiri mo ast.PyCF_ONLY_AST, e whakaaetia whakarite kia mahi te pytest;
  • Kua tapirihia tautoko PEP 498 (whakawhitinga aho i roto i te kupu kupu);
  • Kua whakatinanahia te haki “--python.EmulateJython” ki te kawemai i nga akomanga JVM ma te whakamahi i te wetereo kawemai Python noa me te hopu i nga tuunga JVM mai i te waehere Python;
  • Kua pai ake te mahi parser, keteroki motuhake,
    te uru ki nga mea Python mai i te waehere JVM. Ko nga hua pai ake i roto i nga whakamatautau mahi mo te waehere python me nga toronga taketake (ka mahia nga toronga taketake ki runga ake o te llvm e tohu ana ka tukuna te bitcode llvm ki GraalVM mo te whakahiato JIT).

Ngā huringa i roto i a TruffleRuby:

  • Hei whakahiato i nga toronga taketake, kei te whakamahia te kete taputapu LLVM i roto, hei hanga i te waehere taketake me te bitcode. Ko te tikanga kia nui ake nga toronga Maori kia whakahiato mai i te pouaka, ka whakakore i te nuinga o nga take hono;
  • Wehea te whakaurunga LLVM mo te whakauru i nga toronga taketake ki TruffleRuby;
  • Ko te whakauru i nga toronga C++ i runga i TruffleRuby kaore e hiahiatia kia whakauruhia te libc++ me te libc++abi;
  • Kua whakahoutia te raihana ki te EPL 2.0/GPL 2.0/LGPL 2.1, he rite tonu ki a JRuby tata nei;
  • He tautoko taapiri mo nga tohenga whiriwhiri ki GC.stat;
  • I whakatinanahia te tikanga Kernel#load with a wrapper and Kernel#spawn with :chdir;
  • Kua taapirihia he rb_str_drop_bytes, he pai na te mea ka whakamahia e OpenSSL;
  • Ko nga toronga o nga kohatu kua oti te whakauru i mua e hiahiatia ana mo nga reera hou i Rails 6;
  • Hei whakahiato i nga toronga Maori, ka whakamahia nga haki, penei i te MRI;
  • Kua mahia nga arotautanga mahi, kua whakahekehia te kohi mahara.

Ngā huringa i roto i te FastR:

  • Ko te hototahi ki te R 3.6.1 ka whakarite;
  • Kua taapirihia he tautoko tuatahi mo te whakahaere i nga toronga taketake i runga i te LLVM. I te wa e hanga ana i nga kohinga R taketake, ka whirihorahia a FastR ki te whakamahi i te taputapu LLVM i hangaia e GraalVM. Ko nga konae takirua ka puta he waehere taketake me te LLVM bitcode.

    Ko nga kohinga kua oti te whakauru i mua ka hangaia ano tenei huarahi.
    Ka utaina e FastR te waehere toronga taketake ma te taunoa, engari ka whakarewahia me te whiringa "--R.BackEnd=llvm", ka whakamahia te bitcode. Ka taea te whakamahi i te tuara LLVM mo etahi kohinga R ma te tohu "--R.BackEndLLVM=pkg1,pkg2". Mena ka raru koe ki te whakauru i nga kete, ka taea e koe te whakahoki i nga mea katoa ma te waea atu ki a fastr.setToolchain("native"), ki te whakatika ranei i te konae $FASTR_HOME/etc/Makeconf;

  • I roto i tenei tukunga, ka tukuna a FastR me te kore nga whare pukapuka wa whakahaere GCC;
  • Pumau mahara turuturu;
  • Kua whakatika nga raruraru i te wa e mahi ana me nga vectors nui (>1GB);
  • I whakatinanahia te grepRaw, engari mo te whakatika = T.

Source: opennet.ru

Tāpiri i te kōrero