Famoahana 19.3.0 amin'ny milina virtoaly GraalVM sy ny fampiharana ny Python, JavaScript, Ruby ary R mifototra amin'izany

Oracle Company namoaka famoahana milina virtoaly manerantany GraalVM 19.3.0, izay manohana fampiharana mihazakazaka amin'ny JavaScript (Node.js), Python, Ruby, R, fiteny rehetra ho an'ny JVM (Java, Scala, Clojure, Kotlin) sy fiteny izay ahafahan'ny LLVM bitcode (C, C++) , Rust). Ny sampana 19.3 dia sokajiana ho famotsorana Long Term Support (LTS) ary miavaka MANAMPY JDK11, anisan'izany ny fahafahana manangona kaody Java ho rakitra azo tanterahana (GraalVM Native Image). Kaody tetikasa nozarain'i nahazoan-dalana GPLv2. Nandritra izany fotoana izany, navoaka ny dikan-teny vaovao Python, JavaScript, Ruby ary R amin'ny fampiasana ny GraalVM - GraalPython, GraalJS, TruffleRuby ΠΈ FastR.

GraalVM TENA Mpanamboatra JIT izay afaka manatanteraka kaody avy amin'ny fiteny scripting rehetra amin'ny lalitra ao amin'ny JVM, ao anatin'izany ny JavaScript, Ruby, Python ary R, ​​ary koa mamela ny fampandehanana ny kaody teratany ao amin'ny JVM niova ho LLVM bitcode. Ny fitaovana nomen'ny GraalVM dia ahitana ny debugger tsy miankina amin'ny fiteny, ny rafitra profiling, ary ny mpandinika fizarana fahatsiarovana. Ny GraalVM dia mamela anao hamorona rindranasa mitambatra miaraka amin'ireo singa amin'ny fiteny samihafa, ahafahanao miditra amin'ny zavatra sy array avy amin'ny kaody amin'ny fiteny hafa. Ho an'ny fiteny mifototra amin'ny JVM dia misy fahafahana mamorona rakitra azo tanterahana natambatra ho kaody milina izay azo tanterahina mivantana miaraka amin'ny fanjifana fahatsiarovana kely indrindra (ny fitadidiana sy ny fitantanana kofehy dia ampiharina amin'ny fampifandraisana ny rafitra substrate VM).

Fiovana ao amin'ny GraalJS:

  • Ny fifanarahana amin'ny Node.js 12.10.0 dia azo antoka;
  • Ny fananana sy ny fiasa manerantany tsy manara-penitra dia kilemaina amin'ny alΓ lan'ny default:
    global (nosoloina globalThis, mametraka js.global-property hiverina), fampisehoana (js.performance), printy ary printErr (js.print);

  • Notanterahina ny Promise.allSettled sy ny tolo-kevitra fampiraisana tsy misy dikany, izay hita amin'ny fomba ECMAScript 2020 (β€œ-js.ecmascript-version=2020”);
  • Fiankinan-doha nohavaozina ICU4J mankany 64.2, ASM mankany 7.1.

fanovana amin'ny GraalPython:

  • Nampiana stubs gc.{enable,disable,isenabled}, nampihatra charmap_build, sys.hexversion ary _lzma;
  • Nohavaozina Python 3.7.8 standard library;
  • Fanampiana fanampiny ho an'ny NumPy 1.16.4 sy Pandas 0.25.0;
  • Fanampiana timeit fanampiny;
  • socket.socket dia nentina tany amin'ny fanjakana izay ahafahanao mampandeha "graalpython -m http.server" ary mametaka loharano http tsy misy encryption (tsy misy TLS);
  • Namboarina ny olana momba ny fampisehoana zavatra pandas.DataFrame.
    diso fanodinana ny tuple amin'ny bytes.startswith,
    fanimbana ny fanendrena ny mpizara sy ny fampiasana ny dict.__contains__ ho an'ny rakibolana;

  • Fanampiana fanampiny ho an'ny ast.PyCF_ONLY_AST, izay NAVELA HIDITRA miantoka fa miasa ny pytest;
  • nanampy fanohanana PEP 498 (fampidirana tady amin'ny litera);
  • ampiharina ny saina "--python.EmulateJython" hanafatra kilasy JVM amin'ny fampiasana syntax fanafarana Python mahazatra ary hisambotra JVM maningana amin'ny code Python;
  • Fahombiazan'ny parser nohatsaraina, caching miavaka,
    miditra amin'ny zavatra Python avy amin'ny code JVM. Ny valin'ny fitsapana fahombiazana nohatsaraina ho an'ny kaody python sy ny fanitarana teratany (ny fanatanterahana ny fanitarana teratany eo an-tampon'ny llvm dia midika fa ny llvm bitcode dia alefa any amin'ny GraalVM ho an'ny JIT compilation).

fanovana ao amin'ny TruffleRuby:

  • Mba hanangonana ny fanitarana teratany, dia ampiasaina ankehitriny ny kitapom-pitaovana LLVM naorina, mamorona kaody teratany sy bitcode. Midika izany fa ny fanitarana teratany bebe kokoa dia tokony hanangona ivelan'ny boaty, hanafoana ny ankamaroan'ny olana mifandray;
  • Fametrahana LLVM misaraka amin'ny fametrahana fanitarana teratany ao amin'ny TruffleRuby;
  • Ny fametrahana fanitarana C++ amin'ny TruffleRuby dia tsy mitaky fametrahana libc++ sy libc++abi intsony;
  • License nohavaozina ho EPL 2.0/GPL 2.0/LGPL 2.1, mitovy amin'ny JRuby vao haingana;
  • Fanampiana fanampiny ho an'ny tohan-kevitra azo atao amin'ny GC.stat;
  • Nampihatra ny fomba Kernel#load miaraka amin'ny wrapper sy Kernel#spawn miaraka amin'ny :chdir;
  • Nampiana rb_str_drop_bytes, izay tsara satria ampiasain'ny OpenSSL;
  • Anisan'izany ny fanitarana ny vatosoa efa napetraka ilaina amin'ny lalamby vaovao ao amin'ny Rails 6;
  • Mba hanangonana ny fanitarana teratany, dia ampiasaina ny saina, toy ny amin'ny MRI;
  • Natao ny fanatsarana ny fampisehoana ary nihena ny fanjifana fahatsiarovana.

fanovana ao amin'ny FastR:

  • Ny fifanarahana amin'ny R 3.6.1 dia azo antoka;
  • Nampiana fanohanana mialoha ny fampandehanana ny fanitarana teratany mifototra amin'ny LLVM. Rehefa manangana fonosana R teratany, FastR dia namboarina hampiasa ny fitaovana LLVM naorina ao GraalVM. Ny rakitra binary vokarina dia ahitana kaody teratany sy LLVM bitcode.

    Ny fonosana efa napetraka dia amboarina amin'izany fomba izany ihany koa.
    FastR dia mitondra sy mampandeha ny kaody fanitarana teratany amin'ny alΓ lan'ny default, fa rehefa natomboka tamin'ny safidy "--R.BackEnd=llvm" dia bitcode no hampiasaina. Ny backend LLVM dia azo ampiasaina mifantina amin'ny fonosana R sasany amin'ny famaritana ny "--R.BackEndLLVM=pkg1,pkg2". Raha manana olana amin'ny fametrahana fonosana ianao dia azonao atao ny mamerina ny zava-drehetra amin'ny alΓ lan'ny fiantsoana fastr.setToolchain("native") na fanitsiana tanana ny rakitra $FASTR_HOME/etc/Makeconf;

  • Amin'ity famoahana ity, ny FastR dia mandefa tsy misy tranomboky fandefasana GCC;
  • Mitsoka fahatsiarovana raikitra;
  • Mamaha olana rehefa miasa amin'ny vectors lehibe (> 1GB);
  • Nampihatra grepRaw, fa ho an'ny fixed=T ihany.

Source: opennet.ru

Add a comment