Rilaxx 19.3.0 tal-magna virtwali GraalVM u implimentazzjonijiet ta' Python, JavaScript, Ruby u R ibbażati fuqha

Kumpanija Oracle ippubblikat rilaxx ta 'magna virtwali universali GraalVM 19.3.0, li jappoġġa t-tħaddim ta' applikazzjonijiet f'JavaScript (Node.js), Python, Ruby, R, kwalunkwe lingwa għall-JVM (Java, Scala, Clojure, Kotlin) u lingwi li għalihom jista' jiġi ġġenerat bitcode LLVM (C, C++ , Sadid). Il-fergħa 19.3 hija kklassifikata bħala rilaxx ta' Appoġġ fit-Tul (LTS) u notevoli appoġġ JDK11, inkluża l-abbiltà li tikkompila kodiċi Java f'fajls eżekutibbli (GraalVM Native Image). Kodiċi tal-proġett imqassma minn liċenzjat taħt GPLv2. Fl-istess ħin, ġew rilaxxati verżjonijiet ġodda ta' implimentazzjonijiet tal-lingwa Python, JavaScript, Ruby u R bl-użu ta' GraalVM - GraalPython, GraalJS, TruffleRuby и FastR.

GraalVM tipprovdi Kompilatur JIT li jista 'jesegwixxi kodiċi minn kwalunkwe lingwa ta' scripting fuq il-JVM, inklużi JavaScript, Ruby, Python u R, u jagħmilha possibbli wkoll li tħaddem kodiċi nattiv fil-JVM konvertit għal bitcode LLVM. L-għodod ipprovduti minn GraalVM jinkludu debugger indipendenti mill-lingwa, sistema ta 'profiling, u analizzatur tal-allokazzjoni tal-memorja. GraalVM jagħmilha possibbli li jinħolqu applikazzjonijiet magħquda b'komponenti f'lingwi differenti, li jippermettulek taċċessa oġġetti u arrays minn kodiċi f'lingwi oħra. Għal lingwi bbażati fuq JVM hemm opportunità il-ħolqien ta' fajls eżekutibbli miġbura f'kodiċi tal-magni li jistgħu jiġu esegwiti direttament b'konsum minimu ta' memorja (ġestjoni tal-memorja u tal-ħajt hija implimentata permezz tal-konnessjoni tal-qafas Substrat VM).

Bidliet fil-GraalJS:

  • Il-kompatibilità ma 'Node.js 12.10.0 hija żgurata;
  • Proprjetajiet u funzjonijiet globali mhux standard huma diżattivati ​​awtomatikament:
    globali (mibdut b'globalThis, li js.global-property jiġi rritornat), prestazzjoni (js.performance), print u printErr (js.print);

  • Implimentata Promise.allProposta ta' koalkolazzjoni stabbilita u nullish, li huma disponibbli fil-modalità ECMAScript 2020 (“-js.ecmascript-version=2020”);
  • Dipendenzi aġġornati ICU4J għal 64.2, ASM għal 7.1.

Bidliet fi GraalPython:

  • Stubs miżjuda gc.{enable,disable,isenabled}, charmap_build implimentati, sys.hexversion u _lzma;
  • Librerija standard aġġornata ta' Python 3.7.8;
  • Appoġġ miżjud għal NumPy 1.16.4 u Pandas 0.25.0;
  • Appoġġ miżjud timeit;
  • socket.socket inġieb fi stat li jippermettilek tħaddem "graalpython -m http.server" u tgħabbi riżorsi http mhux kriptati (mingħajr TLS);
  • Kwistjonijiet fissi bil-wiri ta 'oġġetti pandas.DataFrame.
    ipproċessar żbaljat ta' tuples f'bytes.startswith,
    assenjazzjoni ta' destrutturar ta' iteraturi u użu ta' dict.__contains__ għal dizzjunarji;

  • Appoġġ miżjud għal ast.PyCF_ONLY_AST, li permess tiżgura li pytest jaħdem;
  • Miżjud appoġġ PEP 498 (interpolazzjoni ta' string fil-literali);
  • Implimentati il-bandiera "--python.EmulateJython" biex timporta klassijiet JVM bl-użu tas-sintassi ta 'importazzjoni normali ta' Python u taqbad eċċezzjonijiet JVM mill-kodiċi Python;
  • Prestazzjoni mtejba tal-parser, caching tal-eċċezzjonijiet,
    aċċess għal oġġetti Python mill-kodiċi JVM. Riżultati mtejba fit-testijiet tal-prestazzjoni għall-kodiċi python u l-estensjonijiet indiġeni (l-eżekuzzjoni ta 'estensjonijiet indiġeni fuq llvm jimplika li llvm tal-bitcode jiġi mgħoddi lil GraalVM għall-kumpilazzjoni JIT).

Bidliet fi TruffleRuby:

  • Biex tiġbor estensjonijiet indiġeni, issa tintuża l-għodda LLVM integrata, li toħloq kemm kodiċi nattiv kif ukoll bitcode. Dan ifisser li aktar estensjonijiet indiġeni għandhom jiġbru barra mill-kaxxa, u jeliminaw il-biċċa l-kbira tal-kwistjonijiet ta 'konnessjoni;
  • Installazzjoni LLVM separata għall-installazzjoni ta 'estensjonijiet indiġeni fi TruffleRuby;
  • L-installazzjoni ta' estensjonijiet C++ fuq TruffleRuby m'għadhiex teħtieġ l-installazzjoni ta' libc++ u libc++abi;
  • Liċenzja aġġornata għal EPL 2.0/GPL 2.0/LGPL 2.1, l-istess bħal JRuby riċenti;
  • Appoġġ miżjud għal argumenti fakultattivi għal GC.stat;
  • Implimenta l-metodu Kernel#load b'wrapper u Kernel#spawn b' :chdir;
  • Miżjud rb_str_drop_bytes, li huwa kbir għaliex OpenSSL jużaha;
  • Inklużi estensjonijiet ta 'ħaġar prezzjuż installati minn qabel meħtieġa għal binarji ġodda f'Rails 6;
  • Biex jinġabru estensjonijiet indiġeni, jintużaw bnadar, bħal fl-MRI;
  • Saru ottimizzazzjonijiet tal-prestazzjoni u tnaqqas il-konsum tal-memorja.

Bidliet f'FastR:

  • Il-kompatibbiltà ma' R 3.6.1 hija żgurata;
  • Miżjud appoġġ preliminari għat-tħaddim ta' estensjonijiet indiġeni bbażati fuq LLVM. Meta tibni pakketti R indiġeni, FastR huwa kkonfigurat biex juża l-għodda LLVM inkorporata ta' GraalVM. Il-fajls binarji li jirriżultaw se jkun fihom kemm kodiċi nattiv kif ukoll bitcode LLVM.

    Pakketti installati minn qabel huma mibnija wkoll b'dan il-mod.
    FastR jgħabbi u jħaddem kodiċi ta 'estensjoni indiġeni b'mod awtomatiku, iżda meta jitnieda bl-għażla "--R.BackEnd=llvm", se jintuża bitcode. Il-backend LLVM jista 'jintuża b'mod selettiv għal xi pakketti R billi tispeċifika "--R.BackEndLLVM=pkg1,pkg2". Jekk għandek problemi biex tinstalla pakketti, tista' terġa' lura kollox billi ċċempel fastr.setToolchain("native") jew teditja manwalment il-fajl $FASTR_HOME/etc/Makeconf;

  • F'dan ir-rilaxx, FastR vapuri mingħajr il-libreriji runtime GCC;
  • Tnixxijiet tal-memorja fissa;
  • Problemi fissi meta taħdem ma 'vettori kbar (> 1GB);
  • GrepRaw implimentat, iżda biss għal fixed=T.

Sors: opennet.ru

Żid kumment