GraalVM ورچوئل مشین کا 19.3.0 جاری کریں اور اس پر مبنی Python، JavaScript، Ruby اور R کے نفاذ

اوریکل کمپنی опубликовала یونیورسل ورچوئل مشین کی رہائی GraalVM 19.3.0، جو JavaScript (Node.js)، Python، Ruby، R، JVM کے لیے کسی بھی زبان (Java، Scala، Clojure، Kotlin) میں چلنے والی ایپلی کیشنز کو سپورٹ کرتا ہے اور ایسی زبانیں جن کے لیے LLVM بٹ کوڈ تیار کیا جا سکتا ہے (C, C++) ، زنگ). 19.3 برانچ کو لانگ ٹرم سپورٹ (LTS) ریلیز کے طور پر درجہ بندی کیا گیا ہے۔ قابل ذکر حمایت جے ڈی کے 11جاوا کوڈ کو قابل عمل فائلوں (GraalVM Native Image) میں مرتب کرنے کی صلاحیت سمیت۔ پروجیکٹ کوڈ نے بانٹا GPLv2 کے تحت لائسنس یافتہ۔ اسی وقت، GraalVM کا استعمال کرتے ہوئے Python، JavaScript، Ruby اور R زبان کے نفاذ کے نئے ورژن جاری کیے گئے۔ GraalPython, GraalJS, TruffleRuby и فاسٹ آر.

GraalVM مہیا کرتا ہے۔ ایک JIT کمپائلر جو JVM میں کسی بھی اسکرپٹنگ زبان سے کوڈ کو چلا سکتا ہے، بشمول JavaScript، Ruby، Python اور R، اور LLVM بٹ کوڈ میں تبدیل JVM میں مقامی کوڈ کو چلانا بھی ممکن بناتا ہے۔ GraalVM کے ذریعہ فراہم کردہ ٹولز میں زبان سے آزاد ڈیبگر، پروفائلنگ سسٹم، اور میموری ایلوکیشن اینالائزر شامل ہیں۔ GraalVM مختلف زبانوں میں اجزاء کے ساتھ مشترکہ ایپلی کیشنز بنانا ممکن بناتا ہے، جس سے آپ کو دوسری زبانوں میں کوڈ سے اشیاء اور صفوں تک رسائی حاصل ہوتی ہے۔ JVM پر مبنی زبانوں کے لیے وہاں ہے۔ موقع مشین کوڈ میں مرتب کردہ ایگزیکیوٹیبل فائلیں بنانا جو کم سے کم میموری کی کھپت کے ساتھ براہ راست عمل میں لائی جا سکتی ہیں (میموری اور تھریڈ مینجمنٹ کو فریم ورک کو جوڑنے کے ذریعے لاگو کیا جاتا ہے سبسٹریٹ VM).

GraalJS میں تبدیلیاں:

  • Node.js 12.10.0 کے ساتھ مطابقت کو یقینی بنایا گیا ہے۔
  • غیر معیاری عالمی خصوصیات اور افعال بطور ڈیفالٹ غیر فعال ہیں:
    عالمی (globalThis سے بدل دیا گیا، js.global-property کو واپس کرنے کے لیے ترتیب دیا گیا)، کارکردگی (js.performance)، پرنٹ اور پرنٹ ایرر (js.print)؛

  • لاگو کردہ Promise.allSettled اور nullish coalescing تجویز، جو ECMAScript 2020 موڈ میں دستیاب ہیں ("-js.ecmascript-version=2020")؛
  • ICU4J کو 64.2، ASM کو 7.1 پر اپ ڈیٹ کیا گیا انحصار۔

تبدیلیاں GraalPython میں:

  • stubs شامل کیے گئے
  • اپ ڈیٹ شدہ ازگر 3.7.8 معیاری لائبریری؛
  • NumPy 1.16.4 اور پانڈاس 0.25.0 کے لیے شامل کیا گیا تعاون؛
  • ٹائمائٹ سپورٹ شامل کیا گیا؛
  • socket.socket کو ایسی حالت میں لایا گیا ہے جو آپ کو "graalpython -m http.server" چلانے اور غیر خفیہ کردہ (TLS کے بغیر) HTTP وسائل لوڈ کرنے کی اجازت دیتا ہے۔
  • pandas.DataFrame اشیاء کی نمائش کے ساتھ طے شدہ مسائل۔
    bytes.startswith میں ٹیپلز کی غلط پروسیسنگ،
    تکرار کرنے والوں کی تخریب کاری اور لغت کے لیے dict.__contains__ کا استعمال؛

  • ast.PyCF_ONLY_AST کے لیے شامل کیا گیا تعاون، جو اجازت دی یقینی بنائیں کہ pytest کام کرتا ہے؛
  • شامل کیا گیا۔ کی حمایت پی ای پی 498 (لٹریلز میں سٹرنگ انٹرپولیشن)؛
  • لاگو کیا "--python.EmulateJython" جھنڈا JVM کلاسز کو عام Python امپورٹ سنٹیکس کا استعمال کرتے ہوئے درآمد کرنے کے لیے اور Python کوڈ سے JVM مستثنیات کو پکڑنے کے لیے؛
  • بہتر تجزیہ کار کارکردگی، استثناء کیشنگ،
    JVM کوڈ سے ازگر اشیاء تک رسائی حاصل کرنا۔ python کوڈ اور مقامی ایکسٹینشنز کے لیے کارکردگی کے ٹیسٹوں میں بہتر نتائج (llvm کے اوپر مقامی ایکسٹینشنز کو انجام دینے سے یہ ظاہر ہوتا ہے کہ 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 میں اختیاری دلائل کے لیے تعاون شامل کیا گیا۔
  • ایک ریپر کے ساتھ Kernel#load کا طریقہ لاگو کیا اور Kernel#spaw کے ساتھ :chdir;
  • rb_str_drop_bytes شامل کیا گیا، جو بہت اچھا ہے کیونکہ OpenSSL اسے استعمال کرتا ہے۔
  • ریلز 6 میں نئی ​​ریلوں کے لیے درکار پہلے سے نصب شدہ جواہرات کی توسیع شامل ہے۔
  • مقامی توسیعات کو مرتب کرنے کے لیے، جھنڈے استعمال کیے جاتے ہیں، جیسا کہ MRI میں؛
  • کارکردگی کی اصلاح کی گئی ہے اور میموری کی کھپت کو کم کیا گیا ہے۔

تبدیلیاں فاسٹ آر میں:

  • R 3.6.1 کے ساتھ مطابقت کو یقینی بنایا گیا ہے۔
  • LLVM کی بنیاد پر مقامی ایکسٹینشن چلانے کے لیے ابتدائی مدد شامل کی گئی۔ مقامی R پیکجز بناتے وقت، FastR کو GraalVM کی بلٹ ان LLVM ٹولنگ استعمال کرنے کے لیے کنفیگر کیا جاتا ہے۔ نتیجے میں آنے والی بائنری فائلوں میں مقامی کوڈ اور LLVM بٹ کوڈ دونوں شامل ہوں گے۔

    پہلے سے نصب شدہ پیکج بھی اسی طرح بنائے جاتے ہیں۔
    FastR مقامی ایکسٹینشن کوڈ کو بطور ڈیفالٹ لوڈ اور چلاتا ہے، لیکن جب "-R.BackEnd=llvm" آپشن کے ساتھ لانچ کیا جائے گا تو بٹ کوڈ استعمال کیا جائے گا۔ LLVM بیک اینڈ کو کچھ R پیکجوں کے لیے "-R.BackEndLLVM=pkg1,pkg2" کی وضاحت کر کے منتخب طور پر استعمال کیا جا سکتا ہے۔ اگر آپ کو پیکجز کو انسٹال کرنے میں دشواری کا سامنا ہے، تو آپ fastr.setToolchain("native") پر کال کر کے یا $FASTR_HOME/etc/Makeconf فائل کو دستی طور پر ایڈٹ کر کے سب کچھ واپس کر سکتے ہیں۔

  • اس ریلیز میں، فاسٹ آر جی سی سی رن ٹائم لائبریریوں کے بغیر بھیجتا ہے۔
  • فکسڈ میموری لیک؛
  • بڑے ویکٹر (>1 جی بی) کے ساتھ کام کرتے وقت طے شدہ مسائل؛
  • نافذ grepRaw، لیکن صرف fixed=T کے لیے۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں