Tu 19.3.0 ti ẹrọ foju GraalVM ati awọn imuse ti Python, JavaScript, Ruby ati R ti o da lori rẹ

Ile-iṣẹ Oracle atejade itusilẹ ẹrọ foju kan agbaye GraalVM 19.3.0, eyiti o ṣe atilẹyin awọn ohun elo ṣiṣe ni JavaScript (Node.js), Python, Ruby, R, eyikeyi awọn ede fun JVM (Java, Scala, Clojure, Kotlin) ati awọn ede eyiti LLVM bitcode le ṣe ipilẹṣẹ (C, C ++ , Ipata). Ẹka 19.3 jẹ ipin bi itusilẹ Atilẹyin Igba pipẹ (LTS) ati lokiki atilẹyin JDK11, pẹlu agbara lati ṣajọ koodu Java sinu awọn faili ṣiṣe (Aworan abinibi GraalVM). koodu ise agbese pin nipasẹ iwe-aṣẹ labẹ GPLv2. Ni akoko kanna, awọn ẹya tuntun ti Python, JavaScript, Ruby ati awọn imuse ede R nipa lilo GraalVM ni a tu silẹ - GraalPython, GraalJS, TruffleRuby и FastR.

GraalVM pese Akopọ JIT ti o le ṣiṣẹ koodu lati eyikeyi ede kikọ lori fo ni JVM, pẹlu JavaScript, Ruby, Python ati R, ati tun jẹ ki o ṣee ṣe lati ṣiṣẹ koodu abinibi ni JVM yipada si LLVM bitcode. Awọn irinṣẹ ti a pese nipasẹ GraalVM pẹlu olutọpa ominira ti ede, eto profaili, ati olutupalẹ ipin iranti. GraalVM jẹ ki o ṣee ṣe lati ṣẹda awọn ohun elo idapo pẹlu awọn paati ni awọn ede oriṣiriṣi, gbigba ọ laaye lati wọle si awọn nkan ati awọn akojọpọ lati koodu ni awọn ede miiran. Fun awọn ede orisun JVM wa anfaani ṣiṣẹda awọn faili ṣiṣe ti o ṣajọ sinu koodu ẹrọ ti o le ṣe taara pẹlu lilo iranti kekere (iranti ati iṣakoso okun ni imuse nipasẹ sisopọ ilana Sobusitireti VM).

Iyipada ninu owo-owo GraalJS:

  • Ibamu pẹlu Node.js 12.10.0 ti wa ni idaniloju;
  • Awọn ohun-ini agbaye ti kii ṣe boṣewa ati awọn iṣẹ jẹ alaabo nipasẹ aiyipada:
    agbaye (rọpo nipasẹ globalThis, eto js.global-ini lati pada), išẹ (js.performance), tẹjade ati printErr (js.print);

  • Imuse Promise.allSettled ati igbero ikojọpọ asan, eyiti o wa ni ipo ECMAScript 2020 (“-js.ecmascript-version=2020”);
  • Awọn igbẹkẹle imudojuiwọn ICU4J si 64.2, ASM si 7.1.

Awọn iyipada ninu GraalPython:

  • Awọn stubs ti a ṣafikun gc.{mu ṣiṣẹ,muṣiṣẹ,ṣiṣẹṣe}, charmap_build ti a ṣe imuse, sys.hexversion ati _lzma;
  • Imudojuiwọn Python 3.7.8 boṣewa ìkàwé;
  • Atilẹyin ti a ṣafikun fun NumPy 1.16.4 ati Pandas 0.25.0;
  • Ṣe afikun atilẹyin akoko;
  • socket.socket ti mu wa si ipo ti o fun laaye laaye lati ṣiṣẹ “graalpython -m http.server” ati fifuye unencrypted (laisi TLS) awọn orisun http;
  • Awọn oran ti o wa titi pẹlu iṣafihan pandas.DataFrame ohun.
    Sisẹ awọn tuple ti ko tọ ni awọn baiti.bẹrẹ pẹlu,
    iṣẹ iyansilẹ iparun ti awọn iterators ati lilo dict.__contains__ fun awọn iwe-itumọ;

  • Atilẹyin ti a ṣafikun fun ast.PyCF_ONLY_AST, eyiti laaye rii daju pe pytest ṣiṣẹ;
  • Fi kun atilẹyin PEP 498 (okun interpolation ni awọn ọrọ gangan);
  • Ti ṣe imuse asia "--python.EmulateJython" lati gbe awọn kilasi JVM wọle nipa lilo sintasi imuwọle Python deede ati mu awọn imukuro JVM lati koodu Python;
  • Imudara iṣẹ-itupalẹ, iyasọtọ caching,
    iraye si awọn nkan Python lati koodu JVM. Awọn abajade ilọsiwaju ninu awọn idanwo iṣẹ fun koodu Python ati awọn amugbooro abinibi (miṣiṣẹ awọn amugbooro abinibi lori oke llvm tumọ si pe lvm bitcode ti kọja si GraalVM fun akopọ JIT).

Awọn iyipada ni TruffleRuby:

  • Lati ṣajọ awọn amugbooro abinibi, ohun elo irinṣẹ LLVM ti a ṣe sinu ti wa ni lilo bayi, ṣiṣẹda koodu abinibi mejeeji ati koodu bitcode. Eyi tumọ si pe awọn amugbooro abinibi diẹ sii yẹ ki o ṣajọ jade kuro ninu apoti, imukuro julọ awọn ọran asopọ;
  • Iyatọ fifi sori LLVM fun fifi awọn amugbooro abinibi ni TruffleRuby;
  • Fifi awọn amugbooro C ++ sori TruffleRuby ko nilo fifi libc ++ ati libc ++ abi;
  • Iwe-aṣẹ imudojuiwọn si EPL 2.0/GPL 2.0/LGPL 2.1, kanna bi JRuby to ṣẹṣẹ;
  • Atilẹyin ti a ṣafikun fun awọn ariyanjiyan yiyan si GC.stat;
  • Ti ṣe imuse ọna ikojọpọ Kernel# pẹlu ipari ati Kernel#spawn pẹlu: chdir;
  • Fi kun rb_str_drop_bytes, eyi ti o jẹ nla nitori OpenSSL nlo o;
  • Awọn amugbooro ti o wa pẹlu awọn okuta iyebiye ti a ti fi sori ẹrọ tẹlẹ nilo fun awọn irin-ajo tuntun ni Rails 6;
  • Lati ṣajọ awọn amugbooro abinibi, awọn asia ti lo, bi ninu MRI;
  • Awọn iṣapeye iṣẹ ti ṣe ati agbara iranti ti dinku.

Awọn iyipada ninu FastR:

  • Ibamu pẹlu R 3.6.1 ti wa ni idaniloju;
  • Ṣe afikun atilẹyin alakoko fun ṣiṣe awọn amugbooro abinibi ti o da lori LLVM. Nigbati o ba n kọ awọn idii R abinibi, FastR jẹ tunto lati lo ohun elo LLVM ti a ṣe sinu GraalVM. Awọn faili alakomeji Abajade yoo ni koodu abinibi mejeeji ati koodu bit LLVM ninu.

    Awọn idii ti a ti fi sii tẹlẹ jẹ tun kọ ni ọna yii.
    FastR kojọpọ ati ṣiṣe koodu itẹsiwaju abinibi nipasẹ aiyipada, ṣugbọn nigbati a ba ṣe ifilọlẹ pẹlu aṣayan "--R.BackEnd=llvm", koodu bitcode yoo ṣee lo. Igbẹhin LLVM le ṣee lo ni yiyan fun diẹ ninu awọn akojọpọ R nipa sisọ “--R.BackEndLLVM=pkg1,pkg2”. Ti o ba ni awọn iṣoro fifi sori ẹrọ awọn idii, o le yi ohun gbogbo pada nipa pipe fastr.setToolchain (“abinibi”) tabi pẹlu ọwọ ṣiṣatunṣe faili $FASTR_HOME/etc/Makeconf;

  • Ninu itusilẹ yii, awọn ọkọ oju omi FastR laisi awọn ile-ikawe asiko asiko GCC;
  • Awọn n jo iranti ti o wa titi;
  • Awọn iṣoro ti o wa titi nigbati o ba n ṣiṣẹ pẹlu awọn vectors nla (> 1GB);
  • grepRaw ti a ṣe, ṣugbọn fun ti o wa titi=T nikan.

orisun: opennet.ru

Fi ọrọìwòye kun