Tso tawm 19.3.0 ntawm GraalVM virtual tshuab thiab kev siv ntawm Python, JavaScript, Ruby thiab R raws li nws

Oracle tuam txhab luam tawm tso tawm ntawm universal virtual tshuab GraalVM 19.3.0, uas txhawb kev khiav haujlwm hauv JavaScript (Node.js), Python, Ruby, R, txhua yam lus rau JVM (Java, Scala, Clojure, Kotlin) thiab cov lus uas LLVM bitcode tuaj yeem tsim tau (C, C ++ , Rust). 19.3 ceg yog cais raws li Kev Pabcuam Sijhawm Ntev (LTS) tso tawm thiab zoo kawg li txhawb nqa JKJ 11, suav nrog lub peev xwm los sau Java code rau hauv cov ntaub ntawv ua tiav (GraalVM Native Image). Qhov project code faib los ntawm muaj ntawv tso cai raws li GPLv2. Nyob rau tib lub sijhawm, cov qauv tshiab ntawm Python, JavaScript, Ruby thiab R cov lus siv siv GraalVM raug tso tawm - GraalPython, GraalJS, TruffleRuby ΠΈ FastR.

GraalVM muab Lub JIT compiler uas tuaj yeem ua tiav cov lej los ntawm ib qho lus sau ntawm ya hauv JVM, suav nrog JavaScript, Ruby, Python thiab R, thiab tseem ua rau nws muaj peev xwm khiav cov cai ib txwm nyob hauv JVM hloov mus rau LLVM bitcode. Cov cuab yeej muab los ntawm GraalVM suav nrog cov lus tsis txaus ntseeg debugger, profileing system, thiab lub cim xeeb faib ntsuas. GraalVM ua rau nws muaj peev xwm tsim cov ntawv thov ua ke nrog cov khoom sib txawv ntawm cov lus sib txawv, tso cai rau koj nkag mus rau cov khoom thiab cov arrays los ntawm cov lej hauv lwm hom lus. Rau JVM-raws li hom lus muaj sijhawm tsim cov ntaub ntawv executable muab tso ua ke rau hauv lub tshuab code uas tuaj yeem ua tiav ncaj qha nrog kev siv lub cim xeeb tsawg (nco thiab xov kev tswj hwm yog siv los ntawm kev sib txuas cov qauv. Substrate VM).

Kev hloov pauv hauv GraalJS:

  • Compatibility nrog Node.js 12.10.0 yog guaranteed;
  • Tsis yog tus qauv thoob ntiaj teb cov khoom thiab kev ua haujlwm raug cuam tshuam los ntawm lub neej ntawd:
    thoob ntiaj teb (hloov los ntawm globalThis, teeb tsa js.global-property rov qab), kev ua tau zoo (js.performance), luam tawm thiab printErr (js.print);

  • Ua tiav Kev cog lus.allSettled thiab nullish coalescing tswv yim, uas muaj nyob rau hauv ECMAScript 2020 hom (β€œ-js.ecmascript-version=2020”);
  • Hloov kho qhov kev cia siab ICU4J rau 64.2, ASM rau 7.1.

Hloov hauv GraalPython:

  • Ntxiv stubs gc.{enable,disable,isenabled}, siv charmap_build, sys.hexversion thiab _lzma;
  • Hloov tshiab Python 3.7.8 tus qauv tsev qiv ntawv;
  • Ntxiv kev txhawb nqa rau NumPy 1.16.4 thiab Pandas 0.25.0;
  • Ntxiv sijhawm txhawb nqa;
  • socket.socket tau raug coj mus rau lub xeev uas tso cai rau koj los khiav "graalpython -m http.server" thiab thauj khoom tsis tau encrypted (tsis muaj TLS) http cov peev txheej;
  • Tsau teeb meem nrog displaying pandas.DataFrame cov khoom.
    kev ua tsis raug ntawm tuples hauv bytes.startswith,
    destructuring assignment ntawm iterators thiab siv dict.__contains__ rau dictionaries;

  • Ntxiv kev txhawb nqa rau ast.PyCF_ONLY_AST, uas tso cai xyuas kom meej tias pytest ua haujlwm;
  • Ntxiv yug PEP 498 (txoj hlua interpolation hauv literals);
  • Ua tiav tus "--python.EmulateJython" chij rau import JVM cov chav kawm siv ib txwm Python import syntax thiab ntes JVM kev zam los ntawm Python code;
  • Txhim kho parser kev ua tau zoo, zam caching,
    nkag mus rau Python cov khoom los ntawm JVM code. Txhim kho cov txiaj ntsig hauv kev ntsuas kev ua tau zoo rau python code thiab ib txwm txuas ntxiv (kev ua haujlwm ib txwm txuas ntxiv rau saum llvm txhais tau tias bitcode llvm tau dhau mus rau GraalVM rau JIT muab tso ua ke).

Hloov Hauv TruffleRuby:

  • Txhawm rau suav cov kev txuas ib txwm nyob, cov khoom siv LLVM built-in yog tam sim no siv, tsim ob hom code thiab bitcode. Qhov no txhais tau hais tias ntau haiv neeg txuas ntxiv yuav tsum suav tawm ntawm lub thawv, tshem tawm cov teeb meem txuas feem ntau;
  • Cais LLVM kev teeb tsa rau kev txhim kho ib txwm txuas ntxiv hauv TruffleRuby;
  • Txhim kho C ++ txuas ntxiv ntawm TruffleRuby tsis tas yuav txhim kho libc ++ thiab libc++ abi;
  • Daim ntawv tso cai hloov kho rau EPL 2.0/GPL 2.0/LGPL 2.1, tib yam li JRuby tsis ntev los no;
  • Ntxiv kev txhawb nqa rau kev xaiv sib cav rau GC.stat;
  • Ua raws li Kernel #load txoj kev nrog wrapper thiab Kernel #spawn nrog :chdir;
  • Ntxiv rb_str_drop_bytes, uas yog qhov zoo vim tias OpenSSL siv nws;
  • suav nrog kev txuas ntxiv ntawm cov pob zeb ua ntej uas xav tau rau cov tsheb ciav hlau tshiab hauv Rails 6;
  • Txhawm rau sau cov ntawv txuas ntxiv ib txwm, siv cov chij, xws li hauv MRI;
  • Kev ua tau zoo ntawm kev ua tau zoo tau ua thiab kev nco tau raug txo.

Hloov hauv FastR:

  • Compatibility nrog R 3.6.1 yog guaranteed;
  • Ntxiv kev txhawb nqa ua ntej rau kev ua haujlwm ib txwm txuas ntxiv raws li LLVM. Thaum tsim cov pob khoom R haiv neeg, FastR tau teeb tsa los siv GraalVM's built-in LLVM tooling. Cov txiaj ntsig binary cov ntaub ntawv yuav muaj ob qho tib si haiv neeg thiab LLVM bitcode.

    Pre-installed tej pob khoom kuj ua li no.
    FastR loads thiab khiav ib txwm txuas ntxiv code los ntawm lub neej ntawd, tab sis thaum pib nrog "--R.BackEnd = llvm" kev xaiv, bitcode yuav raug siv. Lub LLVM backend tuaj yeem siv xaiv rau qee cov pob R los ntawm kev qhia "--R.BackEndLLVM=pkg1,pkg2". Yog tias koj muaj teeb meem txhim kho pob khoom, koj tuaj yeem thim txhua yam rov qab los ntawm kev hu rau fastr.setToolchain("native") lossis manually kho cov ntaub ntawv $FASTR_HOME/etc/Makeconf;

  • Hauv qhov kev tso tawm no, FastR nkoj tsis muaj GCC cov tsev qiv ntawv runtime;
  • Txhim kho kev nco xau;
  • Tsau teeb meem thaum ua haujlwm nrog cov vectors loj (> 1GB);
  • Implemented grepRaw, tab sis tsuas yog rau tsau = T.

Tau qhov twg los: opennet.ru

Ntxiv ib saib