GraalVM ورچوئل مشين جو 19.3.0 جاري ڪيو ۽ ان جي بنياد تي پٿون، جاوا اسڪرپٽ، روبي ۽ آر جي نفاذ

Oracle ڪمپني شايع ٿيل هڪ آفاقي مجازي مشين جي ڇڏڻ GraalVM 19.3.0، جيڪو JavaScript (Node.js) ۾ هلندڙ ايپليڪيشنن کي سپورٽ ڪري ٿو، Python، Ruby، R، JVM لاءِ ڪا به ٻولي (Java، Scala، Clojure، Kotlin) ۽ ٻوليون جن لاءِ LLVM بٽ ڪوڊ ٺاهي سگھجن ٿا (C, C++) ، مورچا). 19.3 برانچ هڪ ڊگهي مدت جي حمايت (LTS) جي طور تي درجه بندي ڪئي وئي آهي ۽ قابل ذڪر مدد جي ڊي 11، بشمول جاوا ڪوڊ گڏ ڪرڻ جي صلاحيت قابل عمل فائلن ۾ (GraalVM اصلي تصوير). پروجيڪٽ ڪوڊ طرفان ورهايل GPLv2 تحت لائسنس يافته. ساڳئي وقت، GraalVM استعمال ڪندي پٿون، جاوا اسڪرپٽ، روبي ۽ آر ٻولي لاڳو ڪرڻ جا نوان ورزن جاري ڪيا ويا. GraalPython, GraalJS, ٽرفل روبي и فاسٽ آر.

GraalVM فراهم ڪري ٿو هڪ JIT مرتب ڪندڙ جيڪو JVM ۾ اڏام تي ڪنهن به اسڪرپٽنگ ٻولي مان ڪوڊ ايگزيڪيوٽو ڪري سگهي ٿو، بشمول JavaScript، Ruby، Python ۽ R، ۽ اهو پڻ ممڪن بڻائي ٿو ته مقامي ڪوڊ کي هلائڻ لاءِ JVM ۾ تبديل ٿيل LLVM bitcode. GraalVM پاران مهيا ڪيل اوزار ۾ هڪ ٻولي-آزاد ڊيبگر، هڪ پروفائلنگ سسٽم، ۽ ميموري مختص تجزيي شامل آهن. GraalVM مختلف ٻولين ۾ اجزاء سان گڏ گڏيل ايپليڪيشن ٺاهڻ کي ممڪن بڻائي ٿو، توهان کي ٻين ٻولين ۾ ڪوڊ مان شيون ۽ صفن تائين رسائي جي اجازت ڏئي ٿي. JVM جي بنياد تي ٻولين لاء اتي آهي موقعو مشيني ڪوڊ ۾ مرتب ڪيل ايگزيڪيوٽو فائلون ٺاهڻ جيڪي سڌو سنئون ڪم ڪري سگھجن ٿيون گھٽ ۾ گھٽ ميموري استعمال (ميموري ۽ ٿريڊ مينيجمينٽ فريم ورڪ سان ڳنڍڻ ذريعي لاڳو ڪئي وئي آهي سبسٽريٽ VM).

GraalJS ۾ تبديليون:

  • Node.js 12.10.0 سان مطابقت يقيني آهي؛
  • غير معياري عالمي ملڪيت ۽ افعال ڊفالٽ طور بند ٿيل آھن:
    گلوبل (GlobalThis جي بدران، واپسي لاء js.global-پراپرٽي سيٽنگ)، ڪارڪردگي (js.performance)، پرنٽ ۽ printErr (js.print)؛

  • لاڳو ڪيل Promise.allSettled ۽ nullish coalescing proposes، جيڪي ECMAScript 2020 موڊ ۾ موجود آهن (“-js.ecmascript-version=2020”)؛
  • اپڊيٽ ٿيل انحصار ICU4J کان 64.2، ASM کان 7.1.

تبديليون GraalPython ۾:

  • شامل ڪيو ويو اسٽبس gc.{enable,disable,isenabled}, applyed charmap_build, sys.hexversion and _lzma;
  • تازه ڪاري پٿون 3.7.8 معياري لائبريري؛
  • NumPy 1.16.4 ۽ پانڊاس 0.25.0 لاءِ سپورٽ شامل ڪئي وئي؛
  • شامل ڪيل ٽائيم سپورٽ؛
  • socket.socket کي ھڪڙي حالت ۾ آندو ويو آھي جيڪو توھان کي هلائڻ جي اجازت ڏئي ٿو "graalpython -m http.server" ۽ لوڊ ڪريو اڻ ڳڻي (TLS کان سواء) http وسيلن؛
  • pandas.DataFrame شيون ڏيکارڻ سان حل ٿيل مسئلا.
    bytes.startswith ۾ tuples جي غلط پروسيسنگ،
    ڊڪشنري لاءِ ڊڪشنريون ۽ ڊڪشنري جو استعمال

  • ast.PyCF_ONLY_AST لاءِ سپورٽ شامل ڪئي وئي، جيڪا اجازت پڪ ڪريو ته pytest ڪم ڪري ٿو؛
  • شامل ڪيو ويو حمايت PEP 498 (لفظن ۾ اسٽرنگ انٽرپوليشن)؛
  • لاڳو ٿيل "--python.EmulateJython" جھنڊو JVM ڪلاس درآمد ڪرڻ لاءِ عام پٿون امپورٽ سنٽيڪس استعمال ڪندي ۽ پٿون ڪوڊ مان JVM استثنا کي پڪڙڻ لاءِ؛
  • بهتر پارسر ڪارڪردگي، استثنا ڪيشنگ،
    JVM ڪوڊ مان پٿون شيون تائين رسائي. پٿون ڪوڊ ۽ ڏيهي ايڪسٽينشنز لاءِ پرفارمنس ٽيسٽ ۾ بهتر نتيجا (ايل ايل وي ايم جي چوٽي تي مقامي ايڪسٽينشن تي عمل ڪرڻ جو مطلب اهو آهي ته bitcode llvm کي JIT جي تاليف لاءِ GraalVM ڏانهن منتقل ڪيو ويو آهي).

تبديليون TruffleRuby ۾:

  • ڏيهي ايڪسٽينشن کي گڏ ڪرڻ لاءِ، بلٽ ان LLVM ٽول ڪٽ ھاڻي استعمال ڪيو ويو آھي، ٺاھيو آھي اصلي ڪوڊ ۽ بٽ ڪوڊ. هن جو مطلب اهو آهي ته وڌيڪ اصلي واڌارن کي دٻي کان ٻاهر گڏ ڪرڻ گهرجي، اڪثر ڳنڍڻ واري مسئلن کي ختم ڪندي؛
  • TruffleRuby ۾ اصلي ايڪسٽينشن کي انسٽال ڪرڻ لاءِ الڳ LLVM تنصيب؛
  • TruffleRuby تي C++ ايڪسٽينشن کي انسٽال ڪرڻ لاءِ هاڻي libc++ ۽ libc++ abi انسٽال ڪرڻ جي ضرورت ناهي.
  • لائسنس کي اپڊيٽ ڪيو ويو EPL 2.0/GPL 2.0/LGPL 2.1، ساڳيو تازو JRuby؛
  • GC.stat ۾ اختياري دليلن لاءِ سپورٽ شامل ڪئي وئي؛
  • ڪرنل#لوڊ جو طريقو ريپر سان لاڳو ڪيو ويو ۽ ڪرنل#سپون سان :chdir؛
  • شامل ڪيو ويو rb_str_drop_bytes، جيڪو وڏو آهي ڇو ته OpenSSL ان کي استعمال ڪري ٿو؛
  • ريل 6 ۾ نئين ريل لاءِ گھربل اڳ ۾ نصب ڪيل جواھرن جون واڌايون شامل آھن؛
  • مقامي توسيع کي گڏ ڪرڻ لاء، پرچم استعمال ڪيا ويا آھن، جيئن ايم آر آئي ۾؛
  • ڪارڪردگي جي اصلاح ڪئي وئي آهي ۽ ياداشت جو استعمال گھٽجي ويو آهي.

تبديليون فاسٽ آر ۾:

  • R 3.6.1 سان مطابقت يقيني آهي؛
  • LLVM جي بنياد تي اصلي واڌارن کي هلائڻ لاءِ ابتدائي مدد شامل ڪئي وئي. جڏهن اصلي آر پيڪيجز ٺاهي رهيا آهن، فاسٽ آر GraalVM جي بلٽ ان LLVM ٽولنگ استعمال ڪرڻ لاءِ ترتيب ڏنل آهي. نتيجو بائنري فائلن ۾ شامل هوندو اصلي ڪوڊ ۽ LLVM بٽ ڪوڊ.

    اڳ ۾ نصب ٿيل پيڪيجز پڻ هن طريقي سان ٺهيل آهن.
    فاسٽ آر لوڊ ٿئي ٿو ۽ ڊفالٽ طور ڏيهي ايڪسٽينشن ڪوڊ هلائي ٿو، پر جڏهن شروع ڪيو ويو "--R.BackEnd=llvm" اختيار سان، بٽ ڪوڊ استعمال ڪيو ويندو. LLVM پس منظر استعمال ڪري سگھجي ٿو منتخب طور تي ڪجھ R پيڪيجز لاءِ وضاحت ڪندي "-R.BackEndLLVM=pkg1,pkg2". جيڪڏهن توهان کي پيڪيجز کي انسٽال ڪرڻ ۾ مسئلو آهي، ته توهان فاسٽر.setToolchain("native") کي ڪال ڪري يا دستي طور تي $FASTR_HOME/etc/Makeconf فائل کي ايڊٽ ڪندي هر شيءِ کي واپس آڻي سگهو ٿا.

  • هن رليز ۾، فاسٽ آر جهازن بغير GCC رن ٽائم لائبريريون؛
  • مقرر ٿيل ميموري ليک؛
  • حل ٿيل مسئلا جڏهن وڏي ویکٹر سان ڪم ڪري رهيا آهن (> 1GB)؛
  • لاڳو ٿيل grepRaw، پر صرف fixed=T لاءِ.

جو ذريعو: opennet.ru

تبصرو شامل ڪريو