GraalVM 19.3.0 virtuaalmasina ja selle baasil töödeldud Python, JavaScript, Ruby ja R rakenduste vÀljaanne

Oracle Corporation avalikustasin universaalse virtuaalmasina vĂ€ljalase GraalVM 19.3.0, mis toetab rakenduste kĂ€ivitamist JavaScriptis (Node.js), Pythonis, Rubys, R-is, igasugustes JVM-i keeltes (Java, Scala, Clojure, Kotlin) ja keeltes, mille jaoks saab luua LLVM bitkoodi (C, C++, Rust). Haru 19.3 kuulub pikaajalise toe (LTS) vĂ€ljaannete kategooriasse ja on tĂ€helepanuvÀÀrne toetades JDK 11, sealhulgas vĂ”ime Java-koodi kompileerida tĂ€itmisfailideks (GraalVM Native Image). Projekti kood GNU Üldine Avaliku litsentsi alusel. on GPLv2 litsentsi all. Samuti on vĂ€lja antud uued versioonid GraalVM-i kasutavatest Python, JavaScript, Ruby ja R keele rakendustest — GraalPython, GraalJS, TruffleRuby ja FastR.

GraalVM pakub JIT-kompilaator, mis suudab JVM-is jooksutada kĂ”igi skriptikeelte, sealhulgas JavaScripti, Ruby, Python ja R, koode reaalajas ning vĂ”imaldab samuti kĂ€ivitada JVM-is natiivkoodi, mis on muudetud LLVMi bitikoodiks. GraalVM pakub keelelt sĂ”ltumatut tööriistakomplekti, mis sisaldab debugeerijat, profiilianalĂŒĂŒsisĂŒsteemi ja mĂ€lu jaotuse analyĂŒsijat. GraalVM vĂ”imaldab luua kombineeritud rakendusi erinevatel keeltest koosnevatest komponentidest, vĂ”imaldades loetletud objekte ja massiive kasutada muudes keeltes kirjutatud koodis. JVM-pĂ”histe keelte jaoks on saadaval vĂ”imalus masinkoodiks kompileeritud kĂ€ivitusfailide loomine, mida saab otse kĂ€ivitada minimaalse mĂ€lutarbimisega (mĂ€lu ja lĂ”ime haldamine on rakendatud raamistiku kaudu Substrate VM).

GraalJS muudatused:

  • Node.js 12.10.0 ĂŒhilduvus tagatud;
  • Vaikimisi on keelatud mittestandardsed globaalsete omaduste ja funktsioonide kasutamine:
    global (asendatud globalThisiga, tagastamine on konfigureeritud js.global-property), performance (js.performance), print ja printErr (js.print);
  • On rakendatud Promise.allSettled ja nullish coalescing proposal, mis on saadaval ECMAScript 2020 reĆŸiimis ("—js.ecmascript-version=2020");
  • ICU4J sĂ”ltuvused on uuendatud versioonile 64.2, ASM versioonile 7.1.

Muutused GraalPythonis:

  • Lisatud on gc.{enable,disable,isenabled} kohandamisfunktsioonid, implementeeritud on charmap_build, sys.hexversion ja _lzma;
  • Python 3.7.8 standardbiblioteek on uuendatud;
  • Toetatud on NumPy 1.16.4 ja Pandas 0.25.0;
  • Toetatud on timeit;
  • socket.socket on viidud sellisesse seisundisse, mis vĂ”imaldab kĂ€ivitada 'graalpython -m http.server' ja laadida alla mittekriptitud (ilma TLS-ita) http-ressursse;
  • Parandatud on probleemid, mis on seotud pandas.DataFrame objektide vĂ€ljundiga,
    vale tuplede töötlemisega funktsioonis bytes.startswith,
    destruktureerimise mÀÀramise iteratiivsete elementide ja dict.__contains__ kasutamisega sÔnastike jaoks;
  • Lisa toetus ast.PyCF_ONLY_AST, mis vĂ”imaldas tagada pytest töö;
  • Lisatud toetamine PEP 498 (stringide interpoleerimine liitlikes);
  • Tehtud lipu '—python.EmulateJython' abil JVM-i klasside importimiseks tavalise Python-sĂŒntaksiga ja JVM-i erandite pĂŒĂŒdmiseks Python-koodist;
  • Parandatud on parseri jĂ”udlust, erandite vahemĂ€lu,
    Python objekti juurdepÀÀs JVM-koodist. TÔhustatud on jÔudluse teste python koodi ja kohandatud laiendite jaoks (kohandatud laiendite teostamine llvm-i peal eeldab, et llvm-i bitkood edastatakse GraalVM-ile JIT-kompileerimiseks).

Muutused TruffleRubys:

  • Natiivsete laiendite kompileerimiseks kasutatakse nĂŒĂŒd sisseehitatud LLVM tööriistade komplekti, mis genereerib nii natiivset koodi kui ka bitikoodi. See tĂ€hendab, et enamiku natiivsete laiendite kompileerimine peaks olema nĂŒĂŒd sujuvam, lahendades enamikku sidumisega seotud probleeme;
  • TruffleRuby natiivsete laiendite installimiseks on vajalik eraldi LLVM installatsioon;
  • TruffleRuby C++ laiendite installimiseks ei ole nĂŒĂŒd vaja libc++ ja libc++abi installimist;
  • Litsents on uuendatud EPL 2.0/GPL 2.0/LGPL 2.1, nagu ka hiljutises JRuby versioonis;
  • GC.stat meetod on tĂ€iendatud valiklike argumendiga;
  • Meetod Kernel#load on rakendatud ĂŒmber ja Kernel#spawn koos :chdir;
  • Lisatud on rb_str_drop_bytes, mis on tĂ€helepanuvÀÀrne, kuna seda kasutab OpenSSL;
  • Rails 6 raamistikuks vajalikud eelnevalt installitud gemide laiendused on nĂŒĂŒd kaasatud, et toetada rails new;
  • Natiivsete laiendite kompileerimisel on kasutusele vĂ”etud flagid nagu MRI-s;
  • Tulemuslikkuse optimeerimised ja mĂ€lutarbimise vĂ€hendamine on teostatud.

Muutused FastR-is:

  • Tagatud on ĂŒhilduvus R 3.6.1-ga;
  • Lisatud eeltoelised LLVM-pĂ”histe natiivsete laiendite tĂ€itmise tugi. Natiivsete pakettide koostamisel on R FastR seadistatud GraalVM-i integreeritud LLVM-tööriistade kasutamiseks. Tulemuseks olevad binaarfailid sisaldavad nii natiivset koodi kui ka LLVM-bitikoodi.

    Esialgsed paketid on samuti sel viisil koostatud.
    FastR laadib ja kĂ€ivitab natiivset laiendite koodi vaikimisi, kuid kui see kĂ€ivitatakse optsiooniga "—R.BackEnd=llvm", kasutatakse bitikoodi. LLVM-i taustteenuseid saab valida teatud R paketide jaoks, mÀÀrates "—R.BackEndLLVM=pkg1,pkg2". Pakkide installimisel tekkivate probleemide korral vĂ”ib kĂ”ik tagasi pöörata, kutsudes ĂŒles fastr.setToolchain("native") vĂ”i kĂ€sitsi redigeerides faili $FASTR_HOME/etc/Makeconf;

  • Selles vĂ€ljaandes on FastR ilma GCC runtime'i raamatukogudeta;
  • MĂ€lu lekkeid on parandatud;
  • Probleemid suurte vektoritega (>1GB) on parandatud;
  • On rakendatud grepRaw, kuid ainult fixed=T jaoks.

Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster