د Rust 1.59 عمومي هدف پروګرام کولو ژبې خپرول، چې د موزیلا پروژې لخوا تاسیس شوی، مګر اوس د خپلواک غیر انتفاعي موسسې Rust Foundation تر څارنې لاندې رامینځته شوی، خپور شوی. ژبه د حافظې خوندیتوب باندې تمرکز کوي او د لوړې دندې موازي کولو لپاره وسیلې چمتو کوي پداسې حال کې چې د کثافاتو راټولونکي او رن ټایم کارولو څخه مخنیوی کوي (د چلولو وخت د معیاري کتابتون لومړني پیل او ساتنې ته کم شوی).
د زنګ د حافظې اداره کولو میتودونه پرمخ وړونکي د خطا څخه ژغوري کله چې د پوائنټرونو مینځل کیږي او د هغو ستونزو په وړاندې ساتنه کوي چې د ټیټې کچې حافظې اداره کولو له امله رامینځته کیږي ، لکه د حافظې ساحې ته لاسرسی وروسته له دې چې خلاص شو ، د نول پوائنټرونو ته اشاره کول ، د بفر اوورونونه او نور. د کتابتونونو توزیع کولو، جوړونه چمتو کول او د انحصارونو اداره کول، پروژه د کارګو پیکج مدیر ته وده ورکوي. د crates.io ذخیره د کتابتونونو کوربه کولو لپاره ملاتړ کیږي.
د حافظې خوندیتوب د تالیف په وخت کې په زنګ کې د حوالې چیک کولو له لارې چمتو کیږي ، د شیانو ملکیت تعقیب ساتل ، د څیز ژوند وخت (سکوپس) ساتل ، او د کوډ اجرا کولو پرمهال د حافظې لاسرسي سموالي ارزول. زنګ د انټیجر د زیاتیدو پروړاندې محافظت هم چمتو کوي ، د کارونې دمخه د متغیر ارزښتونو لازمي ابتکار ته اړتیا لري ، په معیاري کتابتون کې خطاګانې په ښه توګه اداره کوي ، د ډیفالټ لخوا د بدلیدونکي حوالې او متغیر مفهوم پلي کوي ، د منطقي غلطیو کمولو لپاره قوي جامد ټایپ وړاندیز کوي.
اصلي نوښتونه:
- دا ممکنه ده چې د اسمبلۍ ژبې داخلونه وکاروئ ، کوم چې په غوښتنلیکونو کې غوښتنه لري چې په ټیټه کچه اجرا کولو کنټرول ته اړتیا لري یا د ځانګړي ماشین لارښوونو کارولو وړ وي. د اسمبلۍ داخلول د میکرو په کارولو سره اضافه شوي "asm!" او "global_asm!" د نومونې راجسترونو لپاره د سټرینګ فارمیټینګ ترکیب کارول لکه څنګه چې په Rust کې د سټینګ بدیلونو لپاره کارول کیږي. کمپیلر د x86، x86-64، ARM، AArch64 او RISC-V جوړښتونو لپاره د مجلس لارښوونې ملاتړ کوي. د ننوتلو مثال: د std::arch::asm؛ وکاروئ // د شفټونو په کارولو سره x د 6 سره ضرب کړئ او اضافه کړئ let mut x: u64 = 4؛ ناامنه {asm!( "mov {tmp}، {x}"، "shl {tmp}، 1"، "shl {x}، 2"، "add {x}، {tmp}، x = inout(reg) ) x, tmp = out(reg) _, ); } assert_eq!(x, 4*6);
- د تخریب شوي (موازي) دندې لپاره ملاتړ اضافه شوی، په کوم کې چې ډیری ځانګړتیاوې، ټوټې یا جوړښتونه د بیان په ښي خوا کې مشخص شوي. د مثال په توګه: اجازه راکړئ (a, b, c, d, e); (a, b) = (1, 2); [c, .., d, _] = [1, 2, 3, 4, 5]; جوړښت { e, .. } = جوړښت { e: 5, f: 3 }; assert_eq!([1, 2, 1, 4, 5], [a, b, c, d, e]);
- د کانسټ جنریک لپاره د ډیفالټ ارزښتونو مشخص کولو وړتیا چمتو شوې: struct ArrayStorage {arr: [T; ن]، } impl ArrayStorage {fn نوی(a: T, b: T) -> ArrayStorage { ArrayStorage { arr: [a, b], } }
- د کارګو کڅوړې مدیر په انحصار کې د غلط جوړښتونو کارولو په اړه خبرداری ورکوي چې په کمپیلر کې د غلطیو له امله پروسس شوي (د مثال په توګه ، د یوې غلطۍ له امله ، د بسته شوي جوړښتونو ساحې په خوندي بلاکونو کې پور اخیستلو ته اجازه ورکړل شوې وه). دا ډول جوړښتونه به نور د زنګ په راتلونکي نسخه کې ملاتړ نشي.
- کارګو او rustc د ډیبګ کولو ډیټا (strip = "debuginfo") او سمبولونو (strip = "symbols") څخه لیرې شوي د اجرا وړ فایلونو رامینځته کولو لپاره جوړ شوي وړتیا لري ، پرته له دې چې جلا یوټیلیټ ته زنګ ووهي. د پاکولو ترتیب په Cargo.toml کې د "سټریپ" پیرامیټر له لارې پلي کیږي: [profile.release] strip = "debuginfo"، "symbols"
- زیاتیدونکي تالیف د ډیفالټ لخوا غیر فعال دی. دلیل ویل کیږي چې په کمپیلر کې د بګ لپاره لنډمهاله کار دی چې د حادثو او د سیریل کولو غلطیو لامل کیږي. د بګ فکس لا دمخه چمتو شوی او په راتلونکي ریلیز کې به شامل شي. د زیاتیدونکي تالیف بیرته راستنیدو لپاره، تاسو کولی شئ د چاپیریال متغیر RUSTC_FORCE_INCREMENTAL=1 وکاروئ.
- د API یوه نوې برخه د ثبات کټګورۍ ته لیږدول شوې، په شمول د ځانګړتیاوو میتودونه او پلي کول ثبات شوي دي:
- std::thread::available_parallelism
- پایله:: کاپي شوې
- پایله::کلون شوی
- arch::asm!
- arch::global_asm!
- ops::ControlFlow::is_break
- ops::ControlFlow::is_continue
- د u8 لپاره هڅه وکړئ
- char::TryFromCharError (کلون، Debug، ښودنه، PartialEq، کاپي، Eq، تېروتنه)
- iter::zip
- NonZeroU8::is_power_of_two
- NonZeroU16::is_power_of_two
- NonZeroU32::is_power_of_two
- NonZeroU64::is_power_of_two
- NonZeroU128::is_power_of_two
- د ToLowercase جوړښت لپاره DoubleEndedIterator
- د ToUppercase جوړښت لپاره DoubleEndedIterator
- TryFrom<&mut [T]> د [T; ن]
- UnwindSafe د یو ځل جوړښت لپاره
- RefUnwindSafe د یو ځل لپاره
- armv8 neon ملاتړ فنکشن د aarch64 لپاره په کمپیلر کې جوړ شوی
- د "const" خاصیت، کوم چې د ثابتو پر ځای په هر شرایطو کې د کارولو امکان ټاکي، په دندو کې کارول کیږي:
- mem::MaybeUninit::as_ptr
- mem::MaybeUninit::assume_init
- mem::MaybeUninit::assume_init_ref
- ffi::CStr::from_bytes_with_nul_uncheck
سرچینه: opennet.ru
