Gefa út 19.3.0 af GraalVM sýndarvélinni og útfærslur á Python, JavaScript, Ruby og R byggðar á henni

Oracle fyrirtæki опубликовала gefa út alhliða sýndarvél GraalVM 19.3.0, sem styður keyrslu forrit í JavaScript (Node.js), Python, Ruby, R, hvaða tungumál sem er fyrir JVM (Java, Scala, Clojure, Kotlin) og tungumál sem hægt er að búa til LLVM bitakóða fyrir (C, C++ , Ryð). 19.3 útibúið er flokkað sem Long Term Support (LTS) útgáfu og merkilegt stuðningur JDK11, þar á meðal getu til að setja saman Java kóða í keyrsluskrár (GraalVM Native Image). Verkefnakóði dreift af leyfi samkvæmt GPLv2. Á sama tíma voru gefnar út nýjar útgáfur af Python, JavaScript, Ruby og R tungumálaútfærslum með GraalVM - GraalPython, GraalJS, TrufflaRúbín и FastR.

GraalVM veitir JIT þýðandi sem getur keyrt kóða úr hvaða forskriftarmáli sem er á flugi í JVM, þar á meðal JavaScript, Ruby, Python og R, og gerir það einnig mögulegt að keyra innfæddan kóða í JVM sem er breytt í LLVM bitakóða. Verkfærin sem GraalVM býður upp á innihalda tungumálóháðan aflúsara, prófílkerfi og greiningartæki fyrir minnisúthlutun. GraalVM gerir það mögulegt að búa til samsett forrit með íhlutum á mismunandi tungumálum, sem gerir þér kleift að nálgast hluti og fylki úr kóða á öðrum tungumálum. Fyrir JVM-undirstaða tungumál er til tækifæri búa til keyranlegar skrár settar saman í vélkóða sem hægt er að keyra beint með lágmarks minnisnotkun (minni og þráðastjórnun er útfærð með því að tengja rammann Undirlag VM).

Breytingar á GraalJS:

  • Samhæfni við Node.js 12.10.0 er tryggð;
  • Óstöðlaðir alþjóðlegir eiginleikar og aðgerðir eru sjálfgefið óvirkar:
    global (komið í stað globalThis, stillir js.global-property til að skila), árangur (js.performance), print og printErr (js.print);

  • Innleidd Promise.allSettled og ógild samrunatillögu, sem eru fáanleg í ECMAScript 2020 ham ("-js.ecmascript-version=2020");
  • Uppfært ósjálfstæði ICU4J í 64.2, ASM í 7.1.

Breytingar í GraalPython:

  • Bætti við stubbum gc.{enable,disable,isenabled}, innleiddi charmap_build, sys.hexversion og _lzma;
  • Uppfært Python 3.7.8 staðlað bókasafn;
  • Bætti við stuðningi fyrir NumPy 1.16.4 og Pandas 0.25.0;
  • Bætt við timeit stuðningi;
  • socket.socket hefur verið komið í ástand sem gerir þér kleift að keyra "graalpython -m http.server" og hlaða ódulkóðuðum (án TLS) http tilföngum;
  • Lagaði vandamál með að sýna pandas.DataFrame hluti.
    röng vinnsla á túllum í bytes.startswith,
    eyðileggjandi úthlutun endurtekinna og notkun dict.__contains__ fyrir orðabækur;

  • Bætti við stuðningi við ast.PyCF_ONLY_AST, sem leyfilegt tryggja að pytest virki;
  • Bætt við styðja PEP 498 (strengjaskipti í bókstafi);
  • Framkvæmt „--python.EmulateJython“ fáninn til að flytja inn JVM flokka með því að nota venjulega Python innflutningssetningafræði og ná JVM undantekningum frá Python kóða;
  • Bætt afköst flokkunar, undantekningarskyndiminni,
    aðgangur að Python hlutum úr JVM kóða. Bættar niðurstöður í frammistöðuprófum fyrir python kóða og innbyggða viðbætur (að framkvæma innbyggða viðbætur ofan á llvm felur í sér að bitakóði llvm er sendur til GraalVM fyrir JIT samantekt).

Breytingar í TruffleRuby:

  • Til að setja saman innfæddar viðbætur er innbyggða LLVM verkfærakistan nú notuð, sem býr til bæði innfæddan kóða og bitakóða. Þetta þýðir að fleiri innfæddar viðbætur ættu að setja saman úr kassanum, útrýma flestum tengingarvandamálum;
  • Aðskilin LLVM uppsetning til að setja upp innfæddar viðbætur í TruffleRuby;
  • Að setja upp C++ viðbætur á TruffleRuby þarf ekki lengur að setja upp libc++ og libc++abi;
  • Leyfi uppfært í EPL 2.0/GPL 2.0/LGPL 2.1, sama og nýleg JRuby;
  • Bætti við stuðningi við valfrjáls rök við GC.stat;
  • Innleiddi Kernel#load aðferðina með umbúðum og Kernel#spawn með :chdir;
  • Bætti við rb_str_drop_bytes, sem er frábært vegna þess að OpenSSL notar það;
  • Innifalið framlengingar á fyrirfram uppsettum gimsteinum sem þarf fyrir teina nýja í teinum 6;
  • Til að setja saman innfæddar viðbætur eru fánar notaðir, eins og í segulómun;
  • Hagræðingar hafa verið gerðar og minnisnotkun minnkað.

Breytingar í FastR:

  • Samhæfni við R 3.6.1 er tryggð;
  • Bætti við bráðabirgðastuðningi við að keyra innbyggðar viðbætur byggðar á LLVM. Þegar búið er að byggja innfædda R pakka er FastR stillt til að nota innbyggða LLVM verkfæri GraalVM. Tvíundarskrárnar sem myndast munu innihalda bæði innfæddan kóða og LLVM bitakóða.

    Foruppsettir pakkar eru líka smíðaðir á þennan hátt.
    FastR hleður og keyrir innfæddan viðbyggingarkóða sjálfgefið, en þegar hann er ræstur með "--R.BackEnd=llvm" valkostinum verður bitakóði notaður. Hægt er að nota LLVM bakendann sértækt fyrir suma R pakka með því að tilgreina "--R.BackEndLLVM=pkg1,pkg2". Ef þú átt í vandræðum með að setja upp pakka geturðu snúið öllu til baka með því að hringja í fastr.setToolchain("native") eða með því að breyta $FASTR_HOME/etc/Makeconf skránni handvirkt;

  • Í þessari útgáfu er FastR send án GCC runtime bókasöfnin;
  • Lagaður minnisleki;
  • Lagaði vandamál þegar unnið var með stóra vektora (>1GB);
  • Útfært grepRaw, en aðeins fyrir fast=T.

Heimild: opennet.ru

Bæta við athugasemd