Siideynta 19.3.0 ee mashiinka farsamada gacanta ee GraalVM iyo hirgelinta Python, JavaScript, Ruby iyo R oo ku saleysan

Shirkadda Oracle la daabacay sii daayo mashiinka dalwaddii caalamiga ah GraalVM 19.3.0, kaas oo taageera ku socodsiinta codsiyada JavaScript (Node.js), Python, Ruby, R, luqad kasta oo loogu talagalay JVM (Java, Scala, Clojure, Kotlin) iyo luqadaha LLVM bitcode loo soo saari karo (C, C ++ , Miridhku). Laanta 19.3 waxa loo kala saaray sidii Taageerada Muddada Dheer (LTS) siidaynta iyo cajiib ah taageero JDK11, oo ay ku jirto awoodda lagu ururiyo koodhka Java faylal la fulin karo (GraalVM Native Image). Koodhka mashruuca qaybiyey shatiga ku haysta GPLv2. Isla mar ahaantaana, noocyada cusub ee Python, JavaScript, Ruby iyo R hirgelinta luqadda iyadoo la adeegsanayo GraalVM ayaa la sii daayay - GraalPython, GraalJS, TruffleRuby ΠΈ FastR.

GraalVM bixisaa Isku-duwaha JIT kaas oo fulin kara koodka luqad kasta oo qoraal ah oo ku jira duulista JVM, oo ay ku jiraan JavaScript, Ruby, Python iyo R, sidoo kale waxay suurtogal ka dhigtaa in lagu socodsiiyo koodka asalka ah ee JVM loo beddelay LLVM bitcode. Aaladaha ay bixiso GraalVM waxaa ka mid ah cilladaha ka madax-bannaan luqadda, nidaamka sifaynta, iyo falanqaynta qoondaynta xusuusta. GraalVM waxay suurtogal ka dhigaysaa in la abuuro codsiyo isku dhafan oo leh qaybo luuqado kala duwan ku qoran, taas oo kuu oggolaanaysa inaad gasho walxaha iyo habaynta koodka luqadaha kale. Luuqadaha ku salaysan JVM waxaa jira fursad abuurista faylal la fulin karo oo lagu soo ururiyay koodka mashiinka kaas oo si toos ah loo fulin karo isticmaalka xusuusta ugu yar (xusuusta iyo maaraynta dunta waxaa lagu hirgeliyaa isku xirka qaabka Substrate VM).

Isbeddellada ku jira GraalJS:

  • Waafaqsanaanta Node.js 12.10.0 waa la hubiyaa;
  • Guryaha iyo shaqooyinka caalamiga ah ee aan caadiga ahayn waa la naafo:
    caalami ah (oo lagu bedelay globalThis, dejinta js.global-hanti si loo soo celiyo), waxqabadka (js.performance), print iyo printErr (js.print);

  • Ballanqaadka La Fuliyay
  • Ku-tiirsanaanta la cusboonaysiiyay ICU4J ilaa 64.2, ASM ilaa 7.1.

Isbadalada gudaha GraalPython:

  • Ku-darka stubs gc.{karti,dami,la'aan}, charmap_build la fuliyay, sys.hexversion iyo _lzma;
  • La cusboonaysiiyay Python 3.7.8 maktabadda caadiga ah;
  • Taageero lagu daray NumPy 1.16.4 iyo Pandas 0.25.0;
  • Taageerada wakhtiga lagu daray;
  • socket.socket ayaa la keenay xaalad kuu ogolaanaysa inaad socodsiiso "graalpython -m http.server" oo aad ku shubto ilo aan qarsoodi ahayn (la'aanteed TLS);
  • Arrimaha go'an ee muujinta pandas.DataFrame walxaha.
    habayn khaldan oo tuples ah oo ku jira bytes. bilawga,
    burburinta shaqada soo noqnoqota iyo isticmaalka dict.__ka kooban__ qaamuusyada;

  • Taageero lagu daray ast.PyCF_ONLY_AST, kaas ogol yahay hubi in pytest shaqeeyo;
  • Lagu daray taageero PEP 498 (xadhiga isku xidhka suugaan ahaan);
  • La fuliyay calanka "--python.EmulateJython" si loo soo dejiyo fasalada JVM iyadoo la adeegsanayo syntax soo dejinta Python caadiga ah oo ay qabato JVM ka reeban code Python;
  • Waxqabadka baareeyaha oo la hagaajiyay, kaydinta ka reeban,
    ka gelida walxaha Python ee koodhka JVM Natiijooyinka la wanaajiyey ee imtixaanada waxqabadka ee koodka python iyo kordhinta hooyo (fulinta kordhinta hooyo ee korka llvm waxay tusinaysaa in llvm bitcode loo gudbiyo GraalVM si loo soo ururiyo JIT).

Isbadalada gudaha TruffleRuby:

  • Si loo ururiyo kordhinta dhaladka ah, qalabka ku dhex dhisan ee LLVM ayaa hadda la isticmaalaa, iyada oo la abuurayo koodka asalka ah iyo bitcode labadaba. Tani waxay ka dhigan tahay in kordhinta waddaniga ah ee dheeraadka ah ay tahay in laga soo ururiyo sanduuqa, baabi'inta inta badan arrimaha xiriirka;
  • Rakibaadda LLVM ee goonida ah si loogu rakibo kordhinta hooyo ee TruffleRuby;
  • Ku rakibida C++ kordhinta TruffleRuby uma baahna rakibida libc++ iyo libc++abi;
  • Shatiga lagu cusboonaysiiyay EPL 2.0/GPL 2.0/LGPL 2.1, oo la mid ah JRuby dhawaan;
  • Taageero lagu daray doodaha ikhtiyaarka ah GC.stat;
  • Waxay ku hirgalisay habka Kernel#loader iyo Kernel#spawn with :chdir;
  • Lagu daray rb_str_drop_bytes, taas oo aad u fiican sababtoo ah OpenSSL waxay isticmaashaa;
  • Kordhinta ay ku jiraan dhagaxyada horay loo rakibay ee looga baahan yahay biraha ku cusub Tareennada 6;
  • Si loo ururiyo kordhinta asalka ah, calamada ayaa loo isticmaalaa, sida MRI;
  • Hagaajinta waxqabadka ayaa la sameeyay waxaana la dhimay isticmaalka xusuusta.

Isbadalada gudaha FastR:

  • Waafaqsanaanta R 3.6.1 waa la hubiyaa;
  • Taageero horudhac ah oo lagu daray socodsiinta kordhinta dhaladka ee ku salaysan LLVM. Marka la dhisayo baakadaha R ee asalka ah, FastR waxaa loo habeeyey inay isticmaasho GraalVM qalabaynta LLVM ee ku dhex jirta. Faylasha binary-ga ee soo baxay waxay ka koobnaan doonaan koodka asalka ah iyo LLVM bitcode.

    Xirmooyinka horay loo sii rakibay ayaa sidoo kale loo dhisay habkan.
    FastR waxay ku shubtaa oo ku socodsiisaa koodka fidinta asalka ah si caadi ah, laakiin marka lagu bilaabo ikhtiyaarka "-R.BackEnd=llvm", bitcode ayaa la isticmaali doonaa. Dhabarka dambe ee LLVM waxa loo isticmaali karaa si xushmad leh qaar ka mid ah xidhmooyinka R iyadoo la cayimay "--R.BackEndLLVM=pkg1,pkg2". Haddii ay dhibaato kaa haysato rakibidda xirmooyinka, wax walba dib ayaad u celin kartaa adiga oo wacaya fastr.setToolchain("native") ama gacanta aad ku tafatirto faylka $FASTR_HOME/etc/Makeconf;

  • Siideyntan, FastR waxay soo rabtaa iyada oo aan lahayn maktabadaha runtime GCC;
  • Xusuusta go'an ayaa daadsan;
  • Dhibaatooyinka go'an marka la shaqeynayo vectors waaweyn (> 1GB);
  • grepRaw la fuliyay, laakiin kaliya ee go'an=T.

Source: opennet.ru

Add a comment