Rhyddhau 19.3.0 o beiriant rhithwir GraalVM a gweithrediad Python, JavaScript, Ruby ac R yn seiliedig arno

Cwmni Oracle cyhoeddi rhyddhau peiriant rhithwir cyffredinol GraalVM 19.3.0, sy'n cefnogi rhedeg cymwysiadau yn JavaScript (Node.js), Python, Ruby, R, unrhyw ieithoedd ar gyfer y JVM (Java, Scala, Clojure, Kotlin) ac ieithoedd y gellir cynhyrchu bitcode LLVM ar eu cyfer (C, C ++ , Rhwd). Mae'r gangen 19.3 yn cael ei ddosbarthu fel datganiad Cymorth Hirdymor (LTS) a hynod cefnogaeth JDK11, gan gynnwys y gallu i lunio cod Java yn ffeiliau gweithredadwy (Delwedd Brodorol GraalVM). Cod prosiect dosbarthu gan trwyddedig o dan GPLv2. Ar yr un pryd, rhyddhawyd fersiynau newydd o weithrediadau iaith Python, JavaScript, Ruby ac R gan ddefnyddio GraalVM - GraalPython, GraalJS, TruffleRuby ΠΈ FastR.

GraalVM yn darparu Crynhoadwr JIT sy'n gallu gweithredu cod o unrhyw iaith sgriptio ar y hedfan yn y JVM, gan gynnwys JavaScript, Ruby, Python ac R, a hefyd yn ei gwneud hi'n bosibl rhedeg cod brodorol yn y JVM wedi'i drawsnewid yn bitcode LLVM. Mae'r offer a ddarperir gan GraalVM yn cynnwys dadfygiwr sy'n annibynnol ar iaith, system broffilio, a dadansoddwr dyrannu cof. Mae GraalVM yn ei gwneud hi'n bosibl creu cymwysiadau cyfun gyda chydrannau mewn gwahanol ieithoedd, gan ganiatΓ‘u i chi gyrchu gwrthrychau ac araeau o god mewn ieithoedd eraill. Ar gyfer ieithoedd sy'n seiliedig ar JVM mae yna cyfle creu ffeiliau gweithredadwy wedi'u crynhoi i god peiriant y gellir eu gweithredu'n uniongyrchol gyda'r defnydd lleiaf o gof (mae rheolaeth cof ac edau yn cael ei weithredu trwy gysylltu'r fframwaith VM swbstrad).

Newidiadau yn GraalJS:

  • Sicrheir cydnawsedd Γ’ Node.js 12.10.0;
  • Mae priodweddau a swyddogaethau byd-eang ansafonol wedi'u hanalluogi yn ddiofyn:
    byd-eang (wedi'i ddisodli gan globalThis, gosod js.global-property to return), perfformiad (js.performance), print and printErr (js.print);

  • Gweithredu Promise.all Cynnig cyfuno setlo a dirymol, sydd ar gael yn y modd ECMAScript 2020 (β€œ-js.ecmascript-version=2020”);
  • Dibyniaethau wedi'u diweddaru ICU4J i 64.2, ASM i 7.1.

Newidiadau yn GraalPython:

  • Ychwanegwyd bonion gc.{galluogi, analluogi, analluogi}, gweithredwyd charmap_build, sys.hexversion a _lzma;
  • Llyfrgell safonol Python 3.7.8 wedi'i diweddaru;
  • Cefnogaeth ychwanegol i NumPy 1.16.4 a Pandas 0.25.0;
  • Ychwanegwyd cefnogaeth timeit;
  • mae socket.socket wedi'i ddwyn i gyflwr sy'n eich galluogi i redeg β€œgraalpython -m http.server” a llwytho adnoddau http heb eu hamgryptio (heb TLS);
  • Materion sefydlog gydag arddangos gwrthrychau pandas.DataFrame.
    prosesu tuples yn anghywir mewn bytes.startswith,
    aseinio iteraduron dinistriol a defnyddio dict.__contains__ ar gyfer geiriaduron;

  • Ychwanegwyd cefnogaeth ar gyfer ast.PyCF_ONLY_AST, sy'n caniateir sicrhau bod pytest yn gweithio;
  • Wedi adio cefnogaeth PEP 498 (rhyngosodiad llinynnol mewn llythrennol);
  • Gweithredwyd y faner β€œ--python.EmulateJython” i fewnforio dosbarthiadau JVM gan ddefnyddio cystrawen mewnforio Python arferol a dal eithriadau JVM o god Python;
  • Gwell perfformiad parser, caching eithriadau,
    cyrchu gwrthrychau Python o god JVM. Gwell canlyniadau mewn profion perfformiad ar gyfer cod python ac estyniadau brodorol (mae gweithredu estyniadau brodorol ar ben llvm yn awgrymu bod bitcode llvm yn cael ei drosglwyddo i GraalVM ar gyfer llunio JIT).

Newidiadau yn TruffleRuby:

  • I lunio estyniadau brodorol, mae'r pecyn cymorth LLVM adeiledig bellach yn cael ei ddefnyddio, gan greu cod brodorol a bitcode. Mae hyn yn golygu y dylai mwy o estyniadau brodorol gasglu allan o'r bocs, gan ddileu'r rhan fwyaf o faterion cysylltu;
  • Gosodiad LLVM ar wahΓ’n ar gyfer gosod estyniadau brodorol yn TruffleRuby;
  • Nid yw gosod estyniadau C++ ar TruffleRuby bellach yn gofyn am osod libc++ a libc++abi;
  • Trwydded wedi'i diweddaru i EPL 2.0/GPL 2.0/LGPL 2.1, yr un fath Γ’ JRuby diweddar;
  • Ychwanegwyd cefnogaeth i ddadleuon dewisol i GC.stat;
  • Wedi gweithredu'r dull Kernel#load gyda lapiwr a Chnewyllyn#grifft gyda :chdir;
  • Ychwanegwyd rb_str_drop_bytes, sy'n wych oherwydd bod OpenSSL yn ei ddefnyddio;
  • Yn cynnwys estyniadau o gemau wedi'u gosod ymlaen llaw sydd eu hangen ar gyfer rheiliau newydd yn Rails 6;
  • I lunio estyniadau brodorol, defnyddir fflagiau, fel yn MRI;
  • Mae optimeiddio perfformiad wedi'i wneud ac mae'r defnydd o gof wedi'i leihau.

Newidiadau yn FastR:

  • Sicrheir cydnawsedd Γ’ R 3.6.1;
  • Ychwanegwyd cefnogaeth ragarweiniol ar gyfer rhedeg estyniadau brodorol yn seiliedig ar LLVM. Wrth adeiladu pecynnau R brodorol, mae FastR wedi'i ffurfweddu i ddefnyddio offer LLVM adeiledig GraalVM. Bydd y ffeiliau deuaidd canlyniadol yn cynnwys cod brodorol a chod didau LLVM.

    Mae pecynnau sydd wedi'u gosod ymlaen llaw hefyd yn cael eu hadeiladu fel hyn.
    Mae FastR yn llwytho ac yn rhedeg cod estyniad brodorol yn ddiofyn, ond pan gaiff ei lansio gyda'r opsiwn "--R.BackEnd=llvm", bydd cod did yn cael ei ddefnyddio. Gellir defnyddio'r backend LLVM yn ddetholus ar gyfer rhai pecynnau R trwy nodi "--R.BackEndLLVM=pkg1,pkg2". Os ydych yn cael problemau gosod pecynnau, gallwch ddychwelyd popeth yn Γ΄l trwy ffonio fastr.setToolchain ("brodorol") neu olygu'r ffeil $FASTR_HOME/etc/Makeconf Γ’ llaw;

  • Yn y datganiad hwn, mae FastR yn cludo heb lyfrgelloedd amser rhedeg y GCC;
  • Gollyngiadau cof sefydlog;
  • Problemau sefydlog wrth weithio gyda fectorau mawr (> 1GB);
  • Wedi gweithredu grepRaw, ond dim ond ar gyfer sefydlog=T.

Ffynhonnell: opennet.ru

Ychwanegu sylw