Rust 1.57 د پروګرام کولو ژبې خپرول

د سیسټم برنامه کولو ژبې Rust 1.57 خپرول، د موزیلا پروژې لخوا تاسیس شوی، مګر اوس د خپلواک غیر انتفاعي سازمان Rust Foundation تر څارنې لاندې رامینځته شوی، خپور شوی. ژبه د حافظې خوندیتوب باندې تمرکز کوي ، د اتوماتیک حافظې مدیریت چمتو کوي ، او د کثافاتو راټولونکي یا رن ټایم کارولو پرته د لوړې دندې موازي کولو لپاره وسیلې چمتو کوي (د چلولو وخت د معیاري کتابتون لومړني پیل او ساتنې ته کم شوی).

د زنګ اتوماتیک حافظه مدیریت د پوائنټرونو مینځلو په وخت کې غلطۍ له مینځه وړي او د ټیټې کچې حافظې لاسوهنې څخه رامینځته شوي ستونزو څخه ساتي ، لکه د حافظې ساحې ته لاسرسی وروسته له دې چې خلاص شي ، د نول پوینټر ډیریفرنسونه ، بفر اوورونونه او داسې نور. د کتابتونونو توزیع کولو لپاره، د راټولولو ډاډ ترلاسه کول او د انحصارونو اداره کول، پروژه د کارګو بسته مدیر ته وده ورکوي. د crates.io ذخیره د کتابتونونو کوربه کولو لپاره ملاتړ کیږي.

اصلي نوښتونه:

  • د "ویرې!" میکرو کارول مستحکم شوي. د تالیف پرمهال رامینځته شوي شرایطو کې ، لکه "const fn" اعلامیې. برسېره پردې، د کارولو سربیره د "ډار!" د کانسټ اعالمیه د "ثابت!" میکرو کارولو ته اجازه ورکوي. او ځینې نور معیاري کتابتون APIs. ثبات لا تر اوسه د فارمیټینګ ټول زیربنا نه پوښي، نو په اوسني بڼه کې "ویرې!" میکرو یوازې د جامد تارونو سره کارول کیدی شي (ډار!("...")) یا د یو واحد متقابل ارزښت "&str" سره کله چې ځای په ځای شي (ډار!("{}", a))، کوم چې باید د ځای په ځای کولو پورې محدود وي }" پرته له دې چې د شکل ورکولو مشخص کونکي او نور ډولونه. په راتلونکي کې، په ثابت شرایطو کې د میکرو پلي کولو وړتیا به پراخه شي، مګر ثبات لرونکي وړتیاوې لا دمخه د تالیف په مرحله کې د اصرار چکونو ترسره کولو لپاره کافي دي: const _: () = assert!(std::mem::size_of:: () == 64); const _: () = ادعا!(std::mem::size_of:: () == 8);
  • د کارګو کڅوړې مدیر د خپل سري نومونو سره د پروفایلونو کارولو ته اجازه ورکوي ، نه یوازې "دیو" ، "ریلیز" ، "ټیسټ" او "بنچ" پورې محدود. د مثال په توګه، د لینک کولو مرحله (LTO) کې د اصلاح کولو وړ کولو لپاره یوازې کله چې د وروستي محصول اسمبلۍ تولید شي، تاسو کولی شئ په Cargo.toml کې د "تولید" پروفایل جوړ کړئ او د "lto = ریښتینې" بیرغ اضافه کړئ. په هرصورت، کله چې خپل پروفایلونه تعریف کړئ، تاسو باید یو موجوده پروفایل مشخص کړئ ترڅو له هغې څخه ډیفالټ ترتیبات وارث کړئ. لاندې مثال د "تولید" پروفایل رامینځته کوي چې د "lto = ریښتین" بیرغ په شمول د "ریلیز" پروفایل بشپړوي. پروفایل پخپله د "--profile تولید" اختیار سره د کارګو په زنګ وهلو سره فعال شوی ، او د مجلس اثار به په "هدف/تولید" لارښود کې ځای په ځای شي. [profile.production] وارث = "ریلیز" lto = ریښتیا
  • د Vec، String، HashMap، HashSet او VecDeque ډولونو لپاره د try_reserve کارول ثبات لري، کوم چې تاسو ته اجازه درکوي د ټاکل شوي ډول عناصرو لپاره مخکې له مخکې ځای خوندي کړئ ترڅو د حافظې تخصیص عملیاتو فریکوینسي کمه کړي او مخنیوی وکړي. د عملیاتو په جریان کې د حافظې د نشتوالي له امله سقوط.
  • دا اجازه لري چې د "m!{ .. }. Method()" او "m!{ .. }؟" په څیر په څرګندونو کې د کرلي بندونو سره میکرو مشخص کړي.
  • د فایل اجرا کول::read_to_end او read_to_string افعال اصلاح شوي.
  • د یونیکوډ مشخصاتو لپاره ملاتړ 14.0 نسخه ته تازه شوی.
  • د "#[لازمی_استعمال]" په نښه شوي د فعالیتونو شمیر پراخ کړی ترڅو خبرداری صادر کړي که د بیرته ستنیدو ارزښت له پامه غورځول شوی وي، کوم چې د داسې غلطیو په پیژندلو کې مرسته کوي چې د یو فنکشن د انګیرنې له امله رامینځته کیږي چې د نوي ارزښت بیرته راستنیدو پرځای ارزښتونه بدل کړي.
  • د libgccjit په کارولو سره د کوډ تولید لپاره تجربوي پس منظر اضافه شوی.
  • د API یوه نوې برخه د ثبات کټګورۍ ته لیږدول شوې، په شمول د ځانګړتیاوو میتودونه او پلي کول ثبات شوي دي:
    • [ت; N]:: as_mut_slice
    • [ت; N]:: as_slice
    • ټولګه::TryReserveError
    • هش میپ:: try_reserve
    • HashSet:: try_reserve
    • توری:: try_reserve
    • توری:: try_reserve_exact
    • Vec:: try_reserve
    • Vec:: try_reserve_exact
    • VecDeque::try_reserve
    • VecDeque::try_reserve_exact
    • تکرار کوونکی::map_while
    • iter::MapWhile
    • proc_macro::is_available
    • کمانډ:: get_program
    • کمانډ::get_args
    • کمانډ::get_envs
    • کمانډ:: get_current_dir
    • CommandArgs
    • CommandEnvs
  • د "const" خاصیت، کوم چې دا مشخص کوي چې ایا دا د ثابتو پر ځای په کوم شرایطو کې کارول کیدی شي، په نښه کې کارول کیږي:: unreachable_unchecked.
  • د ملاتړ دریمه کچه د armv6k-nintendo-3ds، armv7-unknown-linux-uclibceabihf، m68k-unknown-linux-gnu، aarch64-kmc-solid_asp3، armv7a-kmc-solid_asp3-eabi-abi-او armv7-kmc-solid_asp3 لپاره پلي شوې. solid_aspXNUMX-eabihf پلیټ فارمونه. په دریمه کچه کې بنسټیز ملاتړ شامل دی، مګر د اتوماتیک ازموینې پرته، د رسمي ودانیو خپرول، یا دا ګوري چې آیا کوډ جوړیدلی شي.

سرچینه: opennet.ru

Add a comment