Saki 19.3.0 na injin kama-da-wane na GraalVM da aiwatar da Python, JavaScript, Ruby da R dangane da shi.

Kamfanin Oracle aka buga saki na'urar kama-da-wane ta duniya GraalVM 19.3.0, wanda ke goyan bayan aikace-aikacen da ke gudana a cikin JavaScript (Node.js), Python, Ruby, R, kowane yarukan JVM (Java, Scala, Clojure, Kotlin) da harsuna waɗanda LLVM bitcode za a iya samarwa (C, C ++). , Tsatsa). An rarraba reshen 19.3 azaman Tallafin Dogon Lokaci (LTS) sakin da na ban mamaki tallafi JDK11, gami da ikon tattara lambar Java cikin fayilolin aiwatarwa (Hoton Native GraalVM). Lambar aikin rarraba ta mai lasisi a ƙarƙashin GPLv2. A lokaci guda, an fitar da sabbin nau'ikan Python, JavaScript, Ruby da aiwatar da yaren R ta amfani da GraalVM - GraalPython, GraalJS, TruffleRuby и FastR.

GraalVM bayar da JIT mai tarawa wanda zai iya aiwatar da lamba daga kowane yaren rubutu akan tashi a cikin JVM, gami da JavaScript, Ruby, Python da R, kuma yana ba da damar gudanar da lambar asali a cikin JVM wanda aka canza zuwa LLVM bitcode. Kayan aikin da GraalVM ya bayar sun haɗa da mai gyara kurakurai mai cin gashin kansa, tsarin bayanin martaba, da na'urar tantance rabon ƙwaƙwalwa. GraalVM yana ba ku damar ƙirƙirar aikace-aikacen haɗin gwiwa tare da abubuwan haɗin gwiwa a cikin yaruka daban-daban, yana ba ku damar samun damar abubuwa da jeri daga lamba a cikin wasu harsuna. Ga harsunan tushen JVM akwai damar ƙirƙirar fayilolin aiwatarwa waɗanda aka haɗa cikin lambar injin waɗanda za a iya aiwatar da su kai tsaye tare da ƙarancin amfani da ƙwaƙwalwar ajiya (ana aiwatar da ƙwaƙwalwar ajiya da sarrafa zaren ta hanyar haɗa tsarin. Farashin VM).

Canje-canje a cikin GraalJS:

  • An tabbatar da dacewa tare da Node.js 12.10.0;
  • An kashe kaddarorin da ayyuka marasa daidaito na duniya ta tsohuwa:
    duniya (maye gurbin ta globalThis, saitin js.global-property don dawowa), aiki (js.performance), bugu da printErr (js.print);

  • An Aiwatar da Alkawari.allSettled da warware shawarwarin haɗakarwa, waɗanda suke cikin yanayin ECMAScript 2020 ("-js.ecmascript-version=2020");
  • Abubuwan da aka sabunta ICU4J zuwa 64.2, ASM zuwa 7.1.

Canje-canje a cikin GraalPython:

  • Ƙara stubs gc.{an kunna, kashe, ba a kunna ba}, aiwatar da charmap_build, sys.hexversion da _lzma;
  • Madaidaicin ɗakin karatu na Python 3.7.8;
  • Ƙara tallafi don NumPy 1.16.4 da Pandas 0.25.0;
  • Ƙara goyon bayan lokaci;
  • an kawo socket.socket zuwa yanayin da ke ba ka damar gudanar da "graalpython -m http.server" da loda ba a ɓoye (ba tare da TLS ba) albarkatun http;
  • Kafaffen batutuwa tare da nuna pandas.DataFrame abubuwa.
    ba daidai ba sarrafa tuples a cikin bytes. farawa da,
    ɓata aikin na'urori da amfani da dict.__ ya ƙunshi__ don ƙamus;

  • Ƙara tallafi don ast.PyCF_ONLY_AST, wanda yarda tabbatar da cewa pytest yana aiki;
  • Kara goyon baya PEP 498 (tsakanin kirtani a zahiri);
  • An aiwatar tutar "--python.EmulateJython" don shigo da azuzuwan JVM ta amfani da tsarin shigar da Python na yau da kullun da kama keɓancewar JVM daga lambar Python;
  • Ingantacciyar aikin bincike, ban da caching,
    samun damar abubuwan Python daga lambar JVM. Ingantattun sakamako a cikin gwaje-gwajen aiki don lambar python da kari na asali ( aiwatar da kari na asali a saman llvm yana nuna cewa an wuce bitcode llvm zuwa GraalVM don haɗa JIT).

Canje-canje a cikin TruffleRuby:

  • Don haɗa kari na asali, ginanniyar kayan aiki na LLVM yanzu ana amfani da shi, ƙirƙirar lambar asali da bitcode. Wannan yana nufin cewa ƙarin kari na asali ya kamata a tattara daga cikin akwatin, kawar da mafi yawan abubuwan haɗin gwiwa;
  • Raba shigarwar LLVM don shigar da kari na asali a cikin TruffleRuby;
  • Shigar da kari na C ++ akan TruffleRuby baya buƙatar shigar da libc++ da libc++ abi;
  • An sabunta lasisi zuwa EPL 2.0/GPL 2.0/LGPL 2.1, daidai da JRuby na baya-bayan nan;
  • Ƙara goyon baya don muhawara na zaɓi zuwa GC.stat;
  • An aiwatar da hanyar Kernel#load tare da nannade da Kernel#spawn tare da :chdir;
  • Ƙara rb_str_drop_bytes, wanda yake da kyau saboda OpenSSL yana amfani da shi;
  • Haɗe da haɓaka kayan ado da aka riga aka shigar da ake buƙata don sabbin hanyoyin dogo a cikin Rails 6;
  • Don tattara kari na asali, ana amfani da tutoci, kamar yadda a cikin MRI;
  • An inganta ingantaccen aiki kuma an rage yawan ƙwaƙwalwar ajiya.

Canje-canje a cikin FastR:

  • An tabbatar da dacewa da R 3.6.1;
  • Ƙara goyan bayan farko don gudanar da kari na asali bisa LLVM. Lokacin gina fakitin R na asali, an saita FastR don amfani da ginanniyar kayan aikin LLVM na GraalVM. Fayilolin binary ɗin da aka samu zasu ƙunshi duka lambar ƙasa da LLVM bitcode.

    Hakanan ana gina fakitin da aka riga aka shigar da su ta wannan hanyar.
    FastR yana lodawa kuma yana gudanar da lambar tsawo ta asali ta tsohuwa, amma idan aka ƙaddamar da zaɓin "-R.BackEnd=llvm", za a yi amfani da lambar bitcode. Ana iya amfani da bayan LLVM a zaɓe don wasu fakitin R ta hanyar tantance "--R.BackEndLLVM=pkg1,pkg2". Idan kuna da matsalolin shigar da fakiti, zaku iya dawo da komai ta hanyar kiran fastr.setToolchain ("yan ƙasa") ko gyara fayil ɗin $FASTR_HOME da hannu;

  • A cikin wannan sakin, FastR yana jigilar kaya ba tare da ɗakunan karatu na lokaci na GCC ba;
  • Kafaffen ƙwaƙwalwar ƙwaƙwalwa;
  • Kafaffen matsalolin lokacin aiki tare da manyan vectors (> 1GB);
  • An aiwatar da grepRaw, amma don gyarawa kawai = T.

source: budenet.ru

Add a comment