د GraalVM مجازی ماشین 19.3.0 خپور کړئ او د Python، JavaScript، Ruby او R د هغې پر بنسټ پلي کول

اوریکل شرکت خپور شوی د نړیوال مجازی ماشین خوشې کول GraalVM 19.3.0، کوم چې په JavaScript (Node.js) کې د چلولو غوښتنلیکونو ملاتړ کوي، Python، Ruby، R، د JVM لپاره کومې ژبې (جاوا، سکالا، کلوجور، کوټلین) او هغه ژبې چې د LLVM بټکوډ تولید کیدی شي (C، C++) ، زنګ). د 19.3 څانګه د اوږدې مودې ملاتړ (LTS) خوشې کولو په توګه طبقه بندي شوې او د پام وړ ملاتړ JDK11د اجرا وړ فایلونو کې د جاوا کوډ تالیف کولو وړتیا په شمول (GraalVM اصلي عکس). د پروژې کوډ لخوا توزیع شوی د GPLv2 لاندې جواز لري. په ورته وخت کې، د GraalVM په کارولو سره د Python، JavaScript، Ruby او R ژبې پلي کولو نوې نسخې خپرې شوې - GraalPython, GraalJS, TruffleRuby и چټک آر.

GraalVM چمتو کوي د JIT کمپیلر چې کولی شي په JVM کې په الوتنه کې د هرې سکریپټینګ ژبې څخه کوډ اجرا کړي ، پشمول جاواسکریپټ ، روبي ، پایتون او 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 gc.{enable,disable,isenabled}, تطبیق شوي charmap_build, sys.hexversion او _lzma;
  • د Python 3.7.8 معیاري کتابتون تازه شوی؛
  • د NumPy 1.16.4 او پانډاس 0.25.0 لپاره ملاتړ اضافه شوی؛
  • د وخت ملاتړ اضافه شوی؛
  • socket.socket داسې حالت ته راوړل شوی چې تاسو ته اجازه درکوي "graalpython -m http.server" چل کړئ او بې کوډ شوي (پرته TLS) http سرچینې پورته کړئ؛
  • د پانډاس ډیټا فریم څیزونو ښودلو سره حل شوي مسلې.
    په bytes.startswith کې د ټپلونو ناسم پروسس کول،
    د تکرار کونکو تخصیص تخریب او د لغتونو لپاره د dict.__contains__ کارول؛

  • د ast.PyCF_ONLY_AST لپاره ملاتړ اضافه شوی، کوم چې اجازه ډاډ ترلاسه کړئ چې pytest کار کوي؛
  • زیاته کړه ملاتړ PEP 498 (په لغتونو کې د تار انټرپولیشن)؛
  • پلي شوي د "--python.EmulateJython" بیرغ د نورمال Python وارداتي ترکیب په کارولو سره د JVM ټولګیو واردولو لپاره او د Python کوډ څخه د JVM استثناوې نیول؛
  • د پارسر فعالیت ښه شوی، استثنا کیچ کول،
    د JVM کوډ څخه د Python شیانو ته لاسرسی. د python کوډ او اصلي توسیعونو لپاره د غوره فعالیت ازموینې پایلې (د llvm په سر کې د اصلي توسیعونو اجرا کول پدې معنی دي چې 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 کې د نوي ریلونو لپاره د دمخه نصب شوي جواهراتو توسیع شامل دي؛
  • د اصلي توسیعونو د راټولولو لپاره، بیرغونه کارول کیږي، لکه څنګه چې په MRI کې؛
  • د فعالیت اصلاح شوي او د حافظې مصرف کم شوی.

بدلونونه په FastR کې:

  • د R 3.6.1 سره مطابقت تضمین شوی؛
  • د LLVM پراساس د اصلي توسیعونو چلولو لپاره لومړني ملاتړ اضافه شوی. کله چې اصلي R کڅوړې رامینځته کوئ ، فاسټ آر د GraalVM جوړ شوي LLVM اوزار کارولو لپاره تنظیم شوی. پایله لرونکې بائنری فایلونه به دواړه اصلي کوډ او LLVM بټ کوډ ولري.

    مخکې نصب شوي کڅوړې هم پدې ډول جوړ شوي.
    FastR د اصلي تمدید کوډ په ډیفالټ بار کوي او چلوي، مګر کله چې د "-R.BackEnd=llvm" اختیار سره پیل شي، بټ کوډ به وکارول شي. د LLVM بیک انډ د "-R.BackEndLLVM=pkg1,pkg2" په ټاکلو سره د ځینې R کڅوړو لپاره په انتخابي توګه کارول کیدی شي. که تاسو د بسته بندۍ په نصبولو کې ستونزه لرئ، تاسو کولی شئ د fastr.setToolchain("اصلي") په زنګ وهلو یا په لاسي ډول د $FASTR_HOME/etc/Makeconf فایل ترمیم کولو سره هرڅه بیرته راوباسئ؛

  • په دې خپرونه کې، د GCC د چلولو وخت کتابتونونو پرته FastR کښتۍ؛
  • ثابت حافظه لیک؛
  • حل شوي ستونزې کله چې د لوی ویکتورونو سره کار کوي (> 1GB)؛
  • grepRaw پلي شوی، مګر یوازې د ثابت = T لپاره.

سرچینه: opennet.ru

Add a comment