د پروګرام کولو ژبه جولیا 1.9 شتون لري

د جولیا 1.9 برنامه کولو ژبه خپره شوې ، د لوړ فعالیت ، متحرک ټایپینګ ملاتړ او د موازي برنامو لپاره جوړ شوي وسیلې په څیر ځانګړتیاوې ترکیب کوي. د جولیا ترکیب MATLAB ته نږدې دی، د روبي او لیسپ څخه ځینې عناصر پور اخلي. د تار د مینځلو طریقه د پرل یادونه کوي. د پروژې کوډ د MIT جواز لاندې ویشل شوی.

د ژبې کلیدي ځانګړتیاوې:

  • لوړ فعالیت: د پروژې یو له مهمو اهدافو څخه د C برنامو سره نږدې فعالیت ترلاسه کول دي. د جولیا کمپیلر د LLVM پروژې کار پراساس دی او د ډیری هدف پلیټ فارمونو لپاره د اصلي اصلي ماشین کوډ رامینځته کوي؛
  • د مختلف برنامه کولو تمثیلونو ملاتړ کوي ، پشمول د اعتراض پر بنسټ او فعال برنامه کولو عناصر. معیاري کتابتون د نورو شیانو په مینځ کې د غیر متناسب I/O لپاره دندې چمتو کوي، د پروسې کنټرول، ننوتل، پروفایل کول، او د بسته بندي مدیریت؛
  • متحرک ټایپ کول: ژبه د متغیرونو لپاره د ډولونو واضح تعریف ته اړتیا نلري، د سکریپټینګ پروګرام کولو ژبو ته ورته. د متقابل حالت ملاتړ شوی؛
  • د ډولونو مشخص کولو اختیاري وړتیا؛
  • د عددي کمپیوټري ، ساینسي کمپیوټري ، ماشین زده کړې ، او ډیټا لید لپاره ترکیب مثالی. د ډیری شمیري ډیټا ډولونو او وسیلو لپاره ملاتړ د محاسبې موازي کولو لپاره.
  • د اضافي پرتونو پرته د C کتابتونونو څخه د مستقیم تلیفون کولو وړتیا.

په جولیا 1.9 کې لوی بدلونونه:

  • نوې ژبې ځانګړتیاوې
    • اجازه ورکړئ چې دندې په بل ماډل کې د "setproperty!(::Module, ::Symbol, x)" په کارولو سره ترسره شي.
    • ډیری دندې چې په وروستي موقعیت کې ندي اجازه لري. د مثال په توګه، تار "a, b…, c = 1, 2, 3, 4" به د "a = 1 په توګه پروسس شي؛ b…, = 2, 3; c = 4 ". دا د Base.split_rest له لارې اداره کیږي.
    • د واحد کرکټر لیټرې اوس د سټرینګ لیټریل په څیر ورته ترکیب ملاتړ کوي. هغه. نحو کولی شي د ناسم UTF-8 ترتیبونو استازیتوب وکړي، لکه څنګه چې د چار ډول لخوا اجازه ورکړل شوې.
    • د یونیکوډ 15 توضیحاتو لپاره ملاتړ اضافه شوی.
    • د ټیپلونو نیسټ شوي ترکیبونه او نومول شوي کرکټر ټوپلز اوس د ډول پیرامیټرو په توګه کارول کیدی شي.
    • نوي جوړ شوي فنکشنونه "getglobal(::Module, ::Symbol[, order])" او "setglobal!(::Module, ::Symbol, x[, order])" په ځانګړې توګه د نړیوالو متغیرونو د لوستلو او لیکلو لپاره. د ګیټګلوبل میتود باید اوس د نړیوال متغیرونو ته د لاسرسي لپاره د ګیټفیلډ میتود په پرتله غوره شي.
  • په ژبه کې بدلونونه
    • "@invoke" میکرو چې په 1.7 نسخه کې معرفي شوی اوس صادر شوی او د کارولو لپاره شتون لري. برسیره پردې، دا اوس د "کوم" پرځای د "Core.Typeof(x)" میتود کاروي په هغه حالت کې چې د "x" دلیل لپاره د ډول تشریح حذف شوی وي. دا اړینه ده ترڅو ډاډ ترلاسه شي چې د دلیلونو په توګه تیر شوي ډولونه په سمه توګه پروسس شوي.
    • د "invokelatest" فنکشن او "@invokelatest" میکرو صادرول فعال شوي، په 1.7 نسخه کې معرفي شوي.
  • تالیف کونکی/رنټیم اصلاحات
    • د لومړي اعدام لپاره د پام وړ وخت کم شوی (TTFX - د لومړي اعدام وخت). د بسته بندۍ مخکی کول اوس اصلي کوډ په "pkgimage" کې زیرمه کوي، پدې معنی چې د پریکمپیلیشن پروسې لخوا رامینځته شوی کوډ به د کڅوړې باریدو وروسته بیا تنظیم کولو ته اړتیا ونلري. د pkgimages حالت کارول د "--pkgimages=no" اختیار په کارولو سره غیر فعال کیدی شي.
    • د ډول انفرنس پیژندل شوي څلور اړخیز پیچلتیا مسله حل شوې ، او اټکل په ټولیزه توګه لږ حافظه کاروي. ځینې ​​برخې قضیې په اوتومات ډول رامینځته شوي اوږدې دندې سره (لکه ModelingToolkit.jl د جزوي توپیر مساواتو او لوی لامل ماډلونو سره) خورا ګړندي ترکیب کوي.
    • د کانکریټ ډولونو پرته د دلیلونو سره زنګونه اوس د انجیکشن یا جامد حل لپاره د اتحادیې ویشلو غوره کیدی شي ، حتی که چیرې د لیږلو لپاره ډیری مختلف ډوله نوماندان شتون ولري. دا کولی شي په ځینو حاالتو کې فعالیت ته وده ورکړي چیرې چې د شیانو ډولونه په بشپړ ډول حل شوي ندي ، په ثابت ډول د "@nospecialize-d" کال سایټونو حل کولو او د بیا ترکیب کولو څخه مخنیوی کولو سره.
    • په بیس ماډل کې د @ خالص میکرو ټولې کارول د Base.@assume_effects سره بدل شوي.
    • د invoke (f, invokesig, args...) لپاره زنګونه د لږ مشخص ډولونو سره چې معمولا د f(args...) لپاره کارول کیږي نور د بسته بندۍ لامل نه کیږي.
  • د کمانډ لاین اختیارونو کې بدلون
    • په لینوکس او وینډوز کې، د "-threads=auto" اختیار اوس هڅه کوي چې د CPU تړاو پراساس د موجود پروسیسرونو شمیره معلومه کړي، یو ماسک عموما په HPC او کلاوډ چاپیریال کې تنظیم شوی.
    • د "--math-mode=fast" پیرامیټر غیر فعال دی، د هغې پر ځای د "@fastmath" میکرو کارولو سپارښتنه کیږي، کوم چې په واضح ډول سیمانټیک تعریف کړی.
    • د "--threads" اختیار اوس په "auto |" بڼه کې دی N[,auto|M]"، چیرته چې M د جوړیدو لپاره د متقابلو تارونو شمیر په ګوته کوي (اوس مهال آٹو معنی 1).
    • اضافه شوی اختیار "—د اندازې-اشاره=" "، کوم چې حد ټاکي چې وروسته د کثافاتو فعاله راټولول پیل کیږي. اندازه په بایټ، کیلوبایټ (1000 KB)، میګابایټ (300 MB)، یا ګیګابایټ (1,5 GB) کې مشخص کیدی شي.
  • په ملټي ریډینګ کې بدلونونه
    • "Threads.@spawn" اوس د ":default" یا ":interactive" ارزښت سره یو اختیاري لومړی دلیل لري. یو متقابل کار د ټیټ غبرګون ځنډ ته اړتیا لري او ډیزاین شوی چې لنډ وي یا په مکرر ډول ترسره شي. متقابلې دندې به په متقابل تارونو کې پرمخ ځي که چیرې دوی د جولیا پیل کولو پرمهال مشخص شوي وي.
    • هغه تارونه چې د جولیا د وخت څخه بهر روان دي (لکه د C یا جاوا څخه) اوس کولی شي د "jl_adopt_thread" په کارولو سره د جولیا کوډ ته زنګ ووهي. دا په اوتومات ډول پیښیږي کله چې د "cfunction" یا "@ccallable" د ننوتلو نقطې له لارې د جولیا کوډ داخل کړئ. د پایلې په توګه، د تارونو شمیر اوس د اجرا کولو په جریان کې بدلون موندلی شي.
  • د کتابتون نوې دندې
    • نوی فنکشن "Iterators.flatmap".
    • نوی فنکشن "pkgversion(m::Module)" د پیکج نسخه ترلاسه کولو لپاره چې یو ورکړل شوی ماډل یې پورته کړی، د "pkgdir(m::Module)" سره ورته.
    • نوی فنکشن "stack(x)" چې هر اړخ ته "reduce(hcat, x::Vector{<:Vector})" عمومي کوي او هر ډول تکرار کونکي ته اجازه ورکوي. د "stack(f, x)" میتود "mapreduce(f, hcat, x)" عمومي کوي او ډیر موثر دی.
    • د تخصیص شوي حافظې "@allocations" تحلیل کولو لپاره نوی میکرو، "@allocated" ته ورته دی، پرته له دې چې دا د تخصیص شوي حافظې د ټول اندازې په پرتله د حافظې تخصیصونو شمیر بیرته راولي.
  • د کتابتون نوې ځانګړتیاوې
    • "RoundFromZero" اوس د "BigFloat" پرته د نورو ډولونو لپاره کار کوي.
    • "Dict" اوس د "sizehint!" په کارولو سره په لاسي ډول کم کیدی شي.
    • "@ وخت" اوس په جلا توګه د غلط میتودونو په بیا تنظیمولو کې د مصرف شوي وخت سلنه مشخصوي.
  • په معیاري کتابتون کې بدلونونه
    • د Dict او نورو اخیستل شویو شیانو لکه کیلي (::Dict)، ارزښتونو (::Dict) او Set لپاره د تکرار میتودونو کې د همغږۍ مسله حل کړه. دا د تکرار میتودونه اوس د لامحدود شمیر تارونو لپاره په موازي ډول په ډیک یا سیټ کې ویل کیدی شي ، تر هغه چې هیڅ داسې عمل شتون ونلري چې لغت یا سیټ بدل کړي.
    • د وړاندوینې فنکشن "!f" منفي کول اوس د نامعلوم فنکشن پرځای یو جامع فنکشن "(!) ∘ f" راګرځوي.
    • د ابعاد سلائس فنکشنونه اوس په ډیری ابعادو کې کار کوي: "eachslice"، "eachrow" او "eachcol" د "Slices" څیز بیرته راګرځوي چې لیږلو ته اجازه ورکوي چې ډیر اغیزمن میتودونه چمتو کړي.
    • عامه API ته "@kwdef" میکرو اضافه کړه.
    • په "fld1" کې د عملیاتو ترتیب سره مسله حل کړه.
    • ترتیب کول اوس تل د وخت مستحکم دي (QuickSort بیا ډیزاین شوی).
    • "Base.splat" اوس صادر شوی. د بیرته ستنیدو ارزښت د "بیس. سپلاټ" ډول دی نه د نامعلوم فعالیت پر ځای، دا اجازه ورکوي چې په ښه توګه تولید شي.
  • د بسته بندۍ مدیر
    • "د بسته توسیع": د جولیا ناستې کې بار شوي نورو کڅوړو څخه د کوډ سنیپټ پورته کولو لپاره ملاتړ. غوښتنلیک د "Requires.jl" کڅوړې ته ورته دی ، مګر د مخکې تالیف او تنظیماتو مطابقت ملاتړ کیږي.
  • خطي الجبرا کتابتون
    • د عنصر له مخې ویش سره د ګډوډۍ خطر له امله، د "a/b" او "b\a" میتودونه د "a" او ویکتور "b" سره لرې کړل، کوم چې د "a * pinv(b)" سره برابر وو.
    • BLAS او LAPACK ته زنګ وهل اوس "libblastrampoline (LBT)" کاروي. OpenBLAS د ډیفالټ لخوا چمتو شوی، مګر د نورو BLAS/LAPACK کتابتونونو سره د سیسټم عکس جوړول نه ملاتړ کیږي. پرځای یې، دا سپارښتنه کیږي چې د LBT میکانیزم څخه کار واخلئ ترڅو د BLAS/LAPACK د بل موجوده کتابتونونو سره ځای ونیسي.
    • "lu" د نوي میټرکس گردش ستراتیژۍ ملاتړ کوي، "RowNonZero()"، کوم چې د نوي ریاضي ډولونو او د روزنې موخو لپاره د کارولو لپاره لومړی غیر صفر گردش عنصر غوره کوي.
    • "normalize(x, p=2)" اوس د هر نورمال شوي ویکتور ځای "x" ملاتړ کوي، په شمول د سکالر.
    • د BLAS تارونو ډیفالټ شمیر اوس د ARM جوړښتونو کې د CPU تارونو شمیر او په نورو جوړښتونو کې د CPU تارونو نیمایي شمیر سره مساوي دی.
  • Printf: د ښه لوستلو وړتیا لپاره د غلط فارمیټ شوي تارونو لپاره بیا کار شوي خطا پیغامونه.
  • پروفایل: نوی فنکشن "Profile.take_heap_snapshot(file)"، کوم چې د JSON-based ".heapsnapshot" بڼه کې یو فایل لیکي چې په کروم کې ملاتړ شوی.
  • Random: Randn او randexp اوس د هر ډول AbstractFloat ډول لپاره کار کوي چې رینډ تعریفوي.
  • REPL
    • د "Alt-e" کلیدي ترکیب فشار کول اوس په مدیر کې اوسنی ان پټ خلاصوي. منځپانګه (که تعدیل شوی وي) به اجرا شي کله چې تاسو د مدیر څخه ووتل.
    • په REPL کې فعال اوسني ماډل شرایط د "REPL.activate(::Module)" فنکشن په کارولو سره یا په REPL کې د ماډل داخلولو او د "Alt-m" کلیدي ترکیب په فشارولو سره بدلیدلی شي (د ډیفالټ لخوا اصلي).
    • د "نمبر شوي پرامپټ" حالت، کوم چې د هر داخل او محصول لپاره شمیرې چاپوي او په آوټ کې نمرې شوې پایلې ذخیره کوي، د "REPL.numbered_prompt!()" په کارولو سره فعال کیدی شي.
    • د ټب بشپړول د شته کلیدي کلمو دلیلونه ښیې.
  • SuiteSparse: د "SuiteSparse" حل کونکي لپاره کوډ "SparseArrays.jl" ته لیږدول شوی. حل کونکي اوس د "SuiteSparse.jl" لخوا بیا صادر شوي.
  • سپارسارېز
    • د "SuiteSparse" حل کونکي اوس د "SparseArrays" فرعي ماډلونو په توګه شتون لري.
    • د UMFPACK او COLMOD تار محافظت حالتونه د نړیوال متغیرونو له مینځه وړلو او د لاکونو په کارولو سره ښه شوي. څو اړخیزه "ldiv!" UMFPACK توکي اوس په خوندي ډول اجرا کیدی شي.
    • تجربوي فنکشن "SparseArrays.allowscalar(::Bool)" تاسو ته اجازه درکوي د سپارس صفونو د سکالر شاخص غیر فعال یا فعال کړئ. دا فنکشن د "SparseMatrixCSC" شیانو تصادفي سکالر شاخص کشف کولو لپاره ډیزاین شوی ، کوم چې د فعالیت ستونزو یوه عامه سرچینه ده.
  • د ټیسټ سویټونو لپاره نوی ناکام سیف حالت چې د ناکامۍ یا غلطۍ په صورت کې د ازموینې پیل پای ته رسوي. یا د "@testset kwarg failfast=true" یا "Export JULIA_TEST_FAILFAST=true" له لارې تنظیم کړئ. دا ځینې وختونه په CI چلولو کې اړین دي ترڅو د خطا پیغامونه ژر ترلاسه کړي.
  • نیټې: خالي تارونه نور په غلط ډول د اعتبار وړ "نیټې وخت" ، "نیټې" یا "وختونو" ارزښتونو په توګه نه تجزیه کیږي او پرځای یې په جوړونکو او پارس کولو کې "دلیل غلطی" وغورځوي ، پداسې حال کې چې "ټریپرس" هیڅ شی نه راګرځوي.
  • بسته توزیع شوه
    • د بسته بندۍ ترتیب (فعال پروژه، "LOAD_PATH"، "DEPOT_PATH") اوس د ځایی کارګر پروسې اضافه کولو پر مهال تبلیغ کیږي (د مثال په توګه د "addprocs(N::Int)" کارول یا د کمانډ لاین پرچم "--procs=N" کارول).
    • د محلي کارګر پروسو لپاره "addprocs" اوس د "env" په نوم یو دلیل مني ترڅو د کارګر پروسو ته د چاپیریال تغیرات انتقال کړي.
  • یونیکوډ: "ګرافیم(s, m:n)" په "s" کې له mth څخه تر نهم ګرافیم پورې سبسټرینګ بیرته راګرځي.
  • د DelimitedFiles کڅوړه د سیسټم کتابتونونو څخه لیرې شوې او اوس د جلا کڅوړې په توګه ویشل شوې چې باید په ښکاره ډول د کارولو لپاره نصب شي.
  • بهرني انحصار
    • په لینوکس کې، د libstdc++ سیسټم کتابتون نسخه په اوتومات ډول کشف کیږي او که دا نوی وي، بار شوی. زوړ libstdc++ جوړ شوی د بارولو چلند، د سیسټم نسخې په پام کې نیولو پرته، د چاپیریال متغیر "JULIA_PROBE_LIBSTDCXX=0" په ترتیب کولو سره بحال کیدی شي.
    • د جولیا بائنری څخه "RPATH" لرې شوی، کوم چې کولی شي په لینکس کې کتابتونونه مات کړي چې د "RUNPATH" متغیر تعریف کولو کې پاتې راغلي.
    • د وسیلې اصلاحات: د "MethodError" او میتودونو محصول (د مثال په توګه د "methods(my_func)" څخه) اوس په سټیک ټریس کې د میتودونو د محصول له اصولو سره سم فارمیټ شوی او رنګ شوی.

    سرچینه: opennet.ru

Add a comment